---
title: "Smithers 0.25.0: runs that survive rate limits, new agent tools, and workflows that ship code"
description: "The headline of 0.25.0: a long run that hits a provider rate limit now parks and resumes itself instead of failing. Plus five new built-in agent tools, workflows that open PRs and burn down your backlog, and typed workflow outputs."
---

Smithers 0.25.0 is a big one, around 450 commits since 0.24.2. Here is what
actually matters if you run agents.

## Your long runs survive rate limits now

The whole point of Smithers is a run that does not die. 0.25.0 closes the most
common way a long run used to die: a provider quota or rate limit.

When an agent hits a quota or rate-limit error (including the Claude 5-hour
window), the run parks in a new `waiting-quota` status instead of failing. It
records how long until the limit resets and resumes itself when it does. No lost
work, no babysitting. The classifier handles eight different quota and
retry-after patterns across providers, so it works whether the agent reports
"retry after 30s" or an ordinal reset date.

## Five new built-in agent tools

Workflows get a bigger out-of-the-box toolbox, and every tool sits behind a
provider seam so you never hard-code one vendor:

- **Grounded web search** fans a query across Exa semantic retrieval plus a fresh
  provider (Tavily, Brave, or Serper), dedupes by URL, and returns numbered
  citations.
- **A generic HTTP tool** lets an agent call any REST endpoint with no OpenAPI
  spec, with bearer/basic/header auth and timeouts.
- **Transcription** via Whisper or Deepgram from a URL or base64 audio.
- **Image generation** behind a pluggable provider.
- **Document and OCR parsing** turns a URL, file, or text into markdown via
  Firecrawl, Mistral OCR, or LlamaParse.

## Workflows that do real work

The init pack gained workflows that ship code and prove it:

- **`plan-implement-review-issues`** reads every open GitHub issue, treats each
  unchecked checkbox as a work item, skips anything that already has an open PR,
  groups what is related, and opens one deduped PR per group with `Closes #N`
  linkage.
- **`audit-burndown`** clears your ticket backlog one checkbox at a time in
  isolated worktrees, and gates every batch on a real `pnpm typecheck` and
  `pnpm test` against the merged main, so an agent cannot fake a green.
- **`bulletproof-audit`** and **`audit-fix-train`** score each feature across ten
  production-readiness dimensions and turn the backlog into landed code.
- **`<Sidecar>`** runs a cheaper model in the shadow of your primary on the same
  prompt and scores both, so you can measure whether the cheap model is good
  enough before you switch.

## Typed workflow outputs

`ctx.output`, `ctx.outputMaybe`, and `ctx.latest` now infer the row type from the
table you pass, so `ctx.outputMaybe(outputs.research, ...).summary` typechecks
instead of handing back an untyped record. Workflow authoring stops fighting
`unknown`.

## Interactive runs replace the tui

The standalone `tui` command folded into `up --interactive` and
`workflow run --interactive`: a fuzzy workflow picker, input prompts, a live
status card, and inline approval and human gates. A bare `up` on a TTY launches
it too.

## Also in 0.25.0

Durability is now backend-pluggable: it runs on Postgres and PGlite alongside
SQLite, and `bunx smithers-orchestrator migrate` moves a legacy store forward (a
missing migration fails loud rather than reading stale data). The Gateway grew
the sync layer the upcoming UI is built on: typed read RPCs plus TanStack DB
collections and React hooks. Around 160 fixes landed across the CLI, gateway,
scorers, OpenAPI, and agents, and CI is green on a clean, browser-free box.

There is also an early peek at where the real UI is headed at
[ui-preview.smithers.sh](https://ui-preview.smithers.sh). It is a preview of the
direction, not a release yet.

## Upgrade

```sh
bunx smithers-orchestrator@0.25.0
```
