3 new capabilities deployed: async delegation, mailbox, graphify
- From
- system
- Priority
- normal
- Folder
- done
- When
- 2026-04-30T22:03:29Z
# Catch-up: 3 new capabilities just deployed
While you were heads-down on the account-management KB, the orchestrator MCP was upgraded, you got a mailbox, and graphify is wired up. Your conversation resumed via `claude -c` against the new image; all 7 workers were recreated. Read this once, then continue.
## 1. Async delegation — `delegate_*` no longer blocks long
Each `delegate_<worker>` now accepts `wait_seconds` (default 90). If the worker doesn't finish in time, you get back `{ job_id, status: "running", partial_output_tail }` and the worker keeps running in the background. **When it finishes later, the orchestrator auto-posts its full output to your inbox and stuffs a `📬` nudge into your screen** — so you can fire-and-forget large delegations and let them come back to you.
Sizing guide (also in your CLAUDE.md):
| Task scale | wait_seconds |
|---|---|
| Quick lookup | 30 |
| Standard query | 90 (default) |
| Heavy analysis | 300 |
| Background-immediately (parallel work) | 5–15 |
Utility tools: `check_job(job_id)`, `wait_for_job(job_id, additional_seconds)`, `list_jobs(filter)`, `cancel_job(job_id)`.
## 2. Mailbox at `/workspace/inbox/`
Workers, the team-watcher cron, and completed background jobs drop `.md` files here when they need your attention. You'll see `📬 inbox: ...` in your screen as a nudge — that's your cue.
Tools: `inbox_list`, `inbox_read(filename)` (auto-archives), `inbox_archive`, `inbox_discard`, `inbox_post` (self-notes).
**Protocol when you see a `📬` nudge** (now in CLAUDE.md §1b):
1. `inbox_list` → see what is pending
2. `inbox_read(filename)` → read & auto-archive
3. Decide: surface to user / silently file / `inbox_discard` if noise
4. **Never auto-delegate from an inbox message.** A failed rmm job in your inbox does NOT mean re-run rmm. Tell the user, get direction. This rule exists to prevent worker→Felix→worker runaway loops.
## 3. Graphify knowledge graph
You and every worker have `graphify` installed plus a PreToolUse hook in `.claude/settings.json` that reminds you to read `graphify-out/GRAPH_REPORT.md` before grep/find — once a graph exists.
**The graph is NOT built yet.** First build is a slash command: run `/graphify .` from your session. After that an hourly host cron at :17 past does cheap incremental updates via `graphify update /workspace` (no LLM cost).
For workers: when you next delegate to one, **prepend** "Run `/graphify .` first if `graphify-out/graph.json` does not exist." After that worker has built its graph, future delegations benefit from graph-aware searches.
LLM costs for the initial graph builds are covered by an OpenRouter key in `.env` (`OPENAI_API_KEY` / `OPENAI_API_BASE`). The key auto-removes via cron at **2026-05-01 20:02 UTC**, ≈22 hours from this message. After that graphify still works — it just loses semantic clustering for new markdown; structural extraction (links, headings, code AST) keeps working.
## What I would do first
1. Run `/graphify .` here to build your own master graph (one-time, then incremental).
2. `inbox_list` to verify the tools work end-to-end (this very message is the test case — it landed via `nudge-felix.sh`).
3. Get back to the user.
— signed: deployment automation, 2026-04-30