
Cli Bridge Mcp
io.github.JoaoBernePublished by GitHub account JoaoBernev0.3.0Updated Oct 24, 2026
Other AI CLIs (Gemini, GPT, Claude, opencode, Ollama) as a council — ban-safe, no API keys.
Overview
Lets an assistant consult other AI CLIs installed on your machine (Claude Code, Codex, Gemini, Ollama and more) as a multi-model council, without API keys.
- What you can do
- Consult other AI CLIs: ask a single lane, fan out to all free lanes, cascade cheapest-to-strongest, or let a router pick, and list or replay conversation threads
- Build code through a delegate: isolated mode returns a worktree diff, direct mode writes inside a declared zone, with async jobs you can tail or steer
- Review and compare: multi-model diff review, blind debates with peer voting, preset workflows, and commit or PR text from the staged diff
- Operate lanes: check job status, rate lanes, record lane costs, run diagnostics and setup
- Read usage and lane-health resources, and optionally enable batch fan-out and lane-state reset
- When to use it
- Useful when you want a second or third model's opinion on code, a bug, a plan or a migration decision, or want cross-model review and debate, using CLIs you already have installed and logged in rather than new API keys.
- Requirements
- Runs locally over stdio via uvx from the cli-bridge-mcp PyPI package. Needs Python 3.12+, uv, and at least one AI CLI installed and logged in. Optional environment variables such as CLI_BRIDGE_PROFILE, CLI_BRIDGE_CACHE_TTL_S, CLI_BRIDGE_TERSE and per-lane settings tune cost, caching and output style.
Installation
In SourceWeft
- Open Cli Bridge Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
cli-bridge
A Model Context Protocol server that lets the AI assistant
you're talking to consult the other AI CLIs installed on your machine — Claude Code, Codex,
Gemini, Mistral, opencode, Ollama, Apple fm, … Each lane spawns the official CLI as a
subprocess: no API keys, no token extraction, read-only by default.
Dependencies: the Python stdlib and mcp (1.x or 2.x). No daemon.
What it does
Every ask_<lane> returns a thread id; reuse it (even on another lane) for a multi-model
conversation that survives /compact. conversations lists or replays threads.
Tools
15 fixed tools + one ask_<lane> per installed CLI:
- Consult:
ask_<lane>,ask_all,ask_cascade,ask_best,conversations,list_models - Build:
ask_build(mode=isolated→ diff,mode=direct→ zone-guarded writes; withmode=direct,async=true→ steerable viajob) - Review:
review_diff(focus=code|security),debate(vote=judge|borda),workflow(presets:refine_plan,map_review,research_verify,fanout_compare,converge,premortem,test_plan,challenge),git_text(kind=commit|pr) - Operate:
job(action=status|result|cancel|list|tail|steer),rate_lane,set_lane_cost,doctor,setup
CLI_BRIDGE_TOOLS=all adds batch_run (journaled fan-out) and reset_lane_state;
CLI_BRIDGE_TOOLS=default,batch_run extends the default; a plain comma list is exactly those.
Usage and lane health are MCP resources (cli-bridge://usage-summary, cli-bridge://lane-stats).
Full reference: docs/TOOLS.md.
There is also a human CLI, cli-bridge doctor|ask|ask-all|ask-best|build|review-diff|security-review|test-plan|premortem|stats|usage|jobs|set-cost (--json where it makes sense). cli-bridge build <lane> "<task>" prints the worktree diff; --apply lands it as unstaged changes.
Writing code safely
isolated(default): the delegate edits a throwaway git worktree and you get a diff. Your tree is untouched.direct: writes real files, but only inside thezoneyou declare, behind a per-zone lock with a post-turn zone-violation check; undo is zone-scoped.async=truemakes it steerable (job action=tail|steer) with an executable Definition-of-Done (dod_cmd).
CLI_BRIDGE_VERIFY_PLAN_READONLY=1 flags (never reverts) a read-only delegate that wrote files
anyway. Re-entry is depth-capped (CLI_BRIDGE_MAX_DEPTH, default 1). Delegates run in the
caller's cwd, else CLI_BRIDGE_DEFAULT_CWD, else the host's MCP workspace root.
Install
Prerequisites: Python 3.12+, uv, and at least one AI CLI installed and logged in.
Wire it into your host:
- Claude Code:
claude mcp add cli-bridge -- uvx cli-bridge-mcp(or the plugin:claude plugin marketplace add JoaoBerne/cli-bridge-mcp && claude plugin install cli-bridge@cli-bridge-mcp). - Any other MCP host (Codex, Cursor, VS Code, Zed, Claude Desktop, …):
Per-host config paths:
docs/HOSTS.md. Full example with env vars:examples/mcp.example.json. GUI hosts launch servers with a minimal PATH; cli-bridge also searches the usual install dirs, or point a lane at its binary withCLI_BRIDGE_<LANE>_BIN=/full/path.
Restart the host, then ask it to consult a lane ("ask gemini to read ./src and find the bug").
cli-bridge-mcp is the server entry point; cli-bridge is the human CLI.
Configuration
Everything is env (set in the MCP server entry) or ~/.config/cli-bridge/config.json (env wins).
The knobs that matter:
doctor --deep (or doctor(deep=true)) live-checks every free lane, its CLI version and its
model list, and reports what changed since the previous deep probe: run it weekly and you learn
about a renamed flag or a new model before a delegation fails.
set_lane_cost (or cli-bridge set-cost) records what a lane costs you, persisted to the
config file. Cost tiers are sourced defaults, never read from your account
(docs/COSTS.md); the full spend model is in docs/BUDGET.md.
Lanes
Built-in: Claude Code, Codex (gpt), Gemini (+ Antigravity agy), Mistral (Vibe), opencode,
Ollama (local, $0), Apple Foundation Models (fm, on-device, $0), Qwen Code, Copilot, Cursor,
Grok, and Apple PCC (hidden until APPLE_FM_SERVE_URL is set — it talks to a fm serve you
start from Terminal yourself; see examples/apple-fm-serve.lane.json).
images=[…] works on the vision lanes (apple, ollama, opencode, gpt, gemini); whether the image is
actually read depends on the model behind the lane.
Other CLIs are a few lines of JSON via CLI_BRIDGE_LANES_FILE:
examples/local-runtime.lane.json (LM Studio, MLX, llama.cpp;
runtime table in examples/local-first-host.md),
examples/community-lanes.json (Aider, Goose, Plandex, Amp,
Crush, Amazon Q, Droid), and any OpenAI-compatible endpoint via curl or the bundled
cli-bridge-openai bridge (examples/openai-compatible.lane.json).
Known limitations
- No token or key extraction, but non-interactive use of a vendor CLI isn't formally sanctioned everywhere.
- Async jobs are in-process: a server restart marks running jobs
interrupted.batch_run/workflowjournal each task and resume viaresume_id. - The injection guard is heuristic. Treat delegate output as data.
- Token/credit figures are estimates (chars/4 × your
CREDITS_PER_1K). - Experimental lanes (
qwen,copilot,grok, community,images=):doctor --deepchecks each CLI's--helpon your machine.
Development
Eval harness (deterministic scorer, outside the package): benchmarks/.
History: CHANGELOG.md. Layout and rules: AGENTS.md, docs/ARCHITECTURE.md.
License
Apache 2.0
Source: README.md at commit ee62f24
Tools
0Version history
1- v0.3.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts