Skip to main content
Smithers 0.26.0 is a feature release. It adds first-class support for the Hermes agent runtime, makes every built-in workflow print something useful when it finishes, and fixes a few rough edges in the CLI. This release also rolls up the output-task and run-output work that was prepared as 0.25.5 and 0.25.6 but never published to npm, so npm goes straight from 0.25.4 to 0.26.0.

Agent integrations

Smithers now drops into the Hermes agent runtime, in both directions: the agent operates durable Smithers workflows, and a Smithers workflow can delegate a task back to the agent.
  • Hermes (Nous Research) gets a native Smithers plugin, which is richer than a bare MCP entry. It adds slash commands (/smithers run|ps|inspect|approve|deny|watch) usable in the Hermes CLI and every gateway it speaks to, a pre_llm_call hook that injects live run status and pending approval gates into Hermes on every turn, the smithers_run / smithers_ps / smithers_inspect / smithers_approve / smithers_deny / smithers_output / smithers_human_answer tools, and a bundled smithers:orchestrate skill. A new HermesCliAgent also lets a workflow <Task> delegate to the Hermes agent itself.
See Hermes for setup.

Every workflow run prints a useful result

A finished run used to print output: null even when the work produced something. Now it does not.
  • The workflow run / up summary prints the run’s output cleanly. It strips the internal run_id / node_id / iteration columns, unwraps a single row, and omits the field entirely when there is nothing to show, so a successful run never prints a noisy output: null.
  • Every built-in init-pack workflow, both the seeded ones (hello, create-workflow, route-task, and the rest) and the legacy-inline ones (plan, implement, review, debug, audit, and the rest), now ends with a deterministic output task that aggregates its genuinely useful terminal result: files changed, the plan steps, the chosen route, reviewer verdicts, the greeting, and so on. Add a final output task to your own workflows to control what their run prints.

CLI

bunx smithers-orchestrator memory list now works with no namespace. It lists every fact across all namespaces, grouped by namespace, instead of failing with a raw validation error. Passing a namespace still scopes to that one. The memory store gains a listAllFacts() method (and its listAllFactsEffect twin) that backs it.

Migration notes

No breaking changes are identified in 0.26.0. The new agent integrations and output tasks are additive; workflows that already ended with their own output task are unaffected. Because 0.25.5 and 0.25.6 never reached npm, installing 0.26.0 from 0.25.4 picks up all of their changes at once.