| name | crewcmd |
| description | Manage tasks, projects, agents, and inbox via the CrewCmd API. Use when creating, updating, listing, or dispatching tasks; managing projects; checking agent status; sending inbox items; or any task/project board operations. Replaces any external task board (Mission Control, Jira, Linear, etc.) when CrewCmd is the configured workspace backend. Triggers on: task creation, task updates, project management, agent dispatch, inbox operations, board queries, "create a task", "what's queued", "update the task", "mark as done". |
CrewCmd — Task & Agent Management
CrewCmd is the task board, inbox, and agent management backend. All task operations go through its REST API.
Connection
- Base URL: Provided via
CREWCMD_URL env var, or defaults to https://localhost:3000
- Auth: Send
Authorization: Bearer <HEARTBEAT_SECRET> for runtime-enabled API calls. Include X-CrewCMD-Runtime-Id and workspaceId or companyId when listing workspace data.
- Use
-k flag with curl (self-signed TLS in local dev).
Task Lifecycle
inbox → queued → in_progress → review → done
inbox: Unsorted, needs triage
queued: Ready for dispatch to an agent or human
in_progress: Actively being worked on
review: Work done, awaiting review
done: Complete
Core Operations
List tasks
GET /api/tasks?status=queued&priority=high&limit=10
Filters: status, agentId, humanAssignee, projectId, priority, unassigned=true, excludeHumanAssignee=true, since=<ISO|unix_ms>
Create task
POST /api/tasks
{
"title": "[Feature] Build X",
"description": "## Scope\n- [ ] ...",
"status": "queued",
"priority": "high",
"assignedAgentId": "forge",
"humanAssignee": null,
"projectId": "<uuid>",
"branch": "feat/x",
"repo": "org/repo",
"source": "manual",
"createdBy": "neo"
}
Priority: critical, high, medium, low. Status defaults to inbox if omitted.
Get task
GET /api/tasks/:id
GET /api/tasks/TSK-123
Supports UUID or TSK-NNN shortId format. Response includes projectContext if the task has a project.
Update task
PATCH /api/tasks/:id
{ "status": "in_progress", "assignedAgentId": "cipher" }
Updatable fields: title, description, status, priority, assignedAgentId, humanAssignee, projectId, prUrl, prStatus, branch, repo, reviewNotes, reviewCycleCount, sortIndex, source, images
Delete task
DELETE /api/tasks/:id
Task comments
GET /api/tasks/:id/comments
POST /api/tasks/:id/comments { "content": "...", "author": "neo" }
Projects
GET /api/projects
POST /api/projects { "name": "...", "description": "...", "status": "active" }
GET /api/projects/:id
PATCH /api/projects/:id
DELETE /api/projects/:id
Projects have a context field (markdown) that gets included with task responses for project-scoped tasks.
Inbox
Agent-to-human escalation and notifications.
GET /api/inbox?priority=high&status=unread&limit=10
POST /api/inbox { "title": "...", "body": "...", "priority": "high", "agentId": "forge" }
PATCH /api/inbox/:id { "status": "read" }
GET /api/inbox/stats
Agent Dispatch Pattern
When assigning work to an agent:
- Create or update task with
assignedAgentId and status: "in_progress"
- Include
branch, repo if code work
- Agent reports back by updating task:
status: "review", prUrl, reviewNotes
- Reviewer (human or sentinel) moves to
done or back to in_progress with reviewNotes
Heartbeat Schedules
GET /api/heartbeat-schedules
POST /api/heartbeat-schedules { "agentId": "neo", "intervalMinutes": 30 }
POST /api/agents/heartbeat { "agents": [{ "agent_id": "neo", "callsign": "neo", "status": "active" }] }
Heartbeat posts are mutations. Send Authorization: Bearer <HEARTBEAT_SECRET> and, when available, X-CrewCmd-Runtime-Id: <CREWCMD_RUNTIME_ID>.
Activity & Audit
GET /api/activity (recent actions feed)
GET /api/audit-log (full compliance trail)
Error Handling
401: Missing or invalid Bearer token (mutations only)
404: Task/project not found
409: Duplicate task (when errorHash matches existing non-done task)
503: Database not configured or connection failed
Conventions
- Prefix task titles:
[Feature], [Bug], [Chore], [Content], [Data], [QA]
- Use markdown checklists in descriptions for acceptance criteria
- One logical change per task; create follow-on tasks for downstream work
- Keep code tasks to small PR slices: target three files or fewer unless the change genuinely cannot be split
- Split docs, tests, refactors, dependency updates, and feature work into separate tasks/PRs
- Always include
createdBy when creating tasks programmatically
For full API reference including chat, runtimes, skills, blueprints, budgets, approvals, and more: read references/api-full.md.
Built-in OpenClaw tracing
CrewCmd now ships @axislabs/crewcmd-hooks, an OpenClaw hook pack that mirrors sessions_spawn / sessions_send dispatches into CrewCmd chat via /api/chat/messages. Install it from packages/crewcmd-hooks/scripts/setup-hook.sh on any runtime that should automatically record subagent work in the CrewCmd UI.