Remove internal architecture details, full .env examples, and room assignment model. Keep role overview, tribunal flow, key features, and quick start.
EJClaw
Tribunal multi-agent AI assistant (Owner + Reviewer + Arbiter) over Discord with autonomous paired review and Mixture of Agents.
Originally derived from qwibitai/nanoclaw. Prompt design inspired by Q00/ouroboros and garrytan/gstack.
Overview
A single unified service (ejclaw) runs a Tribunal of three roles:
| Role | Purpose | Default |
|---|---|---|
| Owner | Handles user requests, writes code | Codex (@codex) |
| Reviewer | Critically reviews owner's work, verifies design direction | Claude Code (@claude) |
| Arbiter | On-demand deadlock breaker between owner and reviewer | Codex (@codex-review) |
Each role's agent type and model are independently configurable via .env (OWNER_AGENT_TYPE, REVIEWER_AGENT_TYPE, ARBITER_AGENT_TYPE, *_MODEL). Three Discord bots provide the identity layer — which bot speaks is determined by the active role, not hardcoded.
Tribunal Flow
User message
→ Owner responds
→ Reviewer auto-triggered (critical review)
→ DONE → Owner finalizes → @user ✅
→ Feedback → Owner addresses → loop
→ BLOCKED → Arbiter (if enabled) or @user ⚠️
→ Deadlock (3+ rounds) → Arbiter summoned → binding verdict
Mixture of Agents (MoA)
When enabled, the arbiter collects opinions from configurable external reference models before rendering its verdict. No extra SDK processes — lightweight API calls only.
Features
- Tribunal 3-agent system — Owner/reviewer/arbiter with on-demand deadlock resolution
- Per-role model selection —
OWNER_MODEL,REVIEWER_MODEL,ARBITER_MODEL+ effort + fallback - Container-isolated reviewer — Docker container with read-only source mount (supports both Claude and Codex runners)
- Global failover — Claude exhaustion → automatic codex fallback, auto-recovers
- Mixture of Agents — External reference models enrich arbiter verdicts
- Token rotation — Multi-account Claude/Codex rotation on rate limits
- Voice transcription — Groq/OpenAI Whisper
- Session persistence — Separate sessions per role
- Mid-turn steering — Inject follow-up messages while agent is working
Quick Start
git clone https://github.com/phj1081/EJClaw.git
cd EJClaw
bun install
bun run build:runners # Build both runners
bun run build # Build main project
bun run build:container # Build reviewer Docker image
cp .env.example .env # Configure tokens and settings
bun run deploy # Or: bun run dev
Development
bun run build # Build main project
bun run build:runners # Install + build both runners
bun run build:container # Rebuild reviewer Docker image
bun run dev # Dev mode with hot reload
bun test # Run tests
License
MIT — Originally derived from qwibitai/nanoclaw