Get in touch

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.

Serein acme/web-app · Tonight 1 plan waiting for you
2
Ready for review
1
Waiting for you
1
Running
€4.88of €30.00
Spent tonight
  1. Add CSV export to reports

    Hootbit · A ticket

    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
  2. Replace moment.js with date-fns

    Nestbit · A schedule · 01:00

    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
  3. Upgrade eslint to version 9

    Nestbit · A schedule · 04:00

    Started on schedule at 04:00. Running your checks now.
    sereinrunning €1.10
  4. Invoice number on receipts

    Hootbit · A chat message

    Asked in chat at 06:12. The plan has been waiting for your signature since 06:18.
    sereinawaiting human ≈ €0.36
  5. Add a VAT column to invoices

    Hootbit · A ticket

    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.

Touches the receipt email onlyNo databaseNo payments 1 file · ~4 min Estimated cost €0.36 · cap €2.00
Nothing runs until one of these is pressed.

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.

Today

8 working days to a pull request

  1. Tue 10:14Asked in chat. “Noted.”
  2. WedInto the backlog
  3. ThuRefinement
  4. MonSprint planning
  5. FriFixed in 7 minutes
  6. MonReview
  7. TueIn production
With Serein

17 minutes to a pull request

Tuesday, 10:14 to 10:31
  1. 10:14 Asked in chat
  2. 10:15 Plan ready, read-only
  3. 10:19 Signed by chloe
  4. 10:27 Typecheck and 214 tests passed
  5. 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.

Serein acme/web-app · Add CSV export to reports Ready for review

Budget €2.14 of €8.00

Retries 1 of 3

  1. Plan Read-only done
  2. Approve By policy done
  3. Build On a branch done
  4. Normalise Format, lint done
  5. Verify Your checks passed
  6. Pull request For review passed
Step 1 of 6 · Read-only

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 button
  • src/reports/exportCsv.tsnew: turn rows into CSV
  • src/lib/download.tsreuse the download helper
  • src/reports/ReportView.tsxpass the filtered rows
Hootbit will

Add an Export CSV button to the reports toolbar that downloads the rows on screen, with the filters already applied.

Touches reports onlyNo databaseNo payments 4 files · ~12 min
Estimated cost €1.80 · cap €8.00
Step 2 of 6 · By policy

The plan waits for a person, if the agent’s policy asks for one. Signing locks the plan.

Add an Export CSV button to the reports toolbar that downloads the rows on screen, with the filters already applied.

Signed by chloe · 22:20 · plan 7c2e05A changed plan voids this signature.

Step 3 of 6 · On a branch

Hootbit writes the change on its own branch, from the signed plan and nothing else.

src/reports/ReportToolbar.tsxserein/csv-export <ReportActions> <Button onClick={() => exportCsv(filteredRows)}> Export CSV </Button></ReportActions> 3 of 4 files written
Step 4 of 6 · Format, lint

Formatting and lint run as fixed steps. If a tool can do it, a model does not.

$ prettier --write4 files formatted$ eslint --fix0 problems
Step 5 of 6 · Your checks

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.

$ npm run typecheck✗ exportCsv.ts:14 Cannot find name 'escapeCsv'↺ retry 1 of 3 · error returned to Hootbit$ npm run typecheck && npm test✓ tsc ok · 214 tests passed
Step 6 of 6 · For review

A pull request opens on the branch. A developer reviews it and owns the merge.

Checks passed #4187 · serein/csv-export

Add CSV export to reports

src/reports/ReportToolbar.tsx + <Button onClick={() => exportCsv(filteredRows)}>+ Export CSV
Planned by Hootbit · approved by chloe (PM) · verified by 214 tests €2.14 of €8.00

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.

Hootbit Features & fixes sereinverified

Eager and exact. Writes the change you asked for, and nothing else.

chloe (PM) · in a ticket

“Let people export their report as a CSV, using the filters they’ve already selected.”

Planned · signed by chloe · built · verified

src/reports/ReportToolbar.tsx <ReportActions> Added: + <Button onClick={() => exportCsv(filteredRows)}> Added: + Export CSV Added: + </Button> </ReportActions>

PR #4187 · 214 tests passed4 files · +46 −3

Nestbit Migrations & chores sereinverified

Patient and thorough. Keeps the nest in order, and moves it one file at a time.

A schedule · every night at 01:00

“Replace moment.js with date-fns across src/. Leave anything uncertain for us.”

A codemod first · then Nestbit · then your tests

File ledger · 120 files
Left for a human
  • src/legacy/timezone.tsCustom offset maths
  • src/reports/fiscalWeek.tsWeek start depends on locale
  • src/vendor/chartAxis.tsReaches into moment internals

PR #4190 · 1,904 tests passed

Also on the night shift
  • 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

  1. 01 · Asksjo Support

    In chat · 10:14

    Customers say onboarding promises a 30-day trial. It’s 14.

    What jo sees next
    1. 10:15 Hootbit wrote a plan
    2. 10:19 chloe signed it
    3. 10:31 A pull request is ready for review

    No GitHub account. No editor. No diff.

  2. 02 · Signschloe Product

    Hootbit will

    Reword the onboarding screen so it says the trial lasts 14 days, not 30.

    Onboarding copy onlyNo databaseNo payments

    Signed by chloe · 10:19plan a41f9c

    A changed plan voids the signature.

  3. 03 · Payslee Head of Engineering

    This run€0.38 of €2.00

    This month, all agents€212 of €300

    Audit log
    1. 10:14jo asked
    2. 10:15Hootbit planned · €0.02
    3. 10:19chloe signed a41f9c
    4. 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.

Example configuration.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
              
            
  1. scope: src/** Line 4

    Only these files

    • src/**Write
    • tests/Read
    • .github/workflows/Refused
    • mainRefused

    Work lands on its own branch, inside scope. CI config and the default branch are refused.

  2. verify: npm run typecheck && npm test Line 7

    A check it cannot skip

    $ serein run tidy-imports ✗ Refused: no verify command

    The one rule: an agent without a verify command never starts.

  3. budget: 2.00 EUR Line 8

    A hard limit

    €1.46cap €2.00

    Stops here

    Metered while it runs, not after. At the cap, the runner stops it.

  4. approval: none Line 9

    Your policy

    • none Routine chores selected
    • anyone Small requests
    • developer Sensitive code

    Set per agent. Changing a signed plan voids the signature.

GitHub App permissions

Asks for
  • contents: write
  • pull requests: write
  • issues: read
  • checks: write
  • metadata: read
Never asks for
  • 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.