A terminal UI that runs Claude, Gemini, and Codex side-by-side in parallel deliberation
Project description
AI Roundtable
Put Claude, Gemini, and Codex around the same table.
A terminal UI that runs multiple AI assistants side-by-side and lets them debate any topic in real time โ in parallel, with no switching between windows.
๐ต CLAUDE ๐ข GEMINI ๐ก CODEX
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโ
โโ Rapid Fire โโ โโ Rapid Fire โโ โโ Rapid Fire โโ
The core moat for LLMs is Data flywheels matter more Engineering execution is
reasoning capability. A than model quality โ the underrated. The teams that
model that thinks better companies accumulating the ship fastest learn fastest,
will always outperform one best proprietary datasets regardless of which model
that has more data but less will dominate long-term. they use.
coherent output.
Requirements
You need at least one of the following AI CLIs installed and authenticated:
| CLI | Install | Auth |
|---|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
claude login |
| Gemini CLI | npm install -g @google/gemini-cli |
gemini auth |
| Codex CLI | npm install -g @openai/codex |
Set OPENAI_API_KEY |
AI Roundtable works with 1, 2, or all 3. Any missing CLI is simply skipped.
Installation
pip install ai-roundtable
Then launch from anywhere:
ai-roundtable
From source
git clone https://github.com/HiJiangChuan/ai-roundtable
cd ai-roundtable
python3 -m venv .venv && .venv/bin/pip install -e .
ai-roundtable
Two Modes
Rapid Fire (default)
All active AIs answer your question in parallel. Results appear as they stream in.
Best for: quick comparisons, getting multiple perspectives fast, gut-checking an idea.
You: What's the biggest risk in microservices architecture?
๐ต CLAUDE โ Distributed systems complexity: when a service call
fails, tracing the root cause across 12 services...
๐ข GEMINI โ Operational overhead is underestimated. Teams often
migrate to microservices without the tooling to...
๐ก CODEX โ Data consistency. Once you split the database, every
cross-service transaction becomes a distributed...
Rapid Fire commands:
| Input | Action |
|---|---|
| Any text | Ask all AIs in parallel |
Ctrl+R |
Each AI critiques the others' last answers |
Ctrl+T |
Upgrade this question to a Deep Dive session |
Deep Dive (ai-roundtable --deep)
A structured multi-round debate with a rotating moderator.
Each round: all AIs speak โ moderator (rotating: Gemini โ Codex โ Claude โ โฆ) analyzes contradictions, assigns action types, and drives the next question.
Action types: Take a position / Rebut / Supplement / Probe / Challenge premise / Synthesize
Best for: complex decisions, architecture debates, exploring a problem space thoroughly.
Deep Dive commands:
| Input | Action |
|---|---|
| Topic text | Start the session (Round 0 opening) |
ๅฏ |
Proceed to next round |
ๆญข |
End session and generate summary |
ๆทฑๅ
ฅๆญค่ |
Stay on current round, dig one level deeper |
@claude your question |
Direct question to a specific AI only |
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Esc |
Quit |
/ |
Focus input box |
Ctrl+T |
Toggle mode (Rapid Fire โ Deep Dive) |
Ctrl+L |
Toggle layout (vertical โ horizontal panels) |
Ctrl+R |
Peer review โ AIs critique each other |
Ctrl+Y |
View panel content full-screen (click a panel first) |
Ctrl+N |
New tab |
Ctrl+W |
Close current tab |
Ctrl+O |
Open session history |
Ctrl+V |
Paste image into question |
Ctrl+A |
Select all text in input box |
โ |
Restore last submitted input |
Ctrl+1โ4 |
Switch to tab 1โ4 |
Configuration
On first launch, a config file is created at ~/.config/ai-roundtable/config.yml.
ais:
claude:
cmd: "claude"
prompt_flag: "-p"
flags: ["--dangerously-skip-permissions"]
timeout: 600 # Claude deep thinking can take up to 10 min
# enabled: false โ uncomment to disable this AI
gemini:
cmd: "gemini"
prompt_flag: "-p"
flags: ["--yolo"]
timeout: 300
codex:
cmd: "codex"
subcommand: "exec"
flags: []
timeout: 300
deep:
full_rounds_kept: 3 # Full rounds kept in context window
compress_summary_max: 80 # Max chars per compressed round summary
timeout_seconds: 60 # Per-AI timeout for Deep Dive rounds
history:
obsidian_vault: "" # Path to your Obsidian vault, e.g. ~/notes
# Leave empty to save to ~/Documents/ai-roundtable/
Disabling an AI
If you don't have Codex installed, add enabled: false:
ais:
codex:
enabled: false
AI Roundtable adapts automatically โ with 2 AIs it runs pair discussions, with 1 AI it uses a solo roundtable mode where the AI invents multiple personas and debates itself.
Session History
Every session is automatically saved as Markdown. Files are written to:
- With Obsidian:
<vault>/ai-roundtable/<Mode>/YYYY-MM-DD/NNN-topic.md - Without Obsidian:
~/Documents/ai-roundtable/<Mode>/YYYY-MM-DD/NNN-topic.md
Where <Mode> is Rapid Fire or Deep Dive.
Each file includes YAML frontmatter (date, type, tags) and is formatted with Obsidian callout blocks, ready to view in your vault immediately.
Debugging
CLI call logs are written to ~/.ai-roundtable/cli.log:
[15:35:21] claude OK 8.6s 211 chars (stream)
[15:35:35] gemini OK 22.5s 240 chars (stream)
[15:35:38] codex OK 25.2s 220 chars (stream)
Project Structure
ai-roundtable/
โโโ src/
โ โโโ main.py # Entry point, config/path resolution
โ โโโ tui.py # Terminal UI (Textual)
โ โโโ quick.py # Rapid Fire mode logic
โ โโโ orchestrator.py # Deep Dive state machine
โ โโโ cli_caller.py # AI CLI subprocess runner + streaming
โ โโโ context_manager.py # 3-layer context compression
โ โโโ history.py # Session persistence (Markdown + Obsidian)
โ โโโ prompt_loader.py # Prompt template loader
โ โโโ prompts/
โ โโโ guest_quick.md # Rapid Fire prompt
โ โโโ compare.md # Peer review prompt
โ โโโ guest.md # Deep Dive guest prompt
โ โโโ opening.md # Session opening (Round 0)
โ โโโ moderator.md # Moderator synthesis prompt
โ โโโ compress.md # Context compression prompt
โ โโโ solo_roundtable.md # Single-AI roundtable prompt
โโโ config.yml # Default config (source mode)
โโโ pyproject.toml
โโโ requirements.txt
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_roundtable-0.0.66.tar.gz.
File metadata
- Download URL: ai_roundtable-0.0.66.tar.gz
- Upload date:
- Size: 79.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a66a4ab6f2536e78a5890022329dc558cf11f5bd8bf8157d4ad690547b35743
|
|
| MD5 |
6a587034720ed0555cef683f44e637b0
|
|
| BLAKE2b-256 |
be51365d5258ed01b9098ce265fa26ca3db38a681f7d0436752e9ab1cbaaf1d4
|
Provenance
The following attestation bundles were made for ai_roundtable-0.0.66.tar.gz:
Publisher:
publish.yml on HiJiangChuan/ai-roundtable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_roundtable-0.0.66.tar.gz -
Subject digest:
1a66a4ab6f2536e78a5890022329dc558cf11f5bd8bf8157d4ad690547b35743 - Sigstore transparency entry: 1277098562
- Sigstore integration time:
-
Permalink:
HiJiangChuan/ai-roundtable@b2f83e2cecd9e75ab7885e4b9df825ee5d25c732 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/HiJiangChuan
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2f83e2cecd9e75ab7885e4b9df825ee5d25c732 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_roundtable-0.0.66-py3-none-any.whl.
File metadata
- Download URL: ai_roundtable-0.0.66-py3-none-any.whl
- Upload date:
- Size: 46.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcab3af564a4956a63a09c6b43d9deae5aef8a82b0c2f2667f55ff9fb47265e1
|
|
| MD5 |
30915554caebd1bebb72c25af875b4fb
|
|
| BLAKE2b-256 |
369a070a481ee649337c0234114af5e18d1663406e4c03ac789814aa224c9fcd
|
Provenance
The following attestation bundles were made for ai_roundtable-0.0.66-py3-none-any.whl:
Publisher:
publish.yml on HiJiangChuan/ai-roundtable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_roundtable-0.0.66-py3-none-any.whl -
Subject digest:
bcab3af564a4956a63a09c6b43d9deae5aef8a82b0c2f2667f55ff9fb47265e1 - Sigstore transparency entry: 1277098682
- Sigstore integration time:
-
Permalink:
HiJiangChuan/ai-roundtable@b2f83e2cecd9e75ab7885e4b9df825ee5d25c732 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/HiJiangChuan
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b2f83e2cecd9e75ab7885e4b9df825ee5d25c732 -
Trigger Event:
push
-
Statement type: