freshcrate
Skin:/
Home > Frameworks > EJClaw

EJClaw

Tribunal multi-agent Discord bot framework โ€” autonomous paired review with configurable agent roles

Why this rank:Strong adoptionRelease freshnessHealthy release cadence

Description

Tribunal multi-agent Discord bot framework โ€” autonomous paired review with configurable agent roles

README

EJClaw

Version Claude Agent SDK Codex SDK Bun Discord

EJClaw๋Š” Discord ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” Tribunal ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ๊ฐœ๋ฐœ ๋ณด์กฐ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”์ฒญ์€ owner๊ฐ€ ๋ฐ›๊ณ , reviewer๊ฐ€ ์ž๋™ ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ํ•„์š”ํ•  ๋•Œ arbiter๊ฐ€ ๊ต์ฐฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์›๋ณธ์€ qwibitai/nanoclaw์—์„œ ์ถœ๋ฐœํ–ˆ์ง€๋งŒ, ํ˜„์žฌ๋Š” EJClaw์˜ Discord/paired-runtime ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์š”

  • ๋‹จ์ผ ejclaw ์„œ๋น„์Šค๊ฐ€ owner / reviewer / arbiter ์„ธ ์—ญํ• ๊ณผ ์„ธ Discord ๋ด‡์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ง„์ž…์ ์€ owner ํ•˜๋‚˜์ด๋ฉฐ, reviewer์™€ arbiter๋Š” ๋‚ด๋ถ€ ์—ญํ• ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • room-level ์„ค์ •์€ room_settings๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฉฐ, assign_room์ด ๊ณต๊ฐœ assignment ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  • reviewer๋Š” owner์˜ ํ˜„์žฌ worktree๋ฅผ direct mount๋กœ ์ฝ๊ณ , role-scoped read-only ๋ณดํ˜ธ๋ฅผ ์ ์šฉ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • paired runtime์€ SQLite(WAL), stable owner worktree, turn/lease ์ถ”์ , host verification์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • Tribunal 3-์—์ด์ „ํŠธ ๋ฃจํ”„: owner / reviewer / arbiter
  • Mixture of Agents(MoA): ์™ธ๋ถ€ ๋ชจ๋ธ ์˜๊ฒฌ์„ arbiter ํŒ๋‹จ์— ์ฃผ์ž…
  • ์—ญํ• ๋ณ„ agent type / model / effort ์„ค์ •
  • role-fixed Discord ๋ด‡ 3๊ฐœ ์ฒด๊ณ„
  • reviewer host runtime + read-only guard
  • ์Šน์ธ ํ›„ ๋ณ€๊ฒฝ ๊ฐ์ง€์™€ ์žฌ๋ฆฌ๋ทฐ
  • Claude ์žฅ์•  ์‹œ Codex๋กœ ๋„˜๊ธฐ๋Š” global failover
  • Claude OAuth ๋ฉ€ํ‹ฐ ํ† ํฐ ๋กœํ…Œ์ด์…˜
  • assign_room ๊ธฐ๋ฐ˜ ๋ช…์‹œ์  room assignment
  • Bun + SQLite ๊ธฐ๋ฐ˜ ๋น ๋ฅธ ๋Ÿฐํƒ€์ž„

Tribunal ์‹œ์Šคํ…œ

์—ญํ•  ํ˜„์žฌ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
Owner room๋ณ„ owner_agent_type (๊ธฐ๋ณธ Codex) ์‚ฌ์šฉ์ž ์š”์ฒญ ์ฒ˜๋ฆฌ, ์ฝ”๋“œ ์ž‘์„ฑ, ์ตœ์ข… ์‘๋‹ต
Reviewer ์ „์—ญ REVIEWER_AGENT_TYPE (๊ธฐ๋ณธ Claude Code) owner ๊ฒฐ๊ณผ ๋น„ํŒ์  ๋ฆฌ๋ทฐ, ํšŒ๊ท€ ๊ฒ€์ฆ
Arbiter ์ „์—ญ ARBITER_AGENT_TYPE (์˜ต์…˜) owner/reviewer ๊ต์ฐฉ ์‹œ ํŒ์ •
์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€
  โ†’ Owner ์‘๋‹ต
    โ†’ Reviewer ์ž๋™ ์‹คํ–‰
      โ†’ verdict:
          DONE               โ†’ Owner finalize โ†’ ์™„๋ฃŒ
          DONE_WITH_CONCERNS โ†’ Owner ์ˆ˜์ • โ†’ ์žฌ๋ฆฌ๋ทฐ ๋ฃจํ”„
          BLOCKED/NEEDS_CONTEXT
            โ”œโ”€ Arbiter enabled  โ†’ Arbiter ํŒ์ •
            โ””โ”€ Arbiter disabled โ†’ ์‚ฌ์šฉ์ž๋กœ ์—์Šค์ปฌ๋ ˆ์ด์…˜
      โ†’ ์™•๋ณต์ด ๋ˆ„์ ๋˜๋ฉด arbiter ์ž๋™ ์š”์ฒญ ๊ฐ€๋Šฅ

MoA

MoA๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด arbiter๊ฐ€ ํŒ์ •ํ•˜๊ธฐ ์ „์— Kimi, GLM ๊ฐ™์€ ์™ธ๋ถ€ ๋ชจ๋ธ ์˜๊ฒฌ์„ ๋ณ‘๋ ฌ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ arbiter ํ”„๋กฌํ”„ํŠธ์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ํŒ์ •์€ ์—ฌ์ „ํžˆ EJClaw arbiter๊ฐ€ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

๋ฐฉ ์„ค์ • ๋ชจ๋ธ

ํ˜„์žฌ room ์„ค์ •์˜ ๊ธฐ์ค€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • room_settings: room-level SSOT
  • room_role_overrides: owner / reviewer / arbiter ์—ญํ• ๋ณ„ override
  • paired_projects: canonical project root
  • paired_workspaces: ์‹ค์ œ owner / reviewer ์‹คํ–‰ workspace
  • registered_groups: ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, canonical source๊ฐ€ ์•„๋‹ˆ๋ผ compatibility/read-model ์„ฑ๊ฒฉ์œผ๋กœ ๋‚จ์•„ ์žˆ๋Š” ๋ ˆ์ด์–ด

์šด์˜์ ์œผ๋กœ๋Š”:

  • single โ†’ owner๋งŒ ์‹คํ–‰
  • tribunal โ†’ owner + reviewer + optional arbiter

์ค‘์š”ํ•œ ์ :

  • reviewer๋Š” ๋” ์ด์ƒ snapshot copy๋ฅผ ๊ธฐ๋ณธ ์‹คํ–‰ ๊ฒฝ๋กœ๋กœ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • reviewer๋Š” owner์˜ ํ˜„์žฌ workspace๋ฅผ direct mount๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.
  • stale reviewer workspace ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚จ์•„ ์žˆ์–ด๋„ ์‹คํ–‰ ์ง์ „ owner ํ˜„์žฌ ๊ฒฝ๋กœ๋กœ ์žฌ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

Discord โ”€โ”€โ–บ SQLite (WAL) โ”€โ”€โ–บ GroupQueue โ”€โ”€โ”ฌโ”€โ”€โ–บ Owner (host process)
                                          โ”‚       โ”‚
                                          โ”‚       โ–ผ
                                          โ”œโ”€โ”€โ–บ Reviewer (host process, read-only)
                                          โ”‚       โ”‚
                                          โ”‚   verdict routing
                                          โ”‚       โ”œโ”€ DONE โ†’ finalize
                                          โ”‚       โ”œโ”€ feedback โ†’ owner loop
                                          โ”‚       โ””โ”€ BLOCKED โ†’ arbiter / user
                                          โ”‚
                                          โ”œโ”€โ”€โ–บ Arbiter (on-demand, fresh session)
                                          โ”‚       โ”‚
                                          โ”‚   โ”Œโ”€โ”€โ”€โ”ดโ”€โ”€โ”€ MoA โ”€โ”€โ”€โ”
                                          โ”‚   โ”‚ Kimi / GLM    โ”‚
                                          โ”‚   โ”‚ ์˜๊ฒฌ ์ˆ˜์ง‘      โ”‚
                                          โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                          โ”‚
                                     IPC follow-up / host tools
                                          โ”‚
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Router โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ–ผ                            โ–ผ
                    paired_turn_outputs            Discord display

์‹œ์ž‘ํ•˜๊ธฐ

์š”๊ตฌ์‚ฌํ•ญ

  • Linux(Ubuntu 22.04+) ๋˜๋Š” macOS
  • Bun 1.3+
  • Claude Code CLI
  • Codex CLI
  • Discord ๋ด‡ ํ† ํฐ 3๊ฐœ(owner / reviewer / arbiter)

์„ค์น˜

git clone https://github.com/phj1081/EJClaw.git
cd EJClaw
bun install
bun run build:all

ํ™˜๊ฒฝ ์„ค์ •

  • .env.example๋ฅผ ๊ธฐ์ค€์œผ๋กœ .env๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์ฒด ํ‚ค ์„ค๋ช…์€ docs/configuration.md๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  • ์ตœ์†Œํ•œ ์•„๋ž˜๋Š” ๋จผ์ € ์ฑ„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
DISCORD_OWNER_BOT_TOKEN=
DISCORD_REVIEWER_BOT_TOKEN=
DISCORD_ARBITER_BOT_TOKEN=
CLAUDE_CODE_OAUTH_TOKENS=
OWNER_AGENT_TYPE=codex
REVIEWER_AGENT_TYPE=claude-code

์‹คํ–‰

bun run dev

๋ฐฐํฌ

bun run deploy

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ์„ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ตœ์‹  ์ปค๋ฐ‹ fast-forward pull
  2. ์ „์ฒด build
  3. migrate-room-registrations ์‹คํ–‰
  4. systemctl --user restart ejclaw

๊ฐœ๋ฐœ

bun run build
bun run build:runners
bun run test
bun run typecheck
bun run check

๋ฌธ์„œ

๋ผ์ด์„ ์Šค

MIT

Release History

VersionChangesUrgencyDate
v0.2.3## v0.2.3 ### Added - Added support for room-level reviewer and arbiter agent selection. ### Changed - Disabled latest owner-final carry-forward by default. - Added lightweight prior-task breadcrumbs so reviewer prompts can retain the previous owner/reviewer conclusions across superseded tasks. - Decoupled `unsafe host mode` from forced fresh Claude reviewer sessions so reviewers resume their session by default. ### Fixed - Fixed bundled Claude Code binary path resolution to improve runner stHigh4/22/2026
v0.2.1## Changed - Claude / Codex SDK๋ฅผ ์ตœ์‹  patch/minor ์ˆ˜์ค€์œผ๋กœ ๊ฐฑ์‹ ํ•˜๊ณ  runner ์˜์กด์„ฑ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. - reviewer ๊ฒ€์ฆ ๊ธฐ์ค€๊ณผ continuation/checklist mode ๊ณ„ํš ๋ฌธ์„œ๋ฅผ ํ˜„์žฌ ๊ตฌ์กฐ์— ๋งž๊ฒŒ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ## Fixed - stale reviewer workspace ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚จ์•„ ์žˆ์„ ๋•Œ reviewer๊ฐ€ ํ˜„์žฌ owner worktree ๋Œ€์‹  ์˜› ๊ฒฝ๋กœ๋ฅผ ๋ณด๋Š” ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - reviewer ํ”„๋กฌํ”„ํŠธ๋ฅผ `EJCLAW_WORK_DIR` ๊ธฐ์ค€ ๊ฒ€์ฆ์œผ๋กœ ๊ณ ์ •ํ•ด canonical clone์„ ๋‹จ๋… ๊ทผ๊ฑฐ๋กœ ์˜คํŒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. - stale owner run์ด buffered progress flush, tracked progress send/edit๋ฅผ ์™ธ๋ถ€๋กœ ์ƒˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. - Claude SDK `task_*` ์ด๋ฒคํŠธ๊ฐ€ nested/internal task๊นŒ์ง€ ๋ณ„๋„ subagent์ฒ˜๋Ÿผ ํ‘œ์‹œ๋˜๋˜High4/13/2026
v0.2.0 ### Added - owner / reviewer / arbiter ๊ธฐ๋ฐ˜ Tribunal 3-์—์ด์ „ํŠธ ํ๋ฆ„ ์ •๋น„ - MoA(Mixture of Agents) ๊ธฐ๋ฐ˜ ์™ธ๋ถ€ ๋ชจ๋ธ ์˜๊ฒฌ ์ˆ˜์ง‘ - `assign_room` ๊ธฐ๋ฐ˜ room assignment ๋ชจ๋ธ๊ณผ `room_settings` SSOT ์ •์ฐฉ - ์—ญํ• ๋ณ„ model / effort / fallback ์„ค์ • - reviewer host runtime read-only guard ๋ฐ host verification ๊ฒฝ๋กœ - Claude OAuth ๋ฉ€ํ‹ฐ ํ† ํฐ ๋กœํ…Œ์ด์…˜ ### Changed - reviewer๋Š” owner workspace๋ฅผ direct mount๋กœ ์ฝ๋Š” ํ˜„์žฌ ๋ชจ๋ธ๋กœ ์ •๋ฆฌ - final delivery ๊ฒฝ๋กœ๋ฅผ ๋‹จ์ผํ™”ํ•ด duplicate final ๋ฐฐ๋‹ฌ ๋ฌธ์ œ๋ฅผ ์ค„์ž„ - startup precondition์„ ์ „์šฉ ์˜ค๋ฅ˜ / exit code ์ฒด๊ณ„๋กœ ์ •๋ฆฌํ•ด crash loop๋ฅผ ๋ง‰์Œ - deploy ๊ณผ์ •์— `migratHigh4/11/2026
v0.1.0# EJClaw v0.1.0 First independent release of EJClaw, forked from nanoclaw. ## Highlights ### Tribunal 3-Agent System - Owner/Reviewer/Arbiter tri-agent architecture - On-demand arbiter summoning on deadlock detection - Both owner and reviewer can summon arbiter (BLOCKED/NEEDS_CONTEXT) - Mixture of Agents (MoA) โ€” external model opinions from Kimi/GLM ### Discord-Independent Inter-Agent Communication - `paired_turn_outputs` table for direct agent-to-agent data passing - Discord is display-onlyMedium3/30/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

nexuThe simplest desktop client for OpenClaw ๐Ÿฆž โ€” bridge your Agent to WeChat, Feishu, Slack & Discord in one click. Works with Claude Code, Codex & any LLM. BYOK, Oauth, local-first, chat from your phonev0.1.12
oh-my-piโŒฅ AI Coding agent for the terminal โ€” hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and morev15.9.5
openmatrixAI Agent task orchestration system with Claude Code Skills integrationmain@2026-06-03
@owloops/browserbirdAI agent orchestrator with a real browser, a cron scheduler, and a web dashboardv1.26.0
Perplexity-Comet-MCPNo descriptionmain@2026-05-31

More in Frameworks

langchainThe agent engineering platform
deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of ta
tqdmFast, Extensible Progress Meter
simBuild, deploy, and orchestrate AI agents. Sim is the central intelligence layer for your AI workforce.