An agentic factory and control room for the Claw family of AI agent frameworks.
Eyrie orchestrates teams of AI agents into project hierarchies — commanders create projects, captains manage execution, talons specialize — while giving you a real-time dashboard to see everything happening and intervene at any level. Works with ZeroClaw, OpenClaw, Hermes, PicoClaw, and others to come.
v0.2.0 — This is an early alpha release intended for local development and experimentation. It binds to localhost only and has no authentication. Known security limitations:
- No request body size limits (large payloads can consume memory)
- No authentication or authorization (anyone on localhost can access the API)
- Agent-generated HTML previews are sandboxed but not sanitized
Do not expose Eyrie to untrusted networks. See TODO.md for the full list of known issues.
- Framework installation: install new agent frameworks from the dashboard or CLI
- Agent provisioning: create new agent instances with custom personas and configuration
- Lifecycle management: start, stop, restart any agent from one place
- Session management: browse, rename, reset, and delete conversation sessions
- Chat: talk to any agent with streaming responses and live tool call visibility
- Project workspace: split view with agent roster, hierarchy diagram, and @mention chat
- Agent hierarchy: three-tier structure (commander → captain → talons) for organizing agents into project teams
- Dual control: agents and users can both create projects, assign agents, and manage lifecycle — same API, same result
- Real-time visibility: SSE event streaming so the dashboard updates live whether changes come from the user or an agent
- Reliable connections — SSE streaming per-request instead of persistent WebSockets. Survives sleep/wake, network drops, and browser tab restores without losing messages or state. Agent responses are persisted incrementally so nothing is lost even if the connection drops mid-stream.
- Extensible adapter system — adding new Claw frameworks requires only a new adapter
- Three-tier hierarchy: Commander (strategy) → Captain (execution) → Talons (specialists)
- Project chat: multi-agent group conversations with @mention routing and automatic agent-to-agent handoff
- Mission control: dashboard with metrics, swim-lane timeline, and commander bar
- Project workspace: split view with agent roster, hierarchy diagram, and live chat
- Dual control: anything an agent can do, the user can also do via UI, and vice versa
- Persona catalog: browse and install agent personalities from a curated registry
- Activity timeline: per-project event feeds with tool calls, decisions, and progress tracking
- Agent profiles: inspect identity, soul, and memory for any persistent agent
- Go 1.21+ — install instructions or
brew install go - Node.js 22+ — required for the web UI (
nvm install 22or nodejs.org) - tmux — persistent terminal sessions (
brew install tmuxorapt install tmux)
Depending on which frameworks you install, you may also need:
- Rust — for ZeroClaw (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Python 3.11+ — for Hermes (
brew install pythonor python.org)
git clone https://github.com/Audacity88/eyrie.git
cd eyrie
cd web && npm install && cd .. # install frontend dependencies
make build # builds React frontend + Go binary
make install # adds to PATH; installs to ~/.local/bin/Using web dashboard (recommended):
# Start the web dashboard
eyrie dashboardUsing terminal:
# See all discovered agents and their status
eyrie status
# Get detailed info on a specific agent
eyrie status zeroclaw
# Tail logs from an agent
eyrie logs zeroclaw
# Install a new framework
eyrie install hermes| Command | Description |
|---|---|
eyrie status |
Show all discovered agents and their health |
eyrie status <name> |
Detailed status for one agent |
eyrie start <name> |
Start an agent |
eyrie stop <name> |
Stop an agent |
eyrie restart <name> |
Restart an agent |
eyrie logs <name> |
Tail logs in terminal |
eyrie activity <name> |
Stream activity events (tool calls, LLM requests) |
eyrie history <name> |
View conversation sessions and chat history |
eyrie config <name> |
View agent configuration |
eyrie discover |
Run discovery and show results |
eyrie dashboard |
Start web dashboard |
eyrie install |
List or install available frameworks |
eyrie version |
Version info |
Eyrie's config lives at ~/.eyrie/config.toml. It's optional — Eyrie works out of the box by auto-discovering agents from their standard config file locations.
[dashboard]
port = 7200
host = "127.0.0.1"
open_browser = false # set true to open the dashboard when Eyrie starts
[discovery]
interval_seconds = 30
[mesh]
# Optional. Used by the read-only local agent mesh dashboard.
# Keep private mesh data outside the public Eyrie checkout, for example in a
# private ops repo. `EYRIE_AGENT_MESH_DIR` takes precedence.
agent_mesh_dir = "~/eyrie-ops/docs/agent-mesh"
# Manually register remote agents
[[agents]]
name = "remote-zeroclaw"
framework = "zeroclaw"
url = "http://192.168.1.50:42617"Local mesh status lookup order: EYRIE_AGENT_MESH_DIR, then
[mesh].agent_mesh_dir, then an optional local-only docs/agent-mesh under the
current working directory or one of its parents. The public Eyrie repository does
not ship private mesh files.
Eyrie uses an adapter pattern: each Claw framework gets a dedicated adapter that translates the common Agent interface into framework-specific gateway calls. ZeroClaw speaks HTTP REST; OpenClaw speaks WebSocket RPC; PicoClaw uses a hybrid of REST and the Pico Protocol WebSocket. Eyrie handles all transparently.
Two presentation layers share the same adapter and discovery core:
- CLI (
eyrie status,eyrie logs, etc.) — one-shot commands with streaming or tabular output - Web dashboard (
eyrie dashboard) — React SPA served from the embedded binary
| Feature | ZeroClaw | OpenClaw | PicoClaw |
|---|---|---|---|
| Log streaming | SSE /api/events |
WebSocket logs.tail |
API polling /api/gateway/logs |
| Chat | WebSocket gateway | WebSocket RPC | Pico Protocol WebSocket |
| Session management | SQLite + gateway API | WebSocket sessions.list |
REST /api/sessions + JSONL |
| Tool call streaming | via claude-max-api-proxy SSE | WebSocket events | Not exposed (server-side) |
| Lifecycle (start/stop) | zeroclaw daemon |
openclaw CLI |
REST /api/gateway/{start,stop} |
| Config format | TOML | JSON | JSON |
Eyrie can install new agent frameworks from the CLI or web dashboard.
eyrie install # List available frameworks
eyrie install hermes # Install Hermes agent
eyrie install hermes --from zeroclaw # Install and copy config from existing agentInstallation proceeds through five phases:
- Binary (25%) — Download/build via cargo, npm, or install script
- Config (50%) — Scaffold default configuration or copy from an existing agent
- Discovery (75%) — Wire config path into Eyrie's discovery system
- Adapter (90%) — Set up the communication adapter (HTTP/WebSocket/CLI)
- Complete (100%) — Framework ready to use
The web dashboard shows real-time progress via SSE streaming. Installed frameworks show a purple "already installed" badge; available ones show a white install button.
The framework registry (registry.json) defines available frameworks with their install method, config format, default ports, and binary paths. make install copies it to ~/.eyrie/registry.json. For production, host the registry at a stable URL; Eyrie caches it locally at ~/.eyrie/cache/registry.json (24h TTL).
# Full-stack development (Go + React hot reload)
make dev
# Backend only
make dev-go
# Frontend only
make dev-web
# Production build
make build
# Install to ~/.local/bin
make installThe commander is the built-in LLM-driven orchestrator you chat with to manage projects and agents. It exposes a streaming SSE endpoint at POST /api/commander/chat. For quick terminal testing without the UI, use the commander-test CLI:
# Install to a directory on your PATH
go build -o ~/.local/bin/commander-test ./cmd/commander-test
# Send a prompt and stream the reply
commander-test "what projects do I have?"
# Print the saved conversation
commander-test -history
# Start a fresh conversation
commander-test -clearRequires an openrouter key in the Eyrie vault (~/.eyrie/keys.json) or the OPENROUTER_API_KEY environment variable. The default model is anthropic/claude-sonnet-4.6.
Eyrie can also run ZeroClaw's optional OpenRouter/Grok review gate with the openrouter key from the Eyrie vault. The key is injected only into the child process and is not written to the result file.
eyrie review-gate \
--input /path/to/review-gate/gate-input-grok-... \
--out /path/to/review-gate/grok-gate-result.mdUse --model to override the runner default, or --runner if the ZeroClaw review-gate runner is not in the standard Development checkout.
- ZeroClaw: Ensure
~/.cargo/binis in PATH (cargo sets this up automatically) - OpenClaw: Check
/usr/local/binis in PATH (standard on macOS) - OpenClaw dyld errors: Switch to Node.js v22 for compatibility on older macOS (
nvm use 22) - Eyrie: Run
make installto copy the binary to~/.local/bin/, which must be in PATH
All services use different ports and can run simultaneously:
- ZeroClaw gateway: 42617
- OpenClaw gateway: 18789
- Eyrie dashboard: 7200
- Provisioned instances: 43000-43999
- ZeroClaw:
~/.zeroclaw/config.toml(TOML syntax) - OpenClaw:
~/.openclaw/openclaw.json(JSON syntax) - Eyrie:
~/.eyrie/config.toml(optional — auto-discovery works without it)
make uninstall # remove the binary from ~/.local/bin/
rm -rf ~/.eyrie # optional: remove config and dataContributions are welcome! See CONTRIBUTING.md for setup instructions, coding conventions, and the PR process.
If you're not sure where to start, check the open issues for anything tagged good first issue or help wanted.
MIT