Skip to Content

Tasks

The Tasks panel (/tasks) gives you a real-time view of every unit of work agents are executing across your organization. When an agent is given a goal it decomposes into sub-steps, each step becomes a Task — trackable, interruptible, and arranged in a hierarchy that mirrors how the work was delegated.


What are Tasks?

Tasks are discrete work items created by agents during a chat session. An agent running a multi-step goal creates one top-level task and may spawn child tasks to delegate parts of that goal to sub-agents. Each task:

  • Has a title, optional description, and an output once complete
  • Is assigned to a specific agent
  • Carries a status reflecting where it is in its lifecycle
  • Links back to the chat and optionally a project it belongs to
  • Can have a checklist of sub-items tracked by the executing agent
  • Supports priority (low, medium, high) and blocked_by dependencies

The Task Board

Navigate to /tasks in the sidebar to see all tasks across your organization. Within a chat, the Tasks side panel shows only the tasks for that conversation.

Within a project, visit /projects/{id}/board for a per-project kanban view that groups tasks by status column.

The global /tasks view loads the 100 most recent tasks for your active organization, ordered by creation time. You can filter by chat_id or sub_chat_id via the API, or use the board view for a visual layout.

Tasks update in real time via WebSocket broadcasts. Status changes, new tasks, and deletions appear immediately without a page refresh.


Task Statuses

StatusMeaning
pendingCreated but not yet picked up by a worker
queuedAccepted by the dispatcher, waiting to start
in_progressActively being executed by the assigned agent
pausedSuspended (e.g. interrupted before dispatch)
completedAgent finished and produced output
failedAgent encountered an error; see last_error for details
blockedWaiting on another task listed in blocked_by
deadExhausted all retry attempts — requires human review

Failed tasks are automatically retried according to the configured retry policy (MAX_TASK_RETRIES, default 3). Tasks that exhaust all retries move to dead status, retrievable via the GET /api/tasks/dead endpoint.


Task Steps

Each task in in_progress status tracks TaskSteps — individual tool calls or actions the agent took while executing. Steps are visible in the task detail panel and show:

FieldDescription
NameThe tool or action invoked
LabelA human-readable description of what was done
Statuspending, running, success, or failed
ErrorSet when the step failed

For agents running inside the Claude Code CLI, steps are surfaced from the native Claude hooks and provide a per-action timeline.


Sub-Agent Tasks

When an orchestrating agent delegates work to a sub-agent, that sub-agent’s work appears as a child task linked via parent_id. The task hierarchy mirrors the delegation tree:

Root Task (parent_id: null) ├── Child Task A (parent_id: root) │ └── Child Task A1 (parent_id: A) └── Child Task B (parent_id: root)

Each child task may also spawn its own sub-chat — a separate conversation where the sub-agent works. The sub_chat_id field links the task to that sub-chat, and the hierarchy view (/hierarchy/{chatId}) renders the full agent tree visually.

Sub-agent task nesting is bounded by MAX_SUBDELEGATION_DEPTH (default 4). Tasks beyond this depth are rejected to prevent runaway recursion.


Interrupting a Task

Running or queued tasks can be interrupted from the task panel:

  1. Click the task to open its detail view.
  2. Click Interrupt and optionally provide a reason or a different agent to reassign the work to.
  3. The interrupt signal is sent via Redis. The executing agent’s loop picks it up on its next cycle and stops cleanly.

Interrupting a parent task cascades to all active child tasks — the entire sub-tree is stopped.

Pending (not yet dispatched) tasks are paused immediately without a Redis signal. If a replacement agent is provided, the task is reassigned and re-queued.


Project Board

Within any project, navigate to the Board tab (/projects/{id}/board) to see a kanban view of all tasks associated with that project’s chats. Tasks are grouped into columns by status. You can drag tasks between columns to manually update their status, set priority, and view the full task detail.


API Reference

Tasks are managed via the /api/tasks endpoints. Key operations:

MethodEndpointDescription
GET/api/tasksList tasks (org-wide, or filter by chat_id / sub_chat_id)
POST/api/tasksCreate a task manually
PATCH/api/tasks/{id}Update title, description, status, assignment, checklist, priority
POST/api/tasks/{id}/interruptSignal a running/queued task to stop
GET/api/tasks/deadList tasks that exhausted all retries
DELETE/api/tasks/{id}Delete a task

See the Projects API reference for the full task schema and board endpoints.