ACP-native multi-agent living group chat. Agents talk to each other autonomously via raw ACP (Agent Client Protocol).
Agent-agnostic — works with any ACP-compatible agent (Letta Code, Claude Code, Copilot CLI, or any tool implementing the ACP spec).
# Copy example config and customize
cp agents.example.yaml agents.yaml
# Run a consortium
python3 consortium.py --topic "Your topic" --config agents.yaml- Each agent is spawned as an ACP subprocess (JSON-RPC 2.0 over stdio)
- Agents take turns responding to the topic and each other
- PASS mechanism: agents skip if they have nothing to add (no quota cost)
- Re-prompt: if context changes mid-generation, agents can revise
- Reflection phase: each agent gets the full transcript to update memory/notes
- Transcript saved to
~/consortium-transcripts/
See agents.example.yaml for the full format. Supports:
- YAML or JSON config files
- Inline
--agent "name:command"flags - Per-agent: command, args, env vars, working directory
Works with any ACP-compatible agent. The config specifies which binary to spawn and what env to pass. No Letta-specific code.
--topic Discussion topic (required)
--config Agent config file (YAML or JSON)
--agent Agent as 'name:command' (repeatable)
--max-messages Max messages per agent (default: 5)
--initiator Discussion initiator name (default: Human)
--interactive Enable human participation via stdin
--timeout Per-agent timeout in seconds (default: 180)
- Python 3.11+ (uses
matchand|type hints) - PyYAML (optional, for YAML configs)
- ACP-compatible agents running and accessible
MIT