You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SCHEDULE (important + not-urgent) — Block time, protect from neglect
DELEGATE (not-important + urgent) — Assign to an AI agent
ELIMINATE (not-important + not-urgent) — Drop or defer
Agent Registry (Dynamic)
Agents are managed through mission-control/data/agents.json and the /crew UI. The 5 built-in agents are:
Role
Handles
Assign when...
me
Decisions, approvals, creative direction
Requires human judgment
researcher
Market research, competitive analysis, evaluation
Needs investigation
developer
Code, bug fixes, testing, deployment
Technical implementation
marketer
Copy, growth strategy, content, SEO
Marketing/content work
business-analyst
Strategy, planning, prioritization, financials
Analysis/strategy work
Custom agents can be created via /crew/new. Agent command files (.claude/commands/<id>/user.md) are auto-generated from the registry when agents are saved via the API.
Multi-Agent Tasks
Tasks support a collaborators field alongside assignedTo (lead). When collaborators are assigned:
All collaborators receive delegation messages in inbox
Task cards show stacked collaborator avatars
The orchestrator can spawn sub-agents for each team member
Skills Library
Skills are managed through mission-control/data/skills-library.json and the /skills UI. Skills contain markdown content that gets injected into agent system prompts when linked. Skill files (skills/<id>/SKILL.md) are auto-generated from the library.
Agent Write Strategy
Prefer API endpoints for writes. The API routes include:
Direct file reads are fine for speed. Reading JSON files directly (e.g., readFile("tasks.json")) is safe and faster than API calls. Use this for situational awareness.
Concurrent write safety: The API uses per-file mutexes (async-mutex). Two simultaneous API writes to the same file will queue, not corrupt. However, direct file writes bypass the mutex — always use the API for writes when possible.
Error recovery: If a task fails mid-execution:
Mark the task as in-progress with a note explaining the failure
Post a partial report to inbox (type: "report", subject: "Blocked: <task-title>")
Log a task_updated event to activity-log with error details
Do NOT mark the task as done
Agent Communication Protocol
Agents communicate through JSON files. The Mission Control UI reads these same files through API routes.
How to Read Your Inbox
1. Read mission-control/data/inbox.json
2. Filter messages where `to` matches your role
3. Filter by `status: "unread"` for new messages
4. Process delegations (type: "delegation") as new work assignments
5. Process questions (type: "question") by replying with answers
How to Post a Completion Report
1. Read mission-control/data/inbox.json
2. Add a new message:
{
"id": "msg_{Date.now()}",
"from": "<your-role>",
"to": "me",
"type": "report",
"taskId": "<task-id-if-applicable>",
"subject": "Completed: <task-title>",
"body": "<summary of work done, results, any follow-up needed>",
"status": "unread",
"createdAt": "<ISO timestamp>",
"readAt": null
}
3. Write the updated inbox.json back
How to Log Activity
1. Read mission-control/data/activity-log.json
2. Add a new event:
{
"id": "evt_{Date.now()}",
"type": "<event-type>",
"actor": "<your-role>",
"taskId": "<task-id-if-applicable>",
"summary": "<what happened>",
"details": "<extended context>",
"timestamp": "<ISO timestamp>"
}
3. Write the updated activity-log.json back
How to Request a Decision
1. Read mission-control/data/decisions.json
2. Add a new decision:
{
"id": "dec_{Date.now()}",
"requestedBy": "<your-role>",
"taskId": "<task-id-if-applicable>",
"question": "<what you need decided>",
"options": ["Option A", "Option B", "Option C"],
"context": "<background info>",
"status": "pending",
"answer": null,
"answeredAt": null,
"createdAt": "<ISO timestamp>"
}
3. Write the updated decisions.json back
4. Also log a "decision_requested" event in activity-log.json
How to Update Task Progress
1. Read mission-control/data/tasks.json
2. Find the task by ID
3. Update fields (kanban, subtasks, actualMinutes, etc.)
4. Always update "updatedAt" to current ISO timestamp
5. If marking done: set "completedAt" to current timestamp
6. Write the updated tasks.json back
7. Log a "task_updated" or "task_completed" event in activity-log.json
How to Check and Unblock Dependent Tasks
1. After completing a task, search tasks.json for tasks that have the completed task's ID in their "blockedBy" array
2. Those tasks are now potentially unblocked
3. If all their blockedBy dependencies are done, they can proceed
4. Post an update message to inbox.json notifying the assigned agent
Workflow Rules
Creating Tasks
Set importance AND urgency (required for Eisenhower matrix)
Set assignedTo based on work nature (see Agent Roles table)
The daemon is an autonomous background process that polls tasks.json, spawns Claude Code sessions via claude -p, and monitors their health. It uses node-cron for scheduled commands and enforces concurrency limits.