Skip to content

Run and monitor agents

The Agents page is where live agents live. Orchestrator console, loop agents, and one-off runs all converge here.

Agents pageAgents page

From a task:

  1. Open the task
  2. Ensure status is todo
  3. Click Start agent

From a workflow:

  • Workflows dispatch agents automatically on their run_agent steps. You don’t click anything.

From the CLI:

Terminal window
sybra-cli update <task-id> --status in-progress
# Workflow-less dispatch isn't a CLI command; use the GUI for one-offs.

Click any card on the Agents page. The detail view shows the live event stream.

Agent detailAgent detail

Four panes:

  • Stream — init / assistant / tool_use / tool_result / result events
  • Cost & tokens — updates on every result event
  • Session ID — copy to resume via claude -p --resume
  • Controls — send message, approve tools, kill

Type into the message box at the bottom. Press ⌘Enter to send. Sybra resumes the Claude Code session with your message as the next user turn.

Works in both modes:

  • Headless — message becomes the next claude -p --resume turn
  • Interactive — message is typed into the tmux pane

When require_permissions: true, the agent pauses on every tool_use. The event panel shows the pending tool and its arguments. Actions:

  • Approve — tool runs, agent resumes
  • Reject — tool is blocked, agent sees the denial and reasons around it
  • Approve always for this run — sticks for the rest of the session

You can also pre-approve tools by setting allowed_tools on the task before dispatch.

When an agent hits a budget (agent.max_cost_usd), turn count (agent.max_turns), or repeated errors, it escalates instead of silently stopping. The UI shows:

  • Continue — raise the budget/turn cap by 50% and resume
  • Kill — stop the agent, mark the task human-required
  • Increase limit — set an explicit new cap

Escalation reasons show in agent.escalation_reason. Common ones:

ReasonWhat happened
budget_exhaustedcost_usd exceeded agent.max_cost_usd
turns_exhaustedturn_count exceeded agent.max_turns
repeated_failureSame error thrown N times in a row
tool_deniedA required tool was denied

Click Stop. Sybra sends SIGTERM, waits 10 seconds, then SIGKILL if the process refuses to exit. Worktree cleanup respects commits: worktrees with unpushed commits are kept; empty worktrees are removed.

Orchestrator consoleOrchestrator console

The orchestrator is a long-lived conversational agent. Start/stop it from the Orchestrator tab. When running:

  • It polls new tasks and triages them
  • It dispatches agents up to agent.max_concurrent
  • It comments on stalled work via the monitor
  • You can talk to it in the console

Treat it as a teammate, not a service. Ask it questions. Tell it to ignore specific tasks. Ask it to explain a decision.

Recurring headless jobs. Live under the Loops tab.

LoopsLoops

Click New loop:

New loop dialogNew loop dialog

Fields:

FieldPurpose
NameDisplay only
PromptFull prompt sent to claude -p on every tick
IntervalSeconds between runs (min 60)
Allowed toolsSame semantics as tasks
Providerclaude or codex
ModelOverride the default
EnabledKill switch

Each loop is a YAML file under ~/.sybra/loop-agents/<id>.yaml. Persisted per-machine, so a laptop and a server have different loops.

Every loop has a Run now button. Forces a tick outside the normal schedule. Useful for testing.

# babysit PRs every 30 min
name: Babysit PRs
prompt: |
Check open PRs. For Renovate PRs with green CI, approve and merge.
For others, summarize blockers.
interval_sec: 1800
# morning standup every day at 09:00
name: Morning standup
prompt: |
Summarize yesterday's work from the audit log. Post to #daily.
interval_sec: 86400

The loop scheduler is a single ticker — loops don’t run concurrently with each other, but they run alongside normal agents.

  1. Open agent detail
  2. Click Increase limit
  3. Set new cap (e.g. $2.00 for expensive refactors)
  4. Agent resumes
  1. Stop the agent
  2. Open the task
  3. Press E, clarify the prompt with more context
  4. Press Stodo
  5. Start agent again

If this pattern repeats, the self-monitor will flag the task and suggest a prompt change.

”Agent made changes I want to abandon”

Section titled “”Agent made changes I want to abandon””
  1. Stop the agent
  2. Open Projects → the project → Worktrees
  3. Delete the worktree for this task

Sybra removes the branch on the next fetch cycle if it has no remote.

They can’t directly. Use workflows with needs_worktree: true and sequential run_agent steps so each sees the previous agent’s commits.