AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
Ninebrains: one Brain, many thinking arms. Open-source desktop workbench for parallel Claude Code and Codex agents with verification gates.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗One coding agent in one terminal is easy to follow. Four at once is not: they share a checkout, step on each other's files, and nobody checks their claims before you read them.
Ninebrains gives every agent a lane of its own, then puts something in charge of the work and something else in charge of the truth.
| What it does | |
|---|---|
| Lanes | Each agent gets its own git worktree and branch, terminal, editor and browser. Four to a tab, unlimited tabs. They cannot touch each other's files. |
| The Brain | Holds the plan as a graph of jobs with dependencies, plus a mailbox, and hands ready jobs to whichever lane is idle. Its status is one click away from Settings, and visible across every open project at once from Arena. |
| Gates | When a lane says it is done, a second, independent run has to prove it: tests, screenshots, a read-only reviewer, citation checks. No agent grades its own work. |
The name comes from the octopus: one central brain, plus a small brain in each of its eight arms.
Ninebrains is a fork of Emdash by General Action, so you also get its worktrees, terminals, Monaco editor, diffs, pull requests, issue integrations, MCP servers, skills and automations.
Status: v0.1.0 is out for macOS, Windows and Linux. It is an early release, and builds are not yet code-signed.
In this build:
claude -p and experimental codex exec runs, with per-run budgets, a
sandbox, a minimal environment and a STOP switch that ends every run in under 5 seconds.Planned: a per-lane account picker and usage meter, per-lane port leases, an overnight queue with a morning digest, a video pack, and signed builds (Apple Developer ID + notarization, Windows Authenticode) so Gatekeeper and SmartScreen stop warning.
The Brain
Type a brief into the Brain's terminal. It creates jobs, links their dependencies, and the app dispatches ready jobs to idle lanes.
Verification gates
Every attempt keeps its evidence: test output, screenshots at three widths, and the reviewer's verdict.
Planner
Draw the plan as jobs and dependency edges, then compile it into Brain jobs with Run plan.
Lane roles
Start a lane from a pack role. Its prompt, agent and model preferences fill in automatically.
Arena
Every open job across every project you have, with the Brain's dispatcher status and a jump to a blocked job's plan.
Settings → General
What the Brain does, its live status, and a switch to pause dispatch, without opening the drawer.
Installs Ninebrains, or updates an existing install. The script picks the file for your OS and
CPU, downloads it from GitHub Releases, and checks it against the release's SHA256SUMS before
installing anything. With the GitHub CLI signed in it also verifies the build attestation, and
installs nothing if that fails.
# macOS and Linux
curl --proto '=https' --tlsv1.2 -fsSL https://ninebrains.dev/install | sh
# Windows (PowerShell)
irm https://ninebrains.dev/install.ps1 | iex
Read the script first if you like: open the same URL in a browser. What the checksum check does and does not prove is in Verify a download.
Get the latest build from GitHub Releases:
| OS | File |
|---|---|
| macOS, Apple Silicon | Ninebrains-0.1.0-mac-arm64.dmg |
| macOS, Intel | Ninebrains-0.1.0-mac-x64.dmg |
| Windows | Ninebrains-0.1.0-win-x64.exe |
| Linux | Ninebrains-0.1.0-linux-x86_64.AppImage or …-linux-amd64.deb |
v0.1 builds are not code-signed. macOS Gatekeeper and Windows SmartScreen will warn you, and
that is the layer the one-line installer and the in-app updater work around, not through. Updates
installed from inside the app are signed with Ninebrains' own Ed25519 update key; check every
manual download against the release's SHA256SUMS file and build attestation before you open
it:
shasum -a 256 -c SHA256SUMS --ignore-missing
gh attestation verify Ninebrains-0.1.0-mac-arm64.dmg --repo Advance-Labs/ninebrains
docs/RELEASING.md covers Windows and Linux, and how to open an unsigned app.
Ninebrains updates itself: a packaged install checks GitHub Releases for a newer version (once
30 s after startup, then hourly) and shows a Download button at the bottom-right when one is
out. Nothing downloads until you click it, each candidate is accepted only after its SHA256SUMS.json
verifies against an Ed25519 key baked into the app, and the new build installs on the launch that
follows your Restart now choice (in place on macOS/Linux; the new installer at quit on Windows).
Your projects, settings and history stay where they are.
The one-line installer above is still there for manual installs, if you prefer it:
.deb installs: update with curl ... | sh -s -- --deb (runs sudo apt install). The
plain line installs the AppImage into ~/.local/bin instead.-Force; the Linux
AppImage is swapped in place, so restart it afterwards.-Force.sh -s -- (for example --require-attestation), or on Windows use
& ([scriptblock]::Create((irm https://ninebrains.dev/install.ps1))) -RequireAttestation,
because irm ... | iex takes no arguments. All options:
Verify a download → Installer options.Canary builds update from canary releases only (Ninebrains-Canary-* prereleases), and an update
never downgrades you: after a bad release, install the next good one.
You need Git and any recent pnpm. The repo pins pnpm 10.28.2 and Node 24.14.0, and pnpm fetches
both itself.
git clone https://github.com/Advance-Labs/ninebrains.git
cd ninebrains
pnpm install
pnpm run dev
To build the app instead of running the dev server, run pnpm --dir apps/emdash-desktop build.
docs/FORK.md lists the tested toolchain and baseline.
You also need claude (Claude Code) and/or codex installed and logged in. Ninebrains starts
them; it never logs in for you.
lanes/<id> branch. Add up to four per tab; use + for another tab.pnpm test) and click Save test
command.The getting-started guide covers each step in detail.
| Term | Meaning |
|---|---|
| Lane | One agent (Claude Code or Codex) in its own worktree, with a terminal, editor and browser |
| Brain | The coordinator: a graph of jobs, a mailbox, and the dispatcher that pairs ready jobs with idle lanes |
| Job | One unit of work for one lane. A job is ready when every job it depends on is done |
| Gate | An independent check that must pass before a job counts as done: tests, screenshot, reviewer, security review, fact-check |
| Pack | A per-project bundle of lane roles, skills, MCP servers and default gates |
| Arena | Every provisioned task across every open project, in one place, including the Brain's dispatcher status and open jobs |
These are layers, not rivals. Ninebrains runs Claude Code, and it is Emdash underneath.
| Claude Code on its own | Emdash | Ninebrains | |
|---|---|---|---|
| The agent itself | Yes | Launches it | Launches it, unchanged |
| Other agent CLIs | — | Codex, OpenCode, Amp and others | Lanes: Claude Code and Codex. Other agents still work in Emdash tasks |
| Several agents on screen at once | One terminal each | Split panes within one task | 2×2 grid of lanes across worktrees, unlimited tabs |
| Shared plan with dependencies | — | — | Brain job graph and planner canvas |
| Independent check before "done" | — | — | Verification gates, three attempts, then blocked |
| Domain bundles | Your own skills and MCP config | Skills and MCP catalog | Packs: coding, SEO, research |
| Scheduled or unattended work | claude -p in your own scripts | Cron automations | Budgeted runs with a STOP switch |
| Telemetry | Anthropic's own settings apply | PostHog analytics | Off, no endpoint |
| Remote machines over SSH | — | Yes | Inherited for tasks; lanes are local-only |
claude and codex CLIs. It
never reads, copies or stores their credentials, and never runs a login for you.127.0.0.1 only and rejects web pages. Reviewers run in a disposable, read-only checkout, and
unattended runs get a sandbox, a minimal environment and never a permission-bypass flag.AEO_MCP_BASE_URL and nothing goes to Advance Labs.
See Packs.Read the security overview and the full threat model. Report vulnerabilities to [email protected], as described in docs/SECURITY.md.
No. It launches your own claude and codex CLIs and leaves them alone. Ninebrains is the room
they work in: separate worktrees, a shared plan, and an independent check before work counts.
No. Ninebrains starts the CLIs you are already logged in to, so your subscription login works as it does in your terminal. You can point a lane at your own API key or a model server instead, in Settings → Models, and keys are stored in your OS keychain.
Ninebrains is free and open source. Usage is whatever your provider plan or key charges. The SEO pack's hosted endpoint is free to use today; that may change if AEO Toolkit billing is switched on, and you can self-host it.
Four lanes per tab, and as many tabs as you want. The real ceiling is your machine and your provider's rate limits, not the app.
Worktrees and panes are the easy half, and Ninebrains does that for you. The other half is a plan that knows which job depends on which, a mailbox so lanes can talk, and a gate that makes a second agent prove the work before you read it.
That is the point of gates. The reviewer gate runs a fresh agent with read-only tools in a disposable checkout of the result, and it can be a different provider from the one that wrote the code. A failed gate sends feedback back to the lane, up to three attempts, then blocks the job.
Your agents talk to Anthropic or OpenAI exactly as they would in your terminal. The app calls GitHub for its GitHub integration and skills catalog. Pages you open in a lane browser, and URLs the fact-check gate verifies, are fetched from the web. Packs you enable talk to their servers: the SEO pack to Advance Labs' endpoint (unless you self-host it), and the coding pack's GitHub server to GitHub. There is no telemetry.
Builds come from the same CI matrix for macOS, Windows and Linux. Ninebrains is developed and tested on macOS first. On Windows and Linux, the tests gate has no OS sandbox (it relies on a scrubbed environment, timeouts and process kills), and Windows paths are not yet tested.
Yes, with one config directory per account. See Accounts.
The user guide lives in docs/guide/ and is published at
ninebrains.dev/docs.
See CONTRIBUTING.md and architecture. Please read the Code of Conduct.
Ninebrains is a fork of Emdash by General Action, Inc., used under the Apache License 2.0. Emdash supplies the worktrees, terminals, editor, browser, MCP, skills, automations and packaging that Ninebrains builds on. Ninebrains is not affiliated with or endorsed by General Action. Every change to an inherited file is listed in docs/UPSTREAM-PATCHES.md.
The SEO pack uses Advance Labs' AEO Toolkit (Apache-2.0).
Apache-2.0. See LICENSE.md and NOTICE. Copyright 2026 Advance Labs Inc. Portions copyright General Action, Inc.