Integrations index¶
Bernstein ships ready-made adapters for the CLI coding agents under src/bernstein/adapters/. This page lists every wired-in integration with a one-line use case so you do not have to grep the source tree.
The same data is available from the CLI:
bernstein integrations list # one line per adapter
bernstein integrations list --details # per-adapter block with config knob
bernstein integrations list --installed # only adapters whose binary is on $PATH
bernstein integrations list --json # stable JSON for CI dashboards
Per-adapter copy lives in src/bernstein/adapters/use_cases.py. That module is the single source of truth. This page links to it so we do not maintain two copies of the same list.
Selecting an adapter¶
Set the active adapter through the cli: knob in bernstein.yaml:
Use bernstein adapters check <name> to verify conformance for a single adapter, and bernstein adapters list for a richer view that includes source paths and conformance verdicts.
Categories¶
The current registry covers four broad categories. Names below match the registry keys you pass via cli:.
Mainstream coding agents¶
These are the most exercised adapters in the test matrix.
claude- Anthropic Claude Code CLI.codex- OpenAI Codex CLI.cursor- Cursor Agent CLI.aider- Aider pair-programming CLI.gemini- Google Gemini CLI (enterprise / API-key lane).agy- Antigravity CLI, successor for the non-enterprise Gemini path (seeagy.mdfor the lane split).copilot- GitHub Copilot CLI.goose- Block Goose.muse- Muse Code, Meta's terminal coding agent, driven headless viamuse exec(seemuse.md).
Local and offline¶
For air-gap or BYO-model scenarios.
ollama- drives Aider against an Ollama or OpenAI-compatible server.gptme- local-first coding agent with shell tools.mock- test stub, no API keys or network.generic- wrap any coding agent CLI by command string.
Specialised adapters¶
iac- infrastructure-as-code (Terraform / Pulumi) with plan-before-apply.clm- sovereign LLM gateway over mTLS for regulated deployments.openai_agents- in-process OpenAI Agents SDK v2 (requires the[openai]extra).computer_use- fronts a third-party autonomous browser / computer-use agent; each action is anchored into a signed, replayable lineage chain and each task runs in an isolated browser profile (seecomputer_use.md).pydantic_ai- Pydantic AIclaiin one-shot mode. Built from a declarative capability profile rather than a hand-written module (seecapability_profiles.md).
Other supported CLIs¶
See bernstein integrations list for the full enumerated set. This page lists categories rather than re-listing each entry so the index does not drift.
Evaluated, not wrapped¶
Agents checked for an adapter and deliberately left without one:
- OpenWork (different-ai/openwork) - a desktop app and server over the same
opencode serveengine. Use theopencodeadapter: it already passesOPENCODE_CONFIGthrough, so a config file declaring an@ai-sdk/openai-compatibleprovider (options.baseURL,options.apiKey) routes the model through a gateway, with no second daemon. - Rowboat (rowboatlabs/rowboat) - now a desktop assistant with no one-shot command, only a server built from source and driven over RPC and WebSocket. Its code edits are delegated to a bundled Claude Code or Codex with their own credentials, bypassing any configured model endpoint. Revisit if a headless CLI ships.
Adding a new adapter¶
Most CLI agents fit the declarative path: declare a capability profile and the factory builds the adapter, with no new module to write. See capability_profiles.md for the schema and the gates a profile must clear.
- Add an
AdapterCapabilityProfileto_PROFILE_LISTinsrc/bernstein/adapters/capability_profile.py. - Add the contract YAML under
tests/contract/contracts/<name>.yamlpinning the always-passed CLI surface. - Declare the adapter's resume / dangerous-mode / event-channel strategy in
STRATEGY_MATRIX(see capability_contract.md); the conformance harness fails when a registered adapter has no declaration. - Add an entry to
src/bernstein/adapters/use_cases.pyso the new adapter shows up inbernstein integrations listwith a meaningful headline.
An agent whose invocation does not fit the always-passed-surface shape (conditional flags, a non-subprocess SDK, a bespoke event channel) still gets a hand-written module instead:
- Add a
<name>.pymodule undersrc/bernstein/adapters/implementingCLIAdapter. - Register the class in
src/bernstein/adapters/registry.pyand add the module to theadapters-independentcontract in.importlinter. - Follow steps 2 to 4 above, and cover the adapter with a conformance test under
tests/contract/.
Existing hand-written adapters keep working unchanged; adopting a profile for one is optional and does not change how it spawns.
The contract for new adapters lives in ADAPTER_GUIDE.md. The typed strategy axes are documented in capability_contract.md.
Install matrix¶
Install commands for the wired-in agents. Bernstein auto-discovers installed CLI agents; mix them in the same run. Check what is available locally with bernstein integrations list --installed.
| Agent | Install |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| Codex CLI | npm install -g @openai/codex |
| OpenAI Agents SDK v2 | pip install 'bernstein[openai]' |
| GitHub Copilot CLI | npm install -g @github/copilot |
| Gemini CLI | npm install -g @google/gemini-cli |
Antigravity CLI (agy) | Upstream installer, then agy install |
| Cursor | Cursor app |
| Devin Terminal (Cognition) | curl -fsSL https://cli.devin.ai/install.sh \| bash then devin auth login |
| Aider | pip install aider-chat |
| Amp | npm install -g @sourcegraph/amp |
| CLM gateway (sovereign / on-prem LLM) | pip install aider-chat, then set CLM_ENDPOINT / CLM_TOKEN |
| Cody | npm install -g @sourcegraph/cody |
| Continue | npm install -g @continuedev/cli (binary: cn) |
| Goose | See Goose docs |
| IaC (Terraform/Pulumi) | Built-in |
| Junie | curl -fsSL https://junie.jetbrains.com/install.sh \| bash |
| Kilo | See Kilo docs |
| Kiro | See Kiro docs |
| AWS Q Developer | brew install --cask amazon-q then q login |
| Ollama + Aider | brew install ollama |
| OpenCode | See OpenCode docs |
| Qwen | npm install -g @qwen-code/qwen-code |
| OpenHands | uv tool install openhands --python 3.12 |
| Open Interpreter | pip install open-interpreter |
| gptme | pipx install gptme |
| Plandex | curl -sL https://plandex.ai/install.sh \| bash |
| AIChat | cargo install aichat |
| Letta Code | npm install -g @letta-ai/letta-code |
| Muse Code (Meta) | curl -fsSL https://dev.meta.ai/install.sh \| sh |
| Generic | Built-in |
Any adapter also works as the internal scheduler LLM (internal_llm_provider / internal_llm_model in bernstein.yaml; see configuration). Local runtimes (Ollama, LM Studio, MLX servers) plug in as a first-class worker tier via a local_endpoints profile certified with bernstein doctor --endpoint <url>; see local endpoints.