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.
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.
- Three tool tiers, cumulative, chosen with `--mcp-tier` or `BERNSTEIN_MCP_TOOL_TIER`, because every advertised tool costs context on every turn whether or not it is called
- `core` — `bernstein_run`, `bernstein_status` and `bernstein_run_status`: start a run and observe it, at the smallest context cost
- `standard`, the default — adds `bernstein_approve`, `bernstein_complete`, `bernstein_cancel`, `bernstein_claim`, `bernstein_post_message`, `bernstein_post_artifact`, `bernstein_task_capsule`, `bernstein_shutdown_orchestrator` and `load_skill`
- `all` — adds the scenario bridge `bernstein_scenario` and `bernstein_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 tools` to audit exactly what each tier would advertise before you change the setting
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.
One command plus a key — uv tool install bernstein, then supply credentials
