---
title: "0.16.0"
description: "0.16.0 is a rebase-the-whole-codebase release. The runtime has been migrated"
---

0.16.0 is a rebase-the-whole-codebase release. The runtime has been migrated
from TypeScript to plain JavaScript with type-only `.ts` stubs, the package
graph has been pruned and reorganized, and a new **live-run DevTools** surface
lands alongside a derived `RunState` model for richer run observability.

---

## Breaking changes

- **Runtime is now JavaScript, types live in `.ts` stubs.** Every runtime
  package (`smithers-orchestrator`, `engine`, `db`, `driver`, `server`, `cli`,
  `components`, `react-reconciler`, `agents`, `observability`, `time-travel`,
  `sandbox`, `scheduler`, `scorers`, `openapi`, `memory`, `vcs`, `graph`,
  `errors`, `protocol`, and `examples`) has been migrated to `.js` files with
  `.d.ts`-style type-only `.ts` stubs next to each module. Build, test, and
  import paths are unchanged, but anyone patching the runtime should expect to
  edit `.js` sources rather than `.ts`.

- **Removed packages.** The following have been deleted outright:

  - `packages/durables`: no longer used by the engine.
  - `packages/rag` and `packages/voice`: dropped from the product surface;
    matching metrics have been removed from observability.
  - `packages/tools`: the separate workspace package is gone. Public built-in
    helpers remain exported from `smithers-orchestrator` and
    `smithers-orchestrator/tools`: `tools`, `read`, `write`, `edit`, `grep`,
    `bash`, `defineTool`, and `getDefinedToolMetadata`.
  - Python SDK, examples, and integration code: smithers is TypeScript/JS only
    now.
  - `jjhub` workflows, the IDE / GitHub bot / Pi plugin integrations docs, and
    the Effect-ts integration doc page.

- **Tool context is no longer supplied by a standalone tools package.** Custom
  tools should accept the `defineTool()` context argument for retry-safe
  metadata such as `idempotencyKey`. The public `runWithToolContext()` helper
  still exists for integrations that execute Smithers tool helpers manually.

- **`observability` moved to `apps/observability`.** It remains the
  `@smithers-orchestrator/observability` workspace package, but its source now lives under
  `apps/` with the CLI and other app-owned surfaces.

- **`runtime` package renamed to `driver`.** Imports from `@smithers-orchestrator/runtime`
  should move to `@smithers-orchestrator/driver`. Runtime-adjacent helpers have been
  consolidated into the driver package.

- **Engine control APIs return `Effect`.** `engine.start`, `engine.stop`,
  `engine.resume`, `engine.pause`, and friends now return `Effect`s rather
  than plain promises. Callers that awaited the old promise API should run
  the returned effect through the engine's runtime.

- **`bunx smithers-orchestrator diff` now targets DevTools node diffs.** The old snapshot-pair
  shape (`diff <run-a>:<frame> <run-b>:<frame>`) has been replaced by
  `bunx smithers-orchestrator diff RUN_ID NODE_ID` with optional `--iteration`, `--json`, and
  `--stat`.

- **Stale semantic memory exports removed.** `createSemanticMemory` and
  `SemanticMemory` are no longer exported. Use `createMemoryStore`,
  `createMemoryLayer`, and `MemoryService` from the memory package surface.

---

## New: Live-run DevTools

A first cut of live-run DevTools lands in this release. It streams per-frame
JSX tree snapshots, node-level diffs, and per-node tool output over the
Gateway so that a debugger UI can follow an active run in real time and
scrub backwards through history.

- **Snapshot serializer and delta apply/diff.** `packages/devtools` now ships
  a stable serializer for React-reconciler trees, plus apply/diff helpers so
  clients can reconstruct any historical frame from a base snapshot and a
  delta stream.

- **Gateway DevTools stream + new HTTP routes.** The server exposes a live
  DevTools WebSocket stream and three new routes: per-node diff, per-node
  output, and jump-to-frame.

- **Jump-to-frame with rewind lock, audit, and rate-limit.** Time-travel jumps
  acquire a per-run rewind lock, write an audit row, and are rate-limited so
  that a runaway debugger client cannot thrash an active run.

- **Protocol additions.** `packages/protocol` gains `devtools`, `outputs`,
  and `errors` types for the new stream and routes.

- **DB: node-diffs cache + time-travel audit schema.** New tables back the
  DevTools stream so historical frames can be reconstructed without replaying
  the full event log.

- **Observability: DevTools + rewind metrics.** New metrics cover DevTools
  stream fan-out, rewind lock contention, and jump-to-frame latency.

- **React reconciler: devtools stop handling.** The reconciler now emits
  clean DevTools stop events when a run ends so clients can flush their
  buffers.

- **CLI: new `tree`, `output`, and `rewind` commands plus repurposed `diff`.**
  The CLI ships thin clients for the new DevTools routes so you can inspect
  per-frame trees, per-node outputs, node DiffBundles, and rewinds from the
  terminal without a GUI.

---

## New: CLI control plane

The CLI is now a fuller local control plane rather than just a workflow
launcher:

- **Interactive TUI.** `bunx smithers-orchestrator tui` opens an OpenTUI dashboard with runs,
  logs, metrics, node detail, frames, SQL browsing, chat, and attention panes.
- **Workflow workspace commands.** `bunx smithers-orchestrator init` installs the local
  `.smithers/` workflow pack, and `bunx smithers-orchestrator workflow list|run|path|create|doctor`
  discovers and manages workflows under `.smithers/workflows`.
- **Run inspection commands.** `ps`, `logs`, `events`, `node`, `why`,
  `watch`, `supervise`, `cancel`, and `down` now share the derived RunState
  model and emit machine-readable JSON when requested.
- **Agent and integration helpers.** `agents capabilities|doctor`,
  `openapi list`, `memory list`, cron management, and the semantic MCP server
  surface are now part of the CLI package.

---

## New: `RunState` model

A derived `RunState` view now lives in `packages/db/src/runState`. It takes
raw run rows, events, and timers and computes a single view-model with a
normalized state, block reasons, unhealthy reasons, and a heartbeat-staleness
check (`RUN_STATE_HEARTBEAT_STALE_MS`). The Gateway, CLI, and DevTools all
consume the same derived state, so a run looks the same from every surface.

See [the RunState runtime doc](/runtime/run-state) for the full shape.

---

## New: Workflow metadata

- **`WorkflowDefinition` gains `readableName` and `description`.** Used by the
  CLI, Gateway, and DevTools to render workflows with a human-friendly label
  instead of the programmatic ID.

---

## New: Durable alerts

Alert policy support now has a concrete storage and operator surface:

- **Typed `alertPolicy` metadata.** `createSmithers(..., { alertPolicy })`
  and workflow-level overrides carry owners, severities, runbooks, labels,
  and reaction metadata.
- **Expanded `_smithers_alerts` schema.** Alert rows now include
  fingerprint, node/iteration, owner, runbook, labels, reaction JSON, source
  event type, first/last fired timestamps, occurrence count, silence state,
  and acknowledged/resolved actor fields.
- **CLI alert management.** `bunx smithers-orchestrator alerts list|ack|resolve|silence`
  manages durable alert instances.
- **Important scope note.** Built-in runtime rule evaluators and delivery
  transports are not bundled in 0.16. Runtime integrations should evaluate
  policies and write alert rows through the DB adapter.

---

## Fixes

- **Prevent `SQLITE_IOERR_VNODE` under concurrent Worktree runs.** Multiple
  concurrent runs sharing a worktree no longer race on the SQLite DB file.

- **Fix resume for workflows without a user-defined input schema.** Resume
  used to crash when the workflow did not declare an input schema; it now
  resumes cleanly.

- **Fix `bunx smithers-orchestrator chat` to display agent tool calls and file changes.** Tool
  calls and file changes now render in the chat transcript instead of being
  silently dropped.

- **Default log level is now `warning` for `bunx smithers-orchestrator up`.** `bunx smithers-orchestrator up`
  output is quiet by default; opt into verbose logging explicitly.

- **Waiting-timer supervisor no longer double-resumes.** Regression covered
  by a new test in `apps/cli/tests` (#124).

- **Engine runtime split.** The engine's runtime implementation has been
  split into a dedicated module so Effect interop helpers and control APIs
  can be inlined without circular imports.

- **Package naming corrected for publish.** The public package is
  `smithers-orchestrator`; the private repository root is
  `smithers-monorepo`.

- **Generated workflow imports now use `smithers-orchestrator`.** The CLI
  scaffold and E2E fixtures no longer generate stale `smithers` imports.

---

## Docs

The documentation site has been rewritten end-to-end:

llms-full.txt has been reduced from 250k tokens to 66k tokens making it viable to put entire smithers docs in context

- New **Tour**, **How It Works**, and **Recipes** pages on the landing path.
- Hero pages (`start`, `installation`, `quickstart`) rewritten and merged
  into a single JSX overview.
- CLI reference converted to a TOON command catalog.
- Reference types condensed to a `.d.ts` dump, with the event union
  extracted as its own page.
- Runtime API pages slimmed; every component page compressed to props plus
  one example.
- Concept and guide pages consolidated; `memory` and `openapi` fleshed out,
  merged pages stubbed with redirects.
- Aggressive trim across the integrations surface; the IDE, GitHub bot, Pi
  extension, Pi plugin, and Effect-ts integration pages are gone.
- `bunx` invocation normalized across examples, design docs, and changelogs.
- Tickets restructured into `gui`, `jjhub`, and `smithers` directories.
- DevTools live-run UI spec and tickets added under `docs/tickets`.
- `docs.json` nav restructured; redirects added for merged pages.
- `llms-*` artifacts regenerated against the new MDX surface.

---

## Internal / chore

- **CI workflow files removed.** The `.github/workflows` directory is gone;
  CI is managed externally.
- **`bun.lock` replaced with `pnpm-lock.yaml`.** The monorepo uses pnpm for
  installs and `pnpm -r test` as the root test script.
- **Workspace package graph defined.** `packages/*` and `apps/*` now declare
  their dependency graph explicitly so changes propagate predictably.
- **Cursor rules, dev shell scripts, worktree-feature scripts, docs
  generation scripts, `AGENTS.md`, `DEVTOOLS_HANDOFF.md`, `.env.example`,
  and the Codex skill definition removed.** Repo surface trimmed to what
  ships.
