loading…
Search for a command to run...
loading…
Enables structured multi-perspective debates with Wind (explore), Wall (constrain), and Door (synthesize) roles, featuring deterministic state, hash chains, Git
Enables structured multi-perspective debates with Wind (explore), Wall (constrain), and Door (synthesize) roles, featuring deterministic state, hash chains, GitHub integration, and auto-orchestration for decision-making.
License CI PyPI version Python 3.11+
MCP server for Wind/Wall/Door multi-perspective debate orchestration with production-oriented design patterns.
Production Status: This server implements production-minded patterns (validation, bounded operation, atomic persistence) suitable for development and small-scale deployments. For larger production deployments, see production deployment considerations.
===AGENT_BOOTSTRAP===
DEV_BOOTSTRAP::scripts/dev-bootstrap.sh
DEV_HOOKS_OPT_IN::scripts/install-git-hooks.sh[core.hooksPath=.githooks]→DEBATE_HALL_AUTO_BOOTSTRAP=1
SKILL::skills/debate-hall/SKILL.md
WORKFLOW::init→turn→get→close
AGENTS::agents/README.md[Wind/Wall/Door definitions]
COGNITIONS::agents/cognitions/[PATHOS|ETHOS|LOGOS overlays]
RECIPES::[SPEED(3)|STANDARD(12)|DEEP(36)|FORTRESS|LABORATORY]
===END===
pip install debate-hall-mcp
Add to Claude Desktop (claude_desktop_config.json) or Claude Code (~/.claude.json):
{
"mcpServers": {
"debate-hall": {
"command": "debate-hall-mcp"
}
}
}
User: Start a debate about whether to rewrite our backend in Rust
Claude: [calls init_debate with thread_id="rust-rewrite",
topic="Should we rewrite our backend in Rust?"]
Wind → "What if we rewrote in Rust? Memory safety, performance..."
Wall → "Yes, but: team expertise, ecosystem maturity, timeline..."
Door → "Therefore: Profile hotspots first, consider Rust for specific components..."
That's it. For GitHub integration, see Configuration.
PyPI:
pip install debate-hall-mcp
# or
uv pip install debate-hall-mcp
From source:
git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
./scripts/dev-bootstrap.sh
uv pip install -e ".[dev]"
One-command setup:
./scripts/dev-bootstrap.sh
Optional: enable repo-local git hooks (prints reminder, or auto-runs bootstrap when DEBATE_HALL_AUTO_BOOTSTRAP=1):
./scripts/install-git-hooks.sh
| Tool | Purpose |
|---|---|
init_debate |
Create debate: thread_id, topic, mode?, max_turns? |
add_turn |
Record turn: thread_id, role, content |
get_debate |
View state: thread_id, include_transcript? |
close_debate |
Finalize: thread_id, synthesis, output_format?, seal? |
| Tool | Purpose |
|---|---|
pick_next_speaker |
Set next speaker (mediated mode) |
| Tool | Purpose |
|---|---|
force_close_debate |
Emergency shutdown (I5 kill switch) |
tombstone_turn |
Redact turn (preserves hash chain) |
| Tool | Purpose |
|---|---|
github_sync_debate |
Sync turns to GitHub Discussion/Issue |
ratify_rfc |
Generate ADR from synthesis, create PR |
human_interject |
Inject human GitHub comment into debate |
| Tool | Purpose |
|---|---|
run_debate |
Run complete Wind→Wall→Door debate automatically |
resume_debate |
Resume a PAUSED debate after failure |
The MCP config above is sufficient for local debates.
.env.example to .envGITHUB_TOKEN=ghp_your_token_here
Token scopes needed:
repo,write:discussionGet one at: GitHub → Settings → Developer settings → Personal access tokens
The run_debate tool uses tier configurations to determine which AI providers to use for each role.
Quick Start:
# Copy the template and add your API key
cp tiers.yaml.example tiers.yaml
export OPENROUTER_API_KEY=your-key-here
Resolution order:
DEBATE_HALL_TIERS_FILE environment variable./tiers.yaml (project root)~/.debate-hall/tiers.yaml (user home)See tiers.yaml.example for all configuration options including CLI providers and custom prompts.
Example tier configuration:
# ~/.debate-hall/tiers.yaml
standard:
wind:
provider: cli # Use external CLI (claude, codex, gemini)
cli: claude
role: wind-agent # Optional: role for PAL MCP
wall:
provider: cli
cli: codex
door:
provider: cli
cli: gemini
settings:
consensus_required: true # Wind/Wall must approve synthesis
max_turns: 12
max_refinement_loops: 3
premium:
wind:
provider: openrouter # Use OpenRouter API
model: anthropic/claude-3-opus
wall:
provider: openrouter
model: openai/gpt-4-turbo
door:
provider: openrouter
model: google/gemini-pro
settings:
consensus_required: true
max_turns: 20
max_refinement_loops: 5
Provider options:
cli: External AI CLIs (requires claude, codex, or gemini CLI installed)openrouter: OpenRouter API (requires OPENROUTER_API_KEY env var)Settings:
consensus_required: If true, Wind and Wall must approve Door's synthesismax_turns: Maximum total turns in debatemax_refinement_loops: How many times Door can refine after rejectionSee Usage Patterns for detailed configuration options.
Thread: "microservices-vs-monolith"
Topic: "Should we migrate to microservices?"
[WIND] "What if we decomposed into services? Independent scaling,
technology diversity, team autonomy..."
[WALL] "Yes, but we have 3 developers. Microservices add operational
complexity, network latency, distributed transactions..."
[DOOR] "Therefore: Start with a modular monolith. Design service
boundaries now, but keep deployment unified. Extract services
only when team grows or specific scaling needs emerge."
| Doc | Content |
|---|---|
| Usage Patterns | Recipes, tuning, agent tiers, cognition prompts |
| Evidence | Empirical research validating the approach |
| Architecture | Execution tiers, Wall content contract |
| Examples | Real multi-model debate patterns |
| Agents | Wind/Wall/Door agent definitions |
| Skills | AI agent skill installation |
Three cognitive voices in tension:
| Role | Cognition | Voice |
|---|---|---|
| Wind | PATHOS | "What if..." — expansive, visionary |
| Wall | ETHOS | "Yes, but..." — grounding, critical |
| Door | LOGOS | "Therefore..." — synthesizing, decisive |
| ID | Principle |
|---|---|
| I1 | Cognitive State Isolation — server manages state |
| I2 | OCTAVE Binding — exportable semantic transcripts |
| I3 | Finite Closure — hard turn/round limits |
| I4 | Verifiable Ledger — SHA-256 hash chain |
| I5 | Safety Override — admin kill switch |
While debate-hall-mcp implements production-minded patterns (validation, bounded operation, atomic persistence), there are considerations for larger-scale production deployments.
For comprehensive deployment guidance, see Production Deployment Guide.
| Setting | Environment Variable | Recommended Value |
|---|---|---|
| State directory | DEBATE_HALL_STATE_DIR |
/var/lib/debate-hall/ |
| OpenRouter API | OPENROUTER_API_KEY |
Use secret manager |
| GitHub token | GITHUB_TOKEN |
Use secret manager |
Before deploying at scale:
DEBATE_HALL_STATE_DIR to dedicated path outside repository.env in production)Well-suited for:
Requires additional work for:
See CONTRIBUTING.md for development setup, testing, and guidelines.
# Quick dev setup
git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
# Run tests (800+ tests)
pytest
# Quality checks
ruff check src tests && mypy src && black --check src tests
Apache-2.0 — Built with HestAI and MCP Python SDK.
Выполни в терминале:
claude mcp add debate-hall-mcp -- npx Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development