Jarvis for Projects
A local dashboard where AI agents build, review and merge features in a real Git repo.
A web dashboard that runs on my own machine: describe a feature in plain words, and a team of AI coding agents takes it from there. One agent implements it on its own branch, another reviews the branch and decides whether it merges. Each agent turn is a separate opencode process, branches, commits and merges are real Git operations, and progress streams live to the browser.
- Status
- A working prototype, built in July 2026: the whole loop — assign, implement, review, merge — has run end to end against a sandbox repository. Agents run with every tool permission approved, so it is only ever pointed at a disposable repository.

Worth knowing§
- Up to 3 implementer agents run at once for each user, each on its own branch and worktree.
- 43 unit tests cover the agents' decision parsing, the branch graph's layout, the token checks and the parsing of opencode's event stream.
How it works§
- 01
The reviewer decides but never merges. Its prompt forbids merging, pushing and checking out main, and all it can return is a verdict — approved, changes requested or conflict — as JSON; the orchestrator's own code runs the merge.
- 02
Agents never call each other. Every handoff goes through one orchestrator, which reads an agent's decision and starts the next step: the merge, the implementer resumed with the review's feedback, or a conflict-resolving agent. The routing stays in code you can read.
- 03
Each implementer gets its own Git worktree on a fresh branch from main, outside the project's folder, and its prompt keeps every edit inside it, so several can work at once without touching each other or main.
- 04
Each agent turn is a short-lived `opencode run` process rather than a long-running server, which clashed with other opencode sessions on the same machine. Its JSON events go onto an internal bus and reach the browser as server-sent events.
- 05
An agent reports its finished branch by running a command, so a master token would end up in the model's context and logs. Instead each session gets its own HMAC token, derived from the session id, that can call back for that session only.
Built with§
- Next.js 14, also used in Time Manager, Squash Review, Ocr-kb-matcher (KIP), and Meridian
- React 18, also used in Meridian and Ship It Tracker
- TypeScript, also used in Sisyphus, Time Manager, Squash Review, Ocr-kb-matcher (KIP), Meridian, and Ship It Tracker
- SQLite (WAL), also used in Datacenter Tracker, Time Manager, agento, and Ocr-kb-matcher (KIP)
- opencode CLI
- Tailwind CSS v4, also used in Time Manager, Meridian, and Ship It Tracker
- Zod, also used in Time Manager
- Vitest, also used in Time Manager
