atriumatrium

Tasks & runs

Task cards, runs, and how agents work against them.

atrium has a built-in task tracker. Tasks are first-class workspace objects with status, priority, size, labels, comments, and a run history, and they live right next to your panes — not in a separate web app.

Where you work with tasks

  • Tasks list pane (Cmd+Shift+K) — a searchable, filterable list of every card in the active workspace. Fuzzy title and ATR-# matching, inline editors for status, priority, size, and workspace, and color-matched priority dots. Filters and grouping remember their last state per workspace. Click a card to open its detail pane.
  • Task detail pane (Cmd+Shift+J or clicking a task in the list) — full edit surface: title, rich Markdown description (with the same RTE/source toggle as the Markdown editor), status, priority, size, assignee, labels, due date, comments, and a live timeline of runs. The Save button is a split button with Save & Launch that commits changes and kicks off an agent run in one click.
  • Omni menu (Cmd+Shift+T) — fuzzy-search across every task in every workspace; prefix with # to scope directly to tasks. A Create task quick action creates a card from whatever you type.
  • Activity sidebar — agents working against a task show the task number on their card; click to jump.
  • CLI — every task action has a atrium task … equivalent for scripting and for agents to drive themselves. See the CLI reference.
See Tasks panes for the pane UIs in detail.

Task cards

A task card is one unit of work.

  • task_number — a human ID scoped to the workspace, formatted like ATR-42.
  • title — required, single line.
  • description — Markdown, edited in the detail pane with the same RTE/source toggle as the Markdown editor.
  • status_id — foreign key to a workspace-scoped Status row.
  • prioritycritical / high / medium / low. Rendered as a colored dot.
  • sizexs / s / m / l / xl.
  • assignee — free-form string; a user handle or an adapter ID.
  • label_ids — zero or more labels.
  • source — who created or touched the card, formatted as user:<name> or adapter:<name>.
  • current_primary_run_id — the active run, if any.
Tasks are scoped to a workspace. Each workspace has its own numbering, statuses, and labels.

Statuses and labels

Statuses and labels are workspace-configurable. Default statuses are Todo, In progress, and Done. Reorder them by dragging in the tasks list pane's status column header, or via atrium task status reorder. Same for labels.

Create, edit, and delete statuses and labels from the Settings → Tasks tab, or via CLI.

Runs

A run is a single execution segment of a task by an agent. A task can have multiple runs over its lifetime. A run ends when the agent completes the task, cancels it, or the pane is closed mid-work.

Run states:

  • active — an agent is currently working on this run.
  • interrupted — the pane closed or crashed before the agent completed or cancelled. Resumable.
  • completed — the agent called atrium task set-done or atrium run complete.
  • cancelled — user cancelled via the activity sidebar or CLI.
Each run captures a launch profile (adapter, flags, args) so resuming recreates the same environment.

The task detail pane shows every run in chronological order with inline output, a Replay button on completed runs, and a Cancel button on active runs.

Launching a task to an agent

From the task detail pane, click Launch to open a dispatch dialog:

  1. Pick a target pane (existing empty pane or create a new one).
  2. Pick an adapter.
  3. Optionally choose a review and completion status.
  4. Optionally set execution mode (worktree vs current branch) and adapter-specific flags.
  5. Press Launch.
This creates a run, binds the pane to the task, injects ATRIUM_TASK_ID / ATRIUM_TASK_RUN_ID into the pane's shell, and sends the task's title and description as the initial prompt to the agent.

For scripting, the CLI equivalent is:

"$ATRIUM_CLI_PATH" task launch ATR-42 \
    --pane-id <pane-id> \
    --adapter claude-code \
    --source user:me

The agent does work, then uses atrium task set-in-review (move to review status) or atrium task set-done (mark complete) to signal state changes. Both commands read $ATRIUM_TASK_RUN_ID from the environment, so the agent does not need to pass the run ID manually.

See Task dispatch for the full walkthrough.

Resuming interrupted runs

The tasks list pane shows an Interrupted filter chip that isolates runs in that state. Clicking an interrupted run opens a Resume dialog where you pick a fresh pane and adapter; atrium attaches a new segment to the same run and injects the same ATRIUM_TASK_ID / ATRIUM_TASK_RUN_ID into the new pane.

Equivalent CLI flow:

"$ATRIUM_CLI_PATH" run list --state interrupted
"$ATRIUM_CLI_PATH" run resume <run-id> --pane-id <new-pane-id>

Storage

Tasks and runs live in a SQLite database at ~/.atrium/tasks.db. The frontend reads from in-memory stores that hydrate from Tauri commands; every change is persisted immediately.

Safe to back up the file when atrium is not running. The schema is an internal implementation detail — use the CLI or the task panes for migrations between versions.