This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryPlan steps can specify a per-step cli: field, overriding role‑level or global CLI settings.
Full changelog
v1.9.2 — per-step CLI override, six new adapters, leaf-node orchestrator delegation
The cooperating-CLI-adapter count goes 31 → 37, plans can mix CLIs between stages, and there's a separate new "Bernstein orchestrates the orchestrators" delegation track.
Per-step cli: in plan files (#965, closes #964)
Plan steps now take a cli: field directly. No more inventing role-shaped wrappers in bernstein.yaml to switch CLIs between stages:
stages:
- name: red-green-refactor
steps:
- { title: Red, role: backend, cli: opencode }
- { title: Green, role: backend, cli: opencode }
- { title: Refactor, role: backend, cli: opencode }
- name: review
steps:
- { title: Code review, role: reviewer, cli: claude }
Precedence (highest wins): per-step cli: → role_model_policy.<role>.provider → top-level cli: → default adapter. Requested by @smp4 in discussion #962.
Six new cooperating CLI agent adapters (#968)
openhands, open_interpreter, gptme, plandex, aichat, letta_code. Per-adapter install commands, env vars, and CLI invocation flags are documented in docs/adapters/ADAPTER_GUIDE.md. Each adapter mirrors copilot.py (~120 LOC) with three tests apiece.
"Bernstein orchestrates the orchestrators" — leaf-node delegation adapters (#966)
Two adapters that wrap other CLI orchestrators as if each were a single Bernstein agent:
| Adapter | Wrapped tool |
| --- | --- |
| composio | Composio Agent Orchestrator (@aoagents/ao) |
| ralphex | umputun/ralphex |
Honest framing: leaf-node delegation, not deep meta-orchestration — Bernstein only sees the wrapped tool's exit code, not its internal sub-agents. Useful when you have an existing workflow built on those tools and want to drop it into one step of a larger Bernstein plan. The README has a new Orchestrator delegation (leaf-node) subsection separating these from the cooperating-CLI count; full write-up on the blog.
Three new comparison pages (#967)
- vs. Claude Squad — Go TUI tmux session manager.
- vs. claude-flow / Ruflo — Claude Code plugin pack with swarm hooks.
- vs. AgentsMesh — self-hosted agent workforce platform.
bernstein-vs-crystal.md also refreshed to describe the actual stravu/crystal product (Electron desktop, deprecated Feb 2026).
Quieter releases (#969)
npm publish failures no longer mark the release deployment as failed. PyPI / GitHub Release / GHCR ship independently while the npm wrapper waits on NPM_TOKEN permissions post-org-transfer.
Bug fixes
- catalog: split exact-role threshold from fuzzy threshold (#961). Both were sharing a strict 3-point cutoff that rejected legitimate role matches once an agent had ≥1 cap-word overlap. Exact-role now requires only 1; fuzzy stays at 3.
- tests: unbroke two main-CI flakes (#970) —
test_quality_endpoint_with_iso8601_timestampshad hardcoded timestamps that aged past the 30-day window;test_heartbeat_idle_threshold_lower_in_evolve_modeneeded the same liveness-extension margin its sibling test got in b5da11a6.
Install / upgrade
pipx install --upgrade bernstein
# or
pip install --upgrade bernstein
Full changelog: https://github.com/sipyourdrink-ltd/bernstein/compare/v1.9.1...v1.9.2
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About chernistry/bernstein
Deterministic multi-agent orchestrator for 18 CLI coding agents (Claude Code, Codex, Cursor, Aider, Gemini CLI, OpenAI Agents SDK, and more). MCP server mode (stdio + HTTP/SSE) exposes the orchestrator to any MCP client. Git worktree isolation per agent, HMAC-chained audit trail, cost-aware model routing via contextual bandit. ~11K monthly PyPI downloads, Apache 2.0.
Related context
Related tools
Beta — feedback welcome: [email protected]