---
title: Introduction
description: What Smithers is and when to use it.
---

Smithers orchestrates AI coding agents at scale with composable, model- and harness-agnostic workflows. Most workflow systems fail quietly. A crash mid-run means lost work and a manual restart from scratch. Smithers solves this with a render-loop execution model: every completed step is persisted immediately, so the runtime always knows exactly what has finished and what to run next.

<Note>
This page is in the **For Agents** track. It is for AI harnesses and workflow authors who
need the runtime model. Human-facing docs live in the **For Humans** Guide, starting at
[What Smithers Is](/guide/what-is-smithers).
</Note>

Smithers runs your workflow on a render loop: each frame it asks "what has finished, and what can start now?" Tasks produce outputs validated by Zod schemas; the runtime persists them to SQLite. Crashes, restarts, and approvals are first-class, and the runtime resumes from the last persisted state without re-running completed work.

**Default authoring path - MDX prompts.** For most workflows you edit a plain Markdown file in `.smithers/prompts/` and the seeded TypeScript skeleton picks it up automatically. No build step, no TypeScript required. See [MDX Workflow Authoring](/guides/mdx-authoring).

**Advanced authoring - TypeScript SDK.** When you need branching, schemas, parallel fan-out, or loops, write the workflow as a JSX tree. Smithers renders the tree and drives execution:

```tsx
<Workflow name="review">
  <Sequence>
    <Task id="analyze" output={outputs.analysis} agent={analyst}>
      {`Review ${ctx.input.repo}`}
    </Task>
    {analysis ? (
      <Task id="fix" output={outputs.fix} agent={fixer}>
        {`Fix these issues:\n${analysis.issues.map(i => `- [${i.severity}] ${i.file}:${i.line} - ${i.description}`).join("\n")}`}
      </Task>
    ) : null}
  </Sequence>
</Workflow>
```

Use Smithers when:

- order matters across multiple AI or compute steps
- you need crash recovery
- humans must approve or answer questions mid-run
- different tasks need different models, tools, or policies
- operators need the [Gateway](/integrations/gateway) API to launch, stream, and approve runs programmatically

Don't use it for a single prompt → single response. Use your model provider's SDK directly; Smithers adds no value there.

## Read next

- [MDX Workflow Authoring](/guides/mdx-authoring) to change what your agent does without writing TypeScript.
- [Tour](/tour) for a working code-review example (TypeScript SDK).
- [How It Works](/how-it-works) for the execution model.
- [Why React?](/why-react) for the rationale behind the JSX runtime.
