Remove internal architecture details, full .env examples, and room assignment model. Keep role overview, tribunal flow, key features, and quick start.
80 lines
3.4 KiB
Markdown
80 lines
3.4 KiB
Markdown
# EJClaw
|
|
|
|

|
|

|
|

|
|

|
|

|
|
|
|
Tribunal multi-agent AI assistant (Owner + Reviewer + Arbiter) over Discord with autonomous paired review and Mixture of Agents.
|
|
|
|
Originally derived from [qwibitai/nanoclaw](https://github.com/qwibitai/nanoclaw).
|
|
Prompt design inspired by [Q00/ouroboros](https://github.com/Q00/ouroboros) and [garrytan/gstack](https://github.com/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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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](https://github.com/qwibitai/nanoclaw)
|