Stopping a run or worker
s (stop run) / x (stop worker) work cross-process: the TUI and the engine run in separate
processes and share only the filesystem, so stop is a control file the engine polls.
- The TUI writes
.local/runs/<runId>/control.jsonatomically (tmp+rename). - The engine polls it every 500ms, aborts the targeted worker(s) — the loop adapter aborts its
in-flight HTTP stream, the CLI adapter
SIGTERMs its subprocess (thenSIGKILLafter a 2s grace) — and renames the file tocontrol.json.doneso it's processed exactly once. - A run-level stop also skips the remaining steps and the (unaborted) judge phase, so the run exits within ~1s rather than waiting on a slow worker's timeout.
- Stopped runs/workers settle to a new
cancelledstate, rendered as⊘(yellow). Partial streamed output is preserved.
A run-level stop transitions the run to cancelled, but individual steps reflect what actually
happened:
- A step that had at least one worker finish (
successorpartial) is recorded asdone— its output is preserved and counts toward the "N/M step(s) done" summary in the run detail. The step detail readsDone (stopped; K/N worker(s) finished)to make the partial nature visible. - A step with no completed worker (all cancelled or errored before producing output) is recorded
as
cancelled.
The judge phase is always skipped on stop (it would otherwise make extra unaborted LLM calls), and a
stopped-but-done step's winnerOutput still flows into any dependent steps.
Workflow Monitor — live phase/agent drill-down (w)
Press w on a selected run (from the fleet list or from a run's detail screen) to open the Workflow Monitor for that run. It replaces the current screen; Esc returns you to where you came from...
Foreground run wall-clock timeout — cyberine run --timeout <sec>
--timeout <sec> adds an inline wall-clock auto-kill to foreground cyberine run invocations. If the run (workers + judge) has not finished within the given number of seconds, an abort signal is sent to