Coding agents. On your terms.
In development · pre-alpha
Your repo works the night shift.
Serein puts coding agents to work on features, fixes, refactors and migrations, inside the scope and budget you set. Nothing ships until your tests say so.
- 2
- Ready for review
- 1
- Waiting for you
- 1
- Running
- €4.88of €30.00
- Spent tonight
-
Add CSV export to reports
Planned at 22:02, signed by chloe at 22:20, one failed check retried, 214 tests passed and pull request #4187 opened at 23:28.sereinverified €2.14 -
Replace moment.js with date-fns
Started on schedule at 01:00 with no sign-off needed. 111 files migrated and verified, 9 left for a human. Pull request #4190 opened at 03:46.sereinverified €1.62 -
Upgrade eslint to version 9
Started on schedule at 04:00. Running your checks now.sereinrunning €1.10 -
Invoice number on receipts
Asked in chat at 06:12. The plan has been waiting for your signature since 06:18.sereinawaiting human ≈ €0.36 -
Add a VAT column to invoices
Queued behind the eslint upgrade, which holds the same files.sereinqueued —
- Agent working
- Waited for a person
- Waiting for a person
- Check failed, retried
- Checks passed
- Running now
- Queued
- Pull request opened
Awaiting your approval Asked by jo (Support) in chat · 06:12
Invoice number on receipts
Hootbit willAdd the invoice number under the total on receipt emails, in one template file.
Illustrative dashboard. Serein is pre-alpha: every run, time and cost on this page is sample data.
Why this exists
Seven minutes of work. Eight days of waiting.
A four-word fix to an onboarding screen, asked for on a Tuesday morning. Nobody did anything wrong.
8 working days to a pull request
- Tue 10:14Asked in chat. “Noted.”
- WedInto the backlog
- ThuRefinement
- MonSprint planning
- FriFixed in 7 minutes
- MonReview
- TueIn production
17 minutes to a pull request
- 10:14 Asked in chat
- 10:15 Plan ready, read-only
- 10:19 Signed by chloe
- 10:27 Typecheck and 214 tests passed
- 10:31 Pull request #4182
Review and merge stay with your team.
The scene is from the Serein specification. Times are illustrative.
01 · How a run works
The work moves. You stay in control.
Every run takes the same six steps. You can see which one it is on, and why.
Budget €2.14 of €8.00
Retries 1 of 3
- Plan Read-only done
- Approve By policy done
- Build On a branch done
- Normalise Format, lint done
- Verify Your checks passed
- Pull request For review passed
Hootbit reads the report view and its data flow without changing a file, then writes down what it will do.
For developers
Files, each with a reason
src/reports/ReportToolbar.tsxadd the buttonsrc/reports/exportCsv.tsnew: turn rows into CSVsrc/lib/download.tsreuse the download helpersrc/reports/ReportView.tsxpass the filtered rows
Add an Export CSV button to the reports toolbar that downloads the rows on screen, with the filters already applied.
The plan waits for a person, if the agent’s policy asks for one. Signing locks the plan.
Awaiting your approval
Add an Export CSV button to the reports toolbar that downloads the rows on screen, with the filters already applied.
In the product, a rejection needs a reason, and Hootbit reads it before it plans again. This example carries on.
Signed by chloe · 22:20 · plan 7c2e05A changed plan voids this signature.
Hootbit writes the change on its own branch, from the signed plan and nothing else.
Formatting and lint run as fixed steps. If a tool can do it, a model does not.
Your typecheck and tests decide. The first try failed, so the error went back to Hootbit, which fixed the code, not the tests.
In plain words: a helper was used before it was imported. Hootbit added the import. The tests did not change.
A pull request opens on the branch. A developer reviews it and owns the merge.
Add CSV export to reports
An illustrative run, not a recording. The cursor is a simulated reviewer; press Approve yourself to sign the plan instead.
Read-only until signed.
The plan phase cannot write. A changed plan voids its signature.
A check it cannot talk past.
Your typecheck and tests decide whether a pull request opens.
Three retries, then a person.
A failed check sends the error back, at most three times.
A budget that cannot be blown.
The runner stops at the cap. Estimate before, real cost after.
02 · The work it handles
Build what’s next. Evolve what’s already there.
Hootbit answers when you ask: features and fixes. Nestbit keeps the nest in order: migrations, upgrades and the chores nobody schedules.
Eager and exact. Writes the change you asked for, and nothing else.
“Let people export their report as a CSV, using the filters they’ve already selected.”
Planned · signed by chloe · built · verified
PR #4187 · 214 tests passed4 files · +46 −3
Patient and thorough. Keeps the nest in order, and moves it one file at a time.
“Replace moment.js with date-fns across src/. Leave anything uncertain for us.”
A codemod first · then Nestbit · then your tests
src/legacy/timezone.tsCustom offset mathssrc/reports/fiscalWeek.tsWeek start depends on localesrc/vendor/chartAxis.tsReaches into moment internals
PR #4190 · 1,904 tests passed
- A wrong label on a screen
- A missing form field
- One more column in a report
- A feature flag to flip
- JavaScript to TypeScript
- A deprecated library, replaced
- A major framework upgrade
03 · Who decides
Permission belongs to the team.
The person who asks, the person who signs and the account that pays can be three different people. The one who asks never reads a diff.
Run #4182 · one plan · one signature · one budget
-
01 · Asksjo Support
In chat · 10:14Customers say onboarding promises a 30-day trial. It’s 14.
What jo sees next- 10:15 Hootbit wrote a plan
- 10:19 chloe signed it
- 10:31 A pull request is ready for review
No GitHub account. No editor. No diff.
-
02 · Signschloe Product
Hootbit willReword the onboarding screen so it says the trial lasts 14 days, not 30.
Onboarding copy onlyNo databaseNo paymentsSigned by chloe · 10:19
plan a41f9cA changed plan voids the signature.
-
03 · Payslee Head of Engineering
This run€0.38 of €2.00
Audit logThis month, all agents€212 of €300
- 10:14jo asked
- 10:15Hootbit planned · €0.02
- 10:19chloe signed a41f9c
- 10:31PR #4182 opened · €0.38
Who asked, who signed, what ran, what it cost.
A developer still reviews the pull request and owns the merge.
04 · Your repository, your rules
Give it a job. Set the boundaries.
An agent is a config file in your repository. Each numbered line is a rule the runner enforces.
.serein/agents/fix-sentry-issues.yml
trigger:
on_issue:
source: sentry
scope: src/**
prompt: ./prompts/fix-from-stacktrace.md
tools: [read, grep, edit]
verify: npm run typecheck && npm test
budget: 2.00 EUR
approval: none
-
scope: src/**Line 4Only these files
src/**Writetests/Read.github/workflows/RefusedmainRefused
Work lands on its own branch, inside scope. CI config and the default branch are refused.
-
verify: npm run typecheck && npm testLine 7A check it cannot skip
$ serein run tidy-imports ✗ Refused: no verify commandThe one rule: an agent without a verify command never starts.
-
budget: 2.00 EURLine 8A hard limit
€1.46cap €2.00
Stops here
Metered while it runs, not after. At the cap, the runner stops it.
-
approval: noneLine 9Your policy
-
noneRoutine chores selected -
anyoneSmall requests -
developerSensitive code
Set per agent. Changing a signed plan voids the signature.
-
GitHub App permissions
- contents: write
- pull requests: write
- issues: read
- checks: write
- metadata: read
- actions
- secrets
- administration
- workflows
Configuration format and permissions shown from the specification; Serein is still in development.
05 · A few things worth knowing
Before the first shift.
Can I use Serein today?
Not yet. Serein is pre-alpha: the architecture is specified and implementation is underway. The examples on this page illustrate the intended behavior. There is no public beta or installation available yet.
Is this another coding editor?
Serein runs outside your editor and outside your CI, on its own backend as a GitHub App. Work can start from a ticket, chat, webhook, schedule or the dashboard. You do not need to keep an editor session open.
Does every run need my approval?
Every run starts with a read-only plan. Whether a human must sign it depends on the agent’s approval policy. You can require sign-off for sensitive work and allow a routine chore to proceed without it. A signed plan cannot change without invalidating that approval.
What happens when the agent gets it wrong?
A failing verification command blocks the pull request. The agent can retry with the error, up to three times and within its budget. It fixes the implementation rather than rewriting the tests to pass. Passing tests is still not a substitute for your code review.
What will be open source?
The Serein source code is licensed under MIT. The name, logo and brand assets have a separate licence. The repository is not public yet; we will link it here when it is available.
Help shape Serein
What would you build with Serein?
We’re building Serein for real engineering work. Tell us about your codebase, your workflow and what you’d want an agent to take on.
Get in touch Pre-alpha. No public release yet.