councli is a local council room for native coding-agent CLIs. It broadcasts a
prompt to installed assistants, lets them see each other's output through a
shared blackboard, and returns one synthesized answer.
It does not replace Codex, Claude Code, AGY, CodeWhale, or Kimi Code. Those
tools remain normal binaries on your machine. councli is the coordination
layer around them: room, recorder, router, and shared memory.
Multi-model platforms and agent frameworks already exist. Some route prompts to hosted models, some synthesize model panels, and some help developers build new agent workflows.
councli is narrower: it coordinates the coding assistants you already run in
your terminal. It preserves their native harnesses, auth, tools, permissions,
slash commands, MCP configuration, and session behavior instead of rebuilding
them as API agents.
In short: councli is the missing local room for developers who already use
multiple coding assistants and want them to think together inside the same repo.
pipx install councilroom-ai
councli --helpThe PyPI package is councilroom-ai; the installed command is councli.
From GitHub:
pipx install "git+https://github.com/mosesmrima/councli.git"The MVP supports these coding-agent CLIs:
| Assistant | Command |
|---|---|
| Codex | codex |
| Claude Code | claude |
| AGY | agy |
| CodeWhale | codewhale |
| Kimi Code | kimi |
Each assistant must already be installed, logged in, model-ready, and available
on PATH in the same shell where councli runs.
councli does not manage provider accounts, subscriptions, API keys, OAuth,
device-code login, or model configuration. Launch each assistant directly first,
finish its native setup, then let councli discover and coordinate it.
- Runs shared multi-agent conversation turns from one prompt.
- Records all participant outputs on an inspectable blackboard.
- Synthesizes one council answer from the shared outputs.
- Supports explicit
/deliberateand/votecommands when you want stronger coordination. - Lets you attach to a native assistant TUI with
/assistant <name>whentmuxis available. - Tracks artifacts under
.councli/instead of hiding coordination state. - Degrades gracefully when an assistant is missing, disabled, unauthenticated, or missing a model.
- Not a model provider.
- Not an auth manager.
- Not a replacement for the underlying assistants.
- Not a generic sandbox.
- Not a fixed workflow engine that forces every prompt through vote/review phases.
Normal prompts are just shared conversation turns. Stronger governance is explicit.
From the project you want the assistants to inspect:
councli setup
councli doctor
councliInside the interactive shell:
councli > what can you all do?
councli > /deliberate compare sqlite and postgres for this app
councli > /vote choose the transport: exec or tmux
councli > /assistant codex
councli > /quit
Useful setup commands:
/agents
/enable claude
/disable kimi
/doctor
/status
/show latest
flowchart LR
U([User prompt]) --> R{Council room}
R -->|fan out| A1[Codex]
R -->|fan out| A2[Claude Code]
R -->|fan out| A3[AGY / CodeWhale / Kimi]
A1 --> BB[(Shared blackboard)]
A2 --> BB
A3 --> BB
BB -->|synthesize| S([One council answer])
S --> U
Under the hood:
user prompt -> fan out to available assistants -> write responses to the
blackboard -> synthesize one council answer -> return to the prompt
/deliberate <prompt> adds a peer-aware second round before synthesis.
/vote <prompt> asks participants for explicit decision artifacts.
councli is a pure Python CLI for Python 3.11+.
| Platform | Install | Core turns | Native tmux attach |
|---|---|---|---|
| Linux | Supported | Supported | Supported with tmux |
| macOS | Supported | Supported | Supported with tmux |
| Windows | Supported | Supported with exec-mode agents | Use WSL for tmux |
| WSL | Supported | Supported | Supported with tmux |
councli launches the assistant binaries configured in .councli/config.yaml.
Generated command templates and resolved binary paths are trusted before use.
If commands, binary paths, hashes, backends, or enabled flags change, review the
config and run:
councli trustRun diagnostics:
councli doctor
councli doctor --json
councli securityArtifacts can contain prompts, responses, terminal output, and project context. Before sharing artifacts, use:
councli artifacts scrub --dry-run
councli artifacts export --output support.tar.gzCurrent priorities:
- Better harness adapters for Codex, Claude Code, AGY, CodeWhale, and Kimi Code.
- Stronger shared communication protocol: turn packets, blackboard, sidecars, event log, and recovery.
- Better token efficiency: compact prompts, peer-context summaries, fewer automatic rounds, and artifact references instead of repeated context.
- Better interactive UX around slash commands, participant status, synthesis, and native attach.
See Roadmap.
git clone https://github.com/mosesmrima/councli.git
cd councli
uv sync
uv run pytest -q
uv build- Install guide
- Architecture
- Protocol design
- Adapter contract
- Participant adapter notes
- Roadmap
- Terminal substrate
- Security model
- Packaging and release notes
- Research findings
councli is early alpha software. The current public surface is shared
conversation, deliberation, explicit voting, native attach, durable artifacts,
and adapter readiness. Hidden experimental execution/review commands may exist
behind COUNCLI_EXPERIMENTAL=1, but they are not the MVP path.
License: MIT.