edict

Setup, sync, and runtime for multi-agent workflows. Bootstraps projects with workflow docs and companion tool configurations, keeps them synchronized across upgrades, and provides built-in agent loop subcommands with protocol guidance.
Eval Results
32 behavioral evaluations across Opus, Sonnet, and Haiku. The eval framework tests whether agents follow the edict protocol when driven autonomously through the botty-native spawn chain (hooks → botty spawn → edict run).
| Eval | Model | Score | What it tests |
|---|---|---|---|
| E11-L3 | Opus | 133/140 (95%) | Full lifecycle: 2 projects, 3 agents, cross-project coordination, security review cycle — all from a single task-request |
| E10 | Opus+Sonnet | 159/160 (99%) | 8-phase scripted lifecycle: 2 projects, 3 agents, cross-project bug discovery, review block/fix/LGTM |
| E11-L2 | Opus | 97/105 (92%) | Botty-native dev + reviewer: single project, review cycle through real hooks |
| R5 | Opus | 70/70 (100%) | Cross-project coordination: file bugs in external projects via bus channels |
| R4 | Sonnet | 95/95 (100%) | Integration: full triage → work → review → merge lifecycle |
| R8 | Opus | 49/65 (75%) | Adversarial review: multi-file security bugs requiring cross-file reasoning |
Takeaway: The full autonomous pipeline works. Agents spawn via hooks, coordinate across projects via bus channels, review each other's code via crit, and merge work through maw — all without human intervention. Friction comes from CLI typos, not protocol failures. See evals/results/ for all 32 runs and detailed findings.
What is edict?
edict is a Rust CLI (stable edition 2024) that:
- Initializes projects for multi-agent collaboration (interactive or via flags)
- Syncs workflow docs from embedded templates to
.agents/edict/ - Validates health via
doctorcommand - Runs agent loops as built-in subcommands (
dev-loop,worker-loop,reviewer-loop,responder) - Provides protocol commands that guide agents through state transitions (
protocol start,merge,finish, etc.)
It glues together 5 companion tools (bus, maw, br/bv, crit, botty) into a cohesive workflow and provides the runtime that drives agent behavior.
Install
# or from source:
Usage
# Bootstrap a new project (interactive)
# Bootstrap with flags (for agents)
# Sync workflow docs after edict upgrades
# Check if sync is needed
# Validate toolchain and project setup
# Run agent loops (typically invoked by botty spawn, not manually)
# Protocol commands — check state and get guidance at transitions
What gets created?
After edict init:
.agents/edict/ # Workflow docs (embedded in binary, synced to project)
docs/
triage.md # Find work from inbox and beads
start.md # Claim bead, create workspace, announce
update.md # Post progress updates
finish.md # Close bead, merge workspace, release claims
worker-loop.md # Full triage-start-work-finish lifecycle
review-request.md # Request code review via crit
review-response.md # Handle reviewer feedback (fix/address/defer)
review-loop.md # Reviewer agent loop
merge-check.md # Verify approval before merge
preflight.md # Validate toolchain health
cross-channel.md # Ask questions, report bugs across projects
report-issue.md # Report bugs/features to other projects
planning.md # Turn specs/PRDs into actionable beads
scout.md # Explore unfamiliar code before planning
proposal.md # Create and validate proposals before implementation
groom.md # Groom backlog
mission.md # Mission-based parallel dispatch (dev-loop)
coordination.md # Multi-agent coordination patterns
design/
cli-conventions.md # CLI tool design for humans, agents, and machines
prompts/
reviewer.md # Generic reviewer prompt template
reviewer-security.md # Security reviewer prompt template
hooks/ # Claude Code event hooks (SessionStart, PostToolUse)
.version # Version hash for sync tracking
AGENTS.md # Generated with managed section + project-specific content
CLAUDE.md -> AGENTS.md # Symlink
.edict.json # Project configuration
Workflow docs
The workflow docs in .agents/edict/docs/ define the protocol. These are embedded in the Rust binary as compile-time templates and synced to projects during edict init and edict sync.
When edict updates, run edict sync to pull the latest workflow doc changes.
Agent loops
Agents are spawned automatically via botbus hooks when messages arrive on project channels. The spawn chain:
message → botbus hook → botty spawn → edict run responder → edict run dev-loop
Agent loops are built-in Rust subcommands of the edict binary:
edict run responder— Universal router. Routes!dev,!q,!beadprefixes; triages bare messages.edict run dev-loop— Lead dev. Triages work, dispatches parallel workers, monitors progress, merges.edict run worker-loop— Worker. Sequential: triage → start → work → review → finish.edict run reviewer-loop— Reviewer. Processes crit reviews, votes LGTM or BLOCK.edict run triage— Token-efficient triage. Wrapsbv --robot-triagewith scannable output.edict run iteration-start— Combined status snapshot. Aggregates inbox, beads, reviews, claims.
No manual agent management needed — send a message to a project channel and the hook chain handles the rest.
Ecosystem
Edict coordinates five specialized Rust tools that work together to enable multi-agent workflows:
| Tool | Purpose | Key commands | Repository |
|---|---|---|---|
| botbus | Communication, claims, presence | send, inbox, claim, release, agents |
Pub/sub messaging, resource locking, agent registry |
| maw | Isolated jj workspaces | ws create, ws merge, ws destroy |
Concurrent work isolation with Jujutsu VCS |
| beads | Work tracking (br) |
ready, create, close, update |
Issue tracker optimized for agent triage |
| beads_viewer | Triage interface (bv) |
--robot-triage, --robot-next |
PageRank-based prioritization, graph analysis |
| crit | Code review | review, comment, lgtm, block |
Asynchronous code review workflow |
| botty | Agent runtime | spawn, kill, tail, snapshot |
Process management for AI agent loops |
Flywheel connection
Edict is inspired by and shares tools with the Agentic Coding Flywheel ecosystem. We use the same br (beads_rust) for issue tracking and bv (beads_viewer) for triage. The built-in edict run triage command wraps bv --robot-triage to provide token-efficient work prioritization using PageRank-based analysis.
How they work together
- botbus provides the communication layer: agents send messages, claim resources (beads, workspaces), and discover each other
- beads tracks work items and priorities, exposing a triage interface (
br ready,bv --robot-next) - maw creates isolated workspaces so multiple agents can work concurrently without conflicts
- crit enables code review: agents request reviews, reviewers comment, and changes merge after approval
- botty spawns and manages agent processes, handling crashes and lifecycle
edict configures projects to use these tools, keeps workflow docs synchronized, and runs the agent loops (edict run dev-loop, edict run worker-loop, etc.) that drive the entire workflow.
Architecture
Edict is a Rust project (edition 2024) with:
- Zero build step beyond
cargo build— workflow docs are embedded at compile time viainclude_str!and rendered withminijinja - Agent loops as subcommands —
dev-loop,worker-loop,reviewer-loop,responderare built into the binary - Protocol commands —
edict protocol start/merge/finishcheck preconditions and output guidance - Config migrations —
edict syncruns version-based migrations to update.edict.jsonand botbus hooks
See CLAUDE.md for full architecture docs, development conventions, and companion tool deep dives.
Cross-project feedback
The #projects registry on botbus tracks which tools belong to which projects:
# Find who owns a tool
|
# File bugs in their repo
See .agents/edict/docs/report-issue.md for full workflow.
Development
Runtime: Rust (stable, edition 2024). Tooling: clippy (lint), rustfmt (format), cargo check (type check).
# From ws/default/ (maw v2 bare repo layout)
This project uses Jujutsu (jj) for version control and maw for workspace management. Source files live in ws/default/, not at the project root. Run maw exec default -- <command> to execute commands in the workspace context.
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT