Manylogue
Human-chaired group chat for cross-model multi-agent collaboration. Several AI agents — Claude and Codex today — converse with each other and with you in one room, streaming their intermediate work (narration, tool calls) live and committing one final answer per turn. The point is to make multi-agent collaboration legible: you see who is thinking, what they are doing, and how the conversation settles, instead of black-box orchestration.
It's a FastAPI app: you chair the thread, and each agent's adapter responds in turn against a project working directory you choose. The transcript is plain JSONL on disk — readable, diffable, and durable across restarts.
For the why and real examples — a room reversing a wrong consensus, catching its own groupthink — read the introduction post: Manylogue: Cross-Model Multi-Agent Collaboration System.
Prerequisites
- Python 3.12+, and uv for the no-clone install below (pip works too).
- Claude Code — to chat with Claude agents.
Install it, run
claudeonce to log in, then verify:claude -p "Say exactly OK"prints OK. - Codex CLI — to chat with Codex agents.
Install it, run
codexonce to sign in, then verify:codex login statusprintsLogged in using ChatGPT.
One agent CLI is enough to start, but cross-model rooms need both. Manylogue drives the agents through the official SDKs and reuses the CLIs' subscription logins — no API keys live in Manylogue. See Agent parity & skills.
Install & run
Option 1 — no clone, with uv:
uvx --prerelease allow manylogue # serves http://127.0.0.1:8000
The flag is needed because the Codex SDK is still in beta and pins a pre-release runtime, which uv won't resolve from an index without an explicit opt-in. It goes away once the SDK ships a stable release.
Or with pip — no flags needed:
pip install manylogue
manylogue
Option 2 — from source:
git clone https://github.com/kmuzykov/manylogue
cd manylogue
uv sync
uv run manylogue
Open the URL, create a chat (pick a project directory the agents may work in), add participants, and send a message. Stop and restart any time — chats and per-agent state persist.
manylogue accepts --home <dir>, --host, and --port.
Security
Manylogue is a personal playground project, shared because it's useful — not a hardened product. Run it only if you're comfortable with all of the following:
- Agents run with permission prompts disabled. The Claude adapter uses
permission_mode="bypassPermissions": every file edit and command an agent decides to run is auto-approved, with no per-action review. Codex runs equivalently unattended. - Agents act on your real filesystem. They read, write, and run tools in the working directory you point a chat at — no sandbox, no worktree, by design. Point chats only at directories you trust the agents to operate in (a scratch clone is a good start).
- Localhost only. The server binds to
127.0.0.1and has no authentication. Do not expose it to a network or the public internet.
See SECURITY.md for the full risk model, sensible precautions, and vulnerability reporting.
Configuration
Manylogue keeps its config and chat history under <home>/.manylogue/, where <home>
defaults to your OS user home (so ~/.manylogue). Point MANYLOGUE_HOME elsewhere — or
pass manylogue --home <dir> — to relocate it. On first run Manylogue seeds the
config with the bundled default agents and roles; edit them in place, your changes are
never overwritten.
Layout under <home>/.manylogue/:
agents/*.toml— agent definitions (adapter, model, role, description)roles/*.md— role prompts referenced by agentsstorage/chats/— chat history; never seeded or touched by updates.env— optional settings and secrets (see.env.example)
Environment variables are read with this precedence (first setter wins):
- the process environment
<home>/.manylogue/.env— the place for secrets./.envin the directory you launch from — dev fallback; may setMANYLOGUE_HOME
Set MANYLOGUE_LOG_LEVEL (DEBUG, INFO, WARNING, ERROR; defaults to DEBUG) to
control log verbosity.
Capabilities & limitations
- Claude and Codex run through their subscription CLIs/SDKs, so agents inherit the real Claude Code / Codex runtime — their tools, instruction-file discovery, and (for Claude) skills — from your local install. With no local CLI the SDKs fall back to API-key billing with default built-in tools and none of your MCP servers; that fallback path is not yet verified.
- An OpenAI-compatible adapter exists (e.g. local models via Ollama) but is conversation-only today — no file read/write/search tools, so local models participate as talkers, not actors. Making them first-class participants is on the roadmap.
Troubleshooting
Claude turns fail with 401 Invalid authentication credentials (or "Please run /login").
Manylogue's Claude adapter authenticates with your Claude subscription login, so test it
directly from a terminal:
claude -p "say ok"
If that prints OK, Claude is authenticated and Manylogue will work. If it returns a 401,
your login has expired — run claude logout, then claude login, then restart Manylogue so
it picks up the refreshed credential.
Agent parity & skills
The contract both adapters aim for: an agent's turn should behave like a fresh CLI
session (claude / codex) opened in the chat's project directory. Instruction files
(CLAUDE.md / AGENTS.md), tools, MCP servers, and skills are inherited from your local
CLI setup, not configured in Manylogue — so if something works in your terminal, it
should work in the room.
Two discrepancies we hit in practice, and what solved them at the time (as of July 2026 — SDK and CLI behavior moves fast, so verify against current docs if something looks off):
-
Claude's document skills (DOCX / PDF / PPTX / XLSX) were missing. Claude Desktop had installed them into a GUI-only store that neither the terminal CLI nor SDK-driven sessions like Manylogue's could read. Installing them as a CLI plugin fixed it:
claude plugin marketplace add anthropics/skills claude plugin install document-skills@anthropic-agent-skillsNote these skills shell out to Python libraries and LibreOffice (
soffice) at execution time — they need those installed to actually produce documents. -
Claude agents lacked newer built-in skills. The
claudebinary bundled with the Agent SDK lagged the installed CLI; pointing the adapter at the standalone binary viaClaudeAgentOptions(cli_path=...)fixed that.
Metadata
Release files for manylogue 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| manylogue-0.1.2.tar.gz | 43.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| manylogue-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.1 kB
Release files / manylogue-0.1.2.tar.gz
| Download URL | manylogue-0.1.2.tar.gz |
|---|---|
| Size | 43.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e172b195af3d53e75e270c7ebdceb69682f1838f23c9da48adee396e93c083c8
|
|
BLAKE2b-256 checksum How to use checksums |
435bc16d02fed0505f4d0c0d2d0189c2e1134836919702d47d2a088faa62a78b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / manylogue-0.1.2-py3-none-any.whl
| Download URL | manylogue-0.1.2-py3-none-any.whl |
|---|---|
| Size | 59.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
62e7b8a6d85f428c0c0ace65f1f5a70f6d5dcd4ab5918de4142969134b5bd3c5
|
|
BLAKE2b-256 checksum How to use checksums |
4fc2e7c40171022657bac917bfcbda4e141608cff6e4d06d1b9be177067cd8a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|