Skip to content

quasi/agent-council

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agent Council

A multi-agent deliberation system where diverse AI coding agents collaborate through structured rounds to solve problems better than any single agent could alone.

Inspired by Andrej Karpathy's LLM council idea, but extended to full coding agents — each with their own tools, MCP servers, and knowledge bases.

Why Agent Councils?

This is not just multiple LLM API calls. Each agent (Claude Code, Gemini, Codex, OpenCode) is a complete coding agent with:

  • Its own tool ecosystem
  • File access and code exploration
  • Web search and knowledge bases
  • Different training data and reasoning patterns

The value comes from genuinely different systems analyzing the same problem, not multiple prompts to the same model.

How It Works

Round 1: Initial     → Each agent independently proposes a solution
Round 2: Critique    → Agents read others' proposals and identify weaknesses
Round 3: Defense     → Agents defend or revise based on critiques
Round 4: Synthesis   → Chairman consolidates into final recommendation

Coordination happens through files — no server, no infrastructure. Agents read markdown, write markdown, and the deliberation unfolds asynchronously.

Setup

Prerequisites:

  • Python 3.10+
  • tmux
  • At least 2 coding agents installed (e.g., Claude Code, Gemini CLI, Codex, OpenCode)

Install:

git clone https://github.com/quasilabs/agent-council.git
cd agent-council

No dependencies to install — it's a single Python script.

Your First Council

Step 1: Create a council

python3 agent_council.py new my-first-council
cd my-first-council

This creates:

my-first-council/
├── COUNCIL.md          # Council rules and member perspectives
├── PROBLEM.md          # Where you define the problem
├── ROUND-STATUS.md     # Track progress
├── start-council.sh    # Launches all agents in tmux
├── prompts/            # Ready-to-use prompts for each round
│   ├── claude-round-1.md
│   ├── gemini-round-1.md
│   └── ...
├── workspace/          # Shared context (add files here)
└── rounds/             # Where agents write their reports
    ├── 1-initial/
    ├── 2-critique/
    ├── 3-defense/
    └── synthesis/

Step 2: Define the problem

Edit PROBLEM.md with your question or challenge:

# Problem Statement

We need to design an authentication system for our API.

## Context
- REST API serving mobile and web clients
- Currently no auth, moving to production
- Team has experience with JWT but open to alternatives

## Constraints
- Must support token refresh
- Need to revoke access for specific users
- Budget for managed services if justified

## What We Need
A concrete recommendation with tradeoffs explained.

Step 3: (Optional) Customize member perspectives

Edit COUNCIL.md to adjust agent perspectives. Defaults:

- **claude**: Systems Thinker and Inventor with long term perspective
- **gemini**: Pragmatic Architect focused on scalability and stability
- **codex**: Devil's advocate, critical thinker, challenges assumptions
- **opencode**: Obsessed with maintainability, testability, correctness

Step 4: Add context (optional)

Drop any relevant files into workspace/ — code samples, research notes, existing docs. Agents will explore this folder.

Step 5: Start the council

./start-council.sh

This opens a tmux session with 4 panes, one per agent. Each agent CLI starts automatically.

Step 6: Run Round 1

In each agent's pane, paste:

do @ prompts/claude-round-1.md

(Replace claude with the agent name for that pane: gemini, codex, opencode)

Each agent will:

  1. Read the council rules
  2. Read the problem
  3. Explore the workspace
  4. Write their proposal to rounds/1-initial/{agent}.md

Wait for all agents to finish (look for <!-- COMPLETE --> at the end of their reports).

Step 7: Run Round 2 (Critique)

do @ prompts/claude-round-2.md
do @ prompts/gemini-round-2.md
do @ prompts/codex-round-2.md
do @ prompts/opencode-round-2.md

Agents read each other's Round 1 proposals and write critiques to rounds/2-critique/.

Step 8: Run Round 3 (Defense)

do @ prompts/claude-round-3.md
do @ prompts/gemini-round-3.md
do @ prompts/codex-round-3.md
do @ prompts/opencode-round-3.md

Agents read critiques of their work and either defend or revise their positions.

Step 9: Run Round 4 (Synthesis)

Only the chairman (claude by default):

do @ prompts/claude-round-4.md

The chairman reads ALL 12 reports from the deliberation and writes a final synthesis to rounds/synthesis/synthesis.md.

Step 10: Read the result

Open rounds/synthesis/synthesis.md for:

  • Areas of agreement
  • Areas of disagreement (and why)
  • Recommended path forward
  • Minority opinions worth noting

Tips

Choosing problems: Councils work best for architectural decisions, design tradeoffs, and complex problems with multiple valid approaches. Don't use them for simple bugs or clear-cut tasks.

Agent diversity: The value is in different perspectives. If you only have Claude, you can still run a council with different Claude instances given different personas — but true diversity (different models, different tools) yields better results.

Reading the deliberation: The synthesis is the summary, but the real insight is often in the critique and defense rounds. Read those to understand why the council reached its conclusions.

License

MIT

About

Agents of the Round Table

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages