An engineering org that runs on your laptop.
emorg turns a request into a ticket and drives it through PM, architect, developer, reviewer, and UAT agents, each in its own locked-down session. Work only counts as done when an independent review passes, UAT passes against the running app, and the merge lands verified on your base branch.
npm install -g emorg
em init
Failures loop back with the exact defect report. Merges that conflict or fail verification park honestly instead of lying.
Separation of duties
The reviewer cannot edit.
Its session has no write tools at all. It judges the diff and nothing else.
The developer cannot grade itself.
Verdicts come only from gate roles it never controls.
Gates cannot look outside.
Reviewer and UAT reads are mechanically denied outside the ticket's worktree. Enforced by the permission layer, not by prompt.
DONE cannot lie.
Parallel agents produce parallel branches, and merge-on-green corrupts them. emorg lands one ticket at a time through a serialized queue: sync the branch with the current base, re-run your verify command against the merged tree, squash, and advance the base fast-forward only. A conflict or a failed verification parks the ticket as NEEDS_INTEGRATION for a human. The base branch only ever moves to a commit that passed your tests as merged.
"verifyCommand": "npm test"
Runs on the subscriptions you already pay for.
Roles map to providers per your config: your Claude subscription for the builders, a cheap Gemini flash model for the PM and meetings, or any OpenAI-compatible runner. Every agent run records its real tokens and dollars, per role, per model, per provider, including failed and cancelled runs. em report shows where the money went.
role runs tokens usd
developer 49 936,614 75.26
uat 33 733,229 72.00
architect 40 364,478 64.56
reviewer 47 493,909 28.56
pm 64 3,543,927 12.63
total 233 6,072,157 253.01
It respects the machine it runs on.
- Bounded concurrency: agent slots cap simultaneous sessions and browsers.
- Idle watchdog: a stalled agent stream is cut after 15 silent minutes, recorded, and retried through the normal loop.
- Crash recovery: interrupted runs are swept on the next start, flagged in
em status, and resumable with one command. - Sleep assertions: the machine is held awake for exactly the lifetime of a run, on macOS, Linux, and Windows.
Quickstart
npm install -g emorg
cd your-project && em init
em new "Add a dark mode toggle to the settings page"
em run EM-1 # PM drafts criteria, stops for you
em approve EM-1 # design -> build -> review -> UAT -> land
Epics decompose big goals into dependency-ordered subtickets and build them in parallel. Custom gates are a markdown file away.