chitta-bridge
multi-model AI discussions for Claude Code & Codex
any backend · adversarial review · background rescue · soul-powered rooms · local GPU models · challenge rounds
pip install chitta-bridge
Install
$ pip install chitta-bridge
$ chitta-bridge-install # both Claude Code + Codex
$ chitta-bridge-install claude-code # Claude Code only
$ chitta-bridge-install codex # Codex CLI only
requires: Python 3.10+ · Claude Code or Codex CLI (or both) · one or more backends (OpenCode, Codex, Ollama)
Codex skills: /review, /rescue, /room, /soul
Capabilities
How It Works
MCP Tools 59
Core
opencode_discuss
send a message, auto-framed by domain
opencode_plan
planning discussion with plan agent
opencode_brainstorm
open-ended brainstorming
opencode_review
code review with chunked large-file support
Session
opencode_start
start a new session (auto-warms up, captures session ID)
opencode_ping
check if model is reachable
opencode_end
end current session
opencode_switch
switch between sessions
opencode_sessions
list all sessions
opencode_history
get conversation history
opencode_export
export transcript as markdown/JSON
Configuration
opencode_models
list available models
opencode_agents
list available agents
opencode_model
change session model
opencode_agent
change session agent
opencode_variant
change reasoning effort
opencode_config
get current config
opencode_configure
set defaults (persisted)
opencode_health
server health check
Codex Core
codex_start
start a new Codex session
codex_discuss
send message to Codex agent
codex_run
one-off stateless task execution
codex_review
code review — normal or adversarial mode
codex_rescue
delegate task with background execution
Codex Jobs
codex_job_status
check background job progress
codex_job_result
get final output + session ID for resume
codex_job_cancel
cancel a running background job
Codex Session
codex_end
end current session
codex_switch
switch between sessions
codex_sessions
list all Codex sessions
codex_history
get conversation history
Codex Config
codex_model
change session model (o3, o4-mini)
codex_config
get current config
codex_configure
set defaults (persisted)
codex_health
Codex health check
Orchestration
multi_consult
fan-out to multiple backends, synthesize results
agent_chain
sequential steps passing results forward
delegate_codex
delegate to Codex with optional OpenCode review
parallel_agents
run multiple tasks concurrently
Web
web_search
search via DuckDuckGo — no API key needed
web_fetch
fetch a page as plain text (HTML stripped)
Soul Memory
soul_recall
search memories from chittad
soul_remember
store a memory (episode, wisdom, correction)
soul_context
smart context: memories + code symbols + graph
soul_status
check if chittad daemon is available
Auto-Framing
When Claude sends a message, chitta-bridge detects the domain and frames the request as a specialized expert prompt.
Chunked Processing
For files over 2,000 lines:
Multi-Agent Orchestration
Coordinate workflows across multiple AI backends with hierarchical agent patterns.
agent_chain(steps=[
{"backend": "opencode", "task": "Plan caching strategy", "agent": "plan"},
{"backend": "codex", "task": "Implement: {previous}"},
{"backend": "opencode", "task": "Review: {previous}"}
])
Codex Features
Adversarial Review
Normal mode finds bugs. Adversarial mode challenges design decisions, architecture, and tradeoffs.
codex_review(mode="adversarial", focus="race conditions and data loss", base="main")
codex_review(mode="adversarial", background=True) # returns job ID
Background Rescue
Delegate tasks to Codex in the background. Resume sessions, control sandbox and effort.
codex_rescue(task="investigate test failures", background=True)
codex_job_status()
codex_job_result() # includes session ID for codex resume
codex_rescue(task="apply the fix", resume_from="SESSION_ID")
Sandbox Modes
Discussion Rooms
Async multi-agent roundtable with agent souls — persistent identity, per-agent memory, mediated tools, and structured challenge rounds. Participants respond in parallel (or sequentially on shared GPUs), each seeing the full thread.
room_create(
room_id="expert-panel",
topic="How should we authenticate ancient DNA from permafrost?",
participants='[
{"name":"Specialist","backend":"local","model":"qwen2.5:32b",
"base_url":"http://gpunode:11434/v1",
"soul":{"system_prompt":"You are a paleogenomicist...",
"realm":"agent:specialist",
"tools":["recall","remember","web_search"],
"challenge_bias":0.7}},
{"name":"Critic","backend":"local","model":"deepseek-r1:32b",
"base_url":"http://gpunode:11434/v1",
"soul":{"system_prompt":"You are a methodologist...",
"realm":"agent:critic",
"tools":["recall","remember"],
"challenge_bias":0.8}}
]'
)
room_run(room_id="expert-panel", rounds=2, challenge=true)
room_synthesize(room_id="expert-panel")
conductor_fusion(
topic="Design a fast HNSW build for 144k vectors",
workflow='[
{"agent":"claude:opus:xhigh", "subtask":"Thinker: propose independently.", "sees":"none"},
{"agent":"codex:gpt-5.5", "subtask":"Worker: extend the Thinker.", "sees":["Opus"]},
{"agent":"claude:opus:high", "subtask":"Verifier: critique both.", "sees":["Opus","GPT-5.5"]}
]',
project_roots=["/path/to/target/repo"]
)
# → {"room_id": "conductor-ab12cd34", "status": "running", ...}
room_status(room_id="conductor-ab12cd34") # poll rounds_done/rounds_total
room_read(room_id="conductor-ab12cd34") # transcript + synthesis once done
room_create
create room with participants and optional souls
room_add_participant
add agent to ongoing discussion
room_run
run N rounds with optional challenge mode
room_synthesize
distill transcript into one answer
room_read
read full transcript
conductor_fusion
one-call conductor orchestration — Thinker/Worker/Verifier by default, runs async
room_status
poll an async room for rounds-done/total and completion
Local GPU Models
Chat with Ollama or vLLM running on GPU nodes — no cloud API needed. Auto-discovers endpoints via Slurm job queue, cached URL files, or environment variable.
local_discover() # find GPU nodes and loaded models
local_start(session_id="gpu1", model="qwen3:30b-a3b")
local_discuss(message="Explain cache invalidation strategies")
# explicit endpoint
local_start(session_id="gpu2", model="qwen2.5:32b",
endpoint="http://gpunode01:11434/v1")
local_discover
find GPU nodes with Ollama/vLLM running
local_start
start session (auto-discovers endpoint)
local_discuss
chat with the local model
local_models
list models available at an endpoint
local_sessions
list active local sessions
local_switch
switch active session
local_end
end a session
local_history
show conversation history
local_health
health check