Skip to main content
The Smithers Monitor is a live browser view over every run in the workspace, all on one page. It ships inside the CLI with no .smithers/ pack or UI code required. Passing a built-in oneshot run id opens that run’s dedicated monitor instead, including live transcripts, steering, restart, and a cheap narrator that runs only while the monitor stays attached.

10-second quickstart

The command resolves the workspace’s singleton gateway like bunx smthrs ui does: explicit --gateway probe, then runtime-state discovery, then the legacy port probe on --port (default 7331). It autostarts bunx smthrs gateway when none is running (disable with --no-autostart; --no-daemon or SMITHERS_NO_DAEMON=1 disables daemonized autostart), opens /workflows/oneshot?runId= for a built-in oneshot or /monitor?runId= otherwise, and prints a { opened, url, gateway, runId, view } envelope. When the resolved gateway requires a bearer token, the printed/opened URL routes through the gateway’s browser session handoff (/v1/auth/session), which swaps the token for an HttpOnly cookie and lands on the clean URL; no more 401s from browser navigations. When nothing is reachable, the error names the runtime state file checked, the port probed, and the exact bunx smthrs gateway --host <host> --port <port> command to start one.

Remote access (Tailscale / SSH / LAN)

A gateway bound to loopback is unreachable from another machine. Pass --host 0.0.0.0 (or SMITHERS_GATEWAY_HOST=0.0.0.0) and the autostarted gateway binds every interface with an auto-minted bearer token (a non-loopback bind is never served unauthenticated). The CLI then prints one handoff URL per dialable interface (Tailscale 100.x first, then LAN), so the --no-open output is copy-pasteable to another machine. See Remote access. See Watching and steering a oneshot for the steering engine matrix, durable delivery states, restart semantics, and narrator cost discipline.

What you see

The overview is organized around triage: what needs you first, what is running now, and the operational numbers last.
  • “Needs you” band: pending approvals, human-parked runs, and failures from the last 24 hours, first on the page. Each section is row-capped and the rest collapses to “+N more”. Approvals decide in place (arm, then confirm), both in the inbox rows and in the health strip’s inline gates.
  • “Active now” band: one rich row per live run, sorted by triage priority.
  • Ops footer and Debug fold: throughput and count stats sit in a demoted footer with a Metrics link, and frames plus the raw XML tree tuck behind a Debug chip until you ask for them.
  • Keyboard kit: / focuses search, j/k move the cursor, Enter opens the cursor row, Esc backs out one level.
  • Run health and controls: always-on health diagnosis with one-click recovery where available, plus Pause, Resume, Cancel, approvals, and run-level Scores.
  • Execution history: the live expandable tree or XML view with per-node durations, a chronological Timeline, and a frame scrubber for earlier committed states.
  • Node investigation: a collapsible inspector where every section (Details, Prompt, Tool calls, Transcript, Output, Diff) unmounts when closed, so a closed Transcript stops polling in the background. The Prompt section shows the task’s initial prompt. Also live output, recorded output and tool calls, an AI “what happened” recap, scorer results, syntax-aware diffs, and an embedded PTY terminal to hijack or reopen supported agent sessions.
  • Events and navigation: a filterable live event log with timestamps and follow mode, shareable ?runId=/&nodeId= deep links, and ?embed=1 for the embeddable run surface.
  • Connection truth: Live, Connecting, Offline, and Unauthorized states, each with recovery guidance.
  • Launch attribution: run rows and headers show compact harness/session provenance and search it; explicit attribution prompts stay hidden from this shared dashboard and remain available only in inspect/raw config.

How it relates to the other surfaces

The monitor replaced the retired monitor workflow, which launched a durable agent run just to look at another run; this command observes directly through the gateway instead.