oneshot and the authoring loop right-size
the approach before doing work, review and eval verdicts stop conflating
“blocked” with “rejected,” and a run whose workflow you edited can resume
instead of forking. Underneath, the runtime moved to Effect 4.
Upgrading
Open the Monitor from any browser, on any machine
Pasting a monitor URL into a browser used to hit a 401, because the browser had no way to present your bearer token. The gateway now serves a session handoff endpoint:GET /v1/auth/session?token=<bearer>&next=<path> exchanges
a valid bearer for an HttpOnly session cookie and redirects to the page you
asked for. Every URL the CLI prints goes through it, so monitor, UI, and GUI
links open signed in.
The launch commands also stop assuming loopback, so the Monitor works over
Tailscale, a LAN, or an SSH tunnel:

The Monitor following a live run end to end: the run appears with a running status pill, the health banner reads Healthy while the execution tree progresses and events stream in, and it ends on Completed with 4/4 tasks done.
- A non-loopback bind mints a login token automatically, and a wildcard bind prints one dialable URL per interface, Tailscale first, then LAN.
- The session cookie is
SameSite=Lax, scoped to the gateway’s own port, and thenextredirect is constrained to a same-origin path, so the cookie stays yours: a cross-origin page cannot reuse it, and two workspace gateways on one host keep separate sessions. - Review printed URLs before sharing them: they carry a login token.
- When no gateway is reachable, the CLI error names the runtime state file it
checked, the port it probed, and the exact
smithers gateway --host/--portcommand to start one.
oneshot and authoring right-size the work first
smithers oneshot now routes a goal by its shape. A trivial edit is applied
directly, a well-scoped goal runs as a single strong agent, and only
genuinely multi-stage work expands into a full workflow, so a one-line change
no longer turns into a multi-node run.
create-workflow’s clarify stage does the same before it builds anything: it routes a trivial edit directly, points a well-scoped goal atsmithers oneshotwith the exact command, and scaffolds a workflow only for work that needs ordered stages.oneshotwarns on a dirty working copy and has the agent triage the tree before starting the goal, so pre-existing edits are not swept into its commits.smithers monitor <runId>is now steerable: a built-in oneshot opens its dedicated transcript, steer, and restart surface, while other runs open the all-runs Monitor.
Honest review and eval verdicts
Review verdicts distinguishblocked (required verification could not run for
an environmental reason, such as a missing service) from approved: false (a
real rejection), so infrastructure trouble no longer reads as rejected work.
Eval runs get the same treatment. A case that fails on a known harness
signature is graded INCONCLUSIVE instead of failed, and bunx smthrs eval
exits 5 (instead of 1) when every red case is inconclusive, so CI can tell
“the work regressed” from “the harness fell over.”
Resume a run whose workflow you edited
retry-task and up --resume accept --accept-workflow-change, so a run
parked on RESUME_METADATA_MISMATCH after an in-flight workflow edit can
continue instead of forcing a fork:
Local services stay reachable in the network sandbox
allowNetwork: false used to cut off everything, including the local dev
server or Postgres your task was testing against. It now means no egress:
loopback traffic, loopback binds, and unix sockets stay allowed while remote
endpoints stay denied, and a denial names the --allow-network escape hatch.
Approvals and the run UI
- Approval decisions bind to durable proofs, so a granted or denied decision is recorded against the exact attempt it answered and survives replay.
- A review panel’s seats are configurable, so you choose which models sit on a panel instead of taking a fixed roster.
- The gateway approval panel gains accessibility fixes, loading skeletons, and richer decision feedback.
New workflows in the pack
Each ships with its own live UI:pr-polish-panelandreview-since-publishfor reviewing and polishing work before it lands.whole-foods-meal-planneras an MCP-tool example andsmithers-repo-federationas a federation example.api-ab-benchmark, which compares the Effect and JSX authoring surfaces on the same task.- Merge-train workflows (
sol-issue-train,xcombo-fix-train,stacked-ship) that route issues through green-gated pushes. - First-class monitor workflows: drop a
.smithers/monitor/<workflowId>.tsxand the CLI launches it as a sibling run that watches, and can heal, each run of that workflow. The background monitor also breaks silence on retry churn and otherwise-quiet runs.

Touring a finished run in the Monitor: the execution tree with per-node ok pills and durations, the Timeline and Usage panels with rate-limit gauges, the Debug XML view of the workflow, the Frames scrubber, and the Notable/All/Activity event tabs.
Reliability fixes
- Resume honors ownership precedence and validates its metadata before reactivating a run, and registered accounts survive a resume.
- The run UI subscribes to live approval, run-event, and run-list feeds instead of stale snapshots, surfaces run-list transport failures, and decodes persisted UltraGrill and durable event frames correctly.
- Monitor health no longer goes stale, and a run’s durable sidecar identity is preserved across reads.
bunx smthrs usagereports Kimi Code subscription quota alongside the other providers.- The VCS layer rejects mutable jj pointers so a revert or time-travel lands on a stable revision.
- Studio toggles crons through idempotent upserts and hides cached runs after an unauthorized response.
Under the hood
- The runtime moved to Effect 4.0.0-beta.102 across the engine, scheduler, server, db, vcs, time-travel, sandbox, memory, and observability packages. Workflow and engine behavior is unchanged; the migration is a dependency and internals update.
packages/ui-coreextracts the runs domain (list filtering and sorting, tree building, event frames, diff parsing, health, view models) into one shared home, andpackages/tui-uiholds the pure TUI leaves (run tree, event log, status glyphs) built on it.- A new
coverWorkflowtesting helper drives component-level coverage with schema mocks, and a new zmux-based real-PTY e2e harness drives the TUI runs list and the Monitor mirror end to end. - Internal scripts and plugins now execute the working-tree Smithers, enforced by a repo check, so a checkout never silently runs a published build.
Upgrade notes
- Passing
--host(orSMITHERS_GATEWAY_HOST) tomonitor,ui, orguimints a login token automatically and prints one URL per dialable interface instead of the old loopback-only warning. Review printed URLs before sharing them. allowNetwork: falsenow permits loopback and unix-socket traffic. If you relied on it to isolate a task from local services, that isolation no longer holds; remote egress stays denied.bunx smthrs evalexits 5 when every red case is inconclusive. CI scripts that treat any nonzero exit as regression should special-case 5.- Runs stuck on
RESUME_METADATA_MISMATCHafter an in-flight workflow edit can resume with--accept-workflow-changeinstead of forking.
The full changelog
This page is the tour, not the inventory. The complete commit-level list is in CHANGELOG.md on GitHub. Found a bug?bunx smthrs bug files it with your run context
attached.