bernstein_runLABSCO SUMMARY
Replay yesterday's plan and get yesterday's task graph.
Keeping the LLM out of the coordination loop is what buys that. The consequence you can act on is the journal: when a run diverges, it names the exact step, instead of leaving you to re-run it and hope.
What it is
A deterministic orchestrator for CLI coding agents — Claude Code, Codex, Gemini CLI and 40+ more — exposed as MCP tools so any MCP client can drive multi-agent work. The scheduling itself is plain Python with no LLM in the coordination loop, so a run reproduces end to end.
What you get
- Three tool tiers, cumulative, chosen with
--mcp-tierorBERNSTEIN_MCP_TOOL_TIER, because every advertised tool costs context on every turn whether or not it is called core—bernstein_run,bernstein_statusandbernstein_run_status: start a run and observe it, at the smallest context coststandard, the default — addsbernstein_approve,bernstein_complete,bernstein_cancel,bernstein_claim,bernstein_post_message,bernstein_post_artifact,bernstein_task_capsule,bernstein_shutdown_orchestratorandload_skillall— adds the scenario bridgebernstein_scenarioandbernstein_verify_lineage- Isolation by construction: each coding task gets its own git worktree behind merge gates, artifact-mode tasks get a working directory of their own, and the only shared state is a task backlog claimed atomically
- Checkability after the fact: a replay journal of every run, an always-on lineage spine, and an opt-in HMAC-chained audit log, so non-determinism surfaces as a hash mismatch at the exact step rather than as a flaky re-run
- One portable, Ed25519-signed run receipt binding the journal head and the lineage-spine head, verifiable offline from the file alone
- Two operator surfaces reading the same task API — a terminal dashboard and a browser dashboard — so neither lags the other
bernstein mcp toolsto audit exactly what each tier would advertise before you change the setting
Requirements
Python 3.12+. Install with uv tool install bernstein or pipx install bernstein, then bernstein init, bernstein doctor — which checks that a CLI agent is installed and authenticated — and you are running. pipx, pip, brew, dnf, npm and Docker are all covered, and an air-gapped wheelhouse install profile exists. An unknown tier value is rejected with an error rather than silently falling back, so a typo cannot quietly change the exposed surface. The project is described as beta and solo-maintained: minor versions may change interfaces, so pin the version for anything you depend on. Apache 2.0.
Setup effort
Follow the published steps — uv tool install bernstein
USE CASES
Running several agents on one goal
Tasks are decomposed once, then each coding task runs in its own git worktree behind a merge gate, so agents share no mutable workspace and main stays clean.
Keeping the tool surface small on a metered client
Select the core tier and only the start-and-observe tools are advertised; audit what each tier would expose before switching.
Approving work before it merges
The standard tier adds explicit approval, completion and cancellation, so a run can be gated on a human decision rather than merging on its own verification.
Running a pull-worker against the backlog
Claim a task atomically, post messages and artifacts as it progresses, and complete it — the shared backlog is the only state agents contend over.
Proving a run happened the way it says
Verify the lineage spine, or take the signed run receipt and check it offline with the public key — a tampered copy exits naming the first divergent step.
Handing a task its context deterministically
The signed task capsule carries the context for a task, so what an agent received is recorded rather than reconstructed.
14 tools
Listed in project docs. Your client may show a different list.
bernstein_statusbernstein_run_statusbernstein_approvebernstein_completebernstein_cancelbernstein_claimbernstein_post_messagebernstein_post_artifactbernstein_task_capsulebernstein_shutdown_orchestratorload_skillbernstein_scenariobernstein_verify_lineageBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
Python 3.12+
INSTALLATION
Connect your client
Server setup
uv tool install bernstein
bernstein init
bernstein doctorbernstein doctor checks that a CLI coding agent (Claude Code, Codex, Gemini CLI or another) is installed and authenticated. pipx install bernstein works instead of uv.
Add Bernstein to your MCP client as a local stdio server whose command is bernstein mcp, in the format your client uses for local servers — the project does not publish a client configuration file. Add --mcp-tier core, standard or all (or set BERNSTEIN_MCP_TOOL_TIER) to choose how many tools it advertises; standard is the default.