The agents view
When several agents work for you at once, you need one place to see them. Syntic Code has two:
- The agents dashboard (
syntic agents) is a full-screen list of every background session on your computer, across all projects. Use it from any terminal to check on long jobs, read their logs, step into one, or clean up. - The in-session agents view (
←on an empty prompt, or/tasks) lists everything working for the session you are in: the main conversation, its subagents and the background work it started.
Quick start
syntic --bg "upgrade the test suite to the new fixtures API and get it green"
syntic --bg "write docs for every public function in src/export"
syntic agents STATE ID PROMPT FOLDER STARTED COST TOKENS
› running 08e14168 upgrade the test suite to the new fixtur… ~/code/shop 4m ago $0.38 212.4k
finished 5c1d0a2e write docs for every public function in … ~/code/shop 3m ago $0.21 96.0kSelect a row and press Enter to continue that session yourself, or l to read its log.
The agents dashboard
syntic agents opens the dashboard. It re-reads the list every two seconds, so new runs and state changes appear on their own.
What each row shows
| Column | Meaning |
|---|---|
STATE | running, finished, failed, stopped, interrupted or needs input. A run whose process vanished without finishing shows as failed. |
ID | The run’s short id. Any unique prefix works in the shell commands. |
PROMPT | The start of the task you gave it. |
FOLDER | Where it was started. |
STARTED | How long ago it began. |
COST, TOKENS | What it has used so far, read from its saved conversation. |
The state meanings are on Background sessions.
Keys
| Key | Does |
|---|---|
↑ ↓ (or k j), Home, End | Move the selection. |
Enter or a | Attach: leave the dashboard and open that session in the interactive screen, so you can continue it. |
l or → | Open the run’s log. |
s | Stop the selected run. You confirm with y; it is asked to stop, then forced after a few seconds. |
p | Prune: remove every finished, failed and stopped run and its log, after a y to confirm. Running sessions are never removed. |
r | Refresh now. |
q, Esc or Ctrl+C | Close the dashboard. |
In the log view:
| Key | Does |
|---|---|
↑ ↓ (or k j), PgUp, PgDn | Scroll. The view follows new output until you scroll up. |
End or G | Jump back to the newest output and follow it. |
a or Enter | Attach to this run. |
s | Stop this run. |
Esc, q, ← or l | Back to the list. |
Options
| Option | Does |
|---|---|
--cwd <path> | Only runs started in that folder or below it. |
--json | Print the runs as JSON and exit, for scripts and status bars. |
--list | List your custom agent definitions instead of the dashboard. |
When syntic agents is not run in a terminal (piped, or in a script), it prints the agent definitions, the same as --list.
Read the list from a script
syntic agents --json | jq -r '.[] | select(.state == "needs-input") | .id'Each entry has these fields:
| Field | Meaning |
|---|---|
id | The background run id. |
session_id | The conversation behind it, for syntic --resume. |
state | running, finished, failed, stopped, interrupted or needs-input. |
prompt, cwd | The task and the folder. |
started_at, ended_at, exit_code | Timing and how it ended. |
pid | The process id, while running. |
log | Path to its log file. |
cost_usd, input_tokens, output_tokens | Usage so far. Input tokens count fresh input only, not cache reads or writes. |
The same from the shell
Every dashboard action has a command, useful over SSH or in scripts:
| Command | Does |
|---|---|
syntic sessions (or syntic ps) | List runs. |
syntic logs <id> [-f] | Print the log; -f follows it. |
syntic attach <id> | Continue the run in this terminal. |
syntic stop <id> | Stop it. |
syntic respawn <id> | Restart an interrupted, failed, stopped or waiting run in the background. |
syntic rm <id> | Remove a finished run. |
syntic sessions --prune [--older-than <days>] | Remove old runs. |
The in-session agents view
Inside a session, press ← with the prompt empty, or run /tasks, to open the agents view. It lists the main session first, then each subagent and background agent this session started, with the running ones on top:
❯ ◉ main session fix the flaky parser test working · 1m 04s · 18.2k tokens
● Explore find every caller of parse_header running · 32s · 1 queued
✔ general-purpose write the migration tests done · 2m 10s · 9.4k tokensEach row shows the agent type, its task, its state, how long it has run and what it has used. A count of queued messages appears when other agents have sent it messages it has not read yet. Agents from earlier runs of a resumed session are listed too.
| Key | Does |
|---|---|
↑ ↓, PgUp PgDn | Select. |
Enter | Open that agent’s conversation (on the main session row, go back to the prompt). |
/ | Filter the list by typing; Enter keeps the filter, Esc clears it. |
s | Cycle which states are shown. |
x x | Stop the selected running agent (press x twice within three seconds). |
Esc | From a conversation, back to the list; from the list, back to the prompt. |
Ctrl+X then Ctrl+K stops every background agent at once, from anywhere in the session.
Open it automatically
{ "showAgentsViewByDefault": true }With this setting, the view opens by itself when background agents start.
Other places agents show up
- A live card under each
Agent(...)row in the transcript shows the subagent’s current activity, time and tokens, then folds to one line when it finishes. - The agent panel under the footer lists running agents at a glance.
/agentsmanages custom agent definitions (create, edit, delete) and has a Running tab with the same live list.
Where the state lives
Background runs are recorded in a background folder inside Syntic Code’s data folder (on macOS, ~/Library/Application Support/ai.syntic.syntic/background/), with one log per run. Each run’s conversation is saved like any other session, so syntic --resume <session_id> also works. See The .syntic folder.
Troubleshooting
| Problem | Cause and fix |
|---|---|
syntic agents prints agent definitions instead of the dashboard | It is not attached to a terminal (piped or in a script). Run it in an interactive terminal, or use --json. |
| The dashboard says there are no background sessions | Only runs started with syntic --bg, /background or /branch --bg appear. Subagents of an open session are in that session’s agents view (←). |
A run shows needs input | It asked for a permission that could not be granted unattended. syntic attach <id> to answer, or start such runs with the permissions they need (--allowed-tools, --permission-mode acceptEdits). |
A run shows interrupted | Its process ended without finishing, for example after a restart. syntic respawn <id> continues it; syntic respawn --interrupted continues all of them. |
| Disk filling with old runs and worktrees | Press p in the dashboard, or syntic sessions --prune --older-than 7. |