Skip to main content

Installation

Smithers can be installed as a Claude Code plugin (recommended) or as an npm package for programmatic use. The plugin gives Claude Code the ability to generate Smithers orchestration workflows.
1

Add the Smithers marketplace

/plugin marketplace add evmts/smithers
2

Install the plugin

/plugin install smithers@smithers
Now you can ask Claude to create orchestration workflows:
You: "Create a workflow that reviews PRs and posts comments"
Claude: *generates pr-review-workflow.tsx*

npm Package

For programmatic use in your own scripts:
bun add smithers-orchestrator

Package Names

NameTypeUsage
smithers-orchestratornpm packageimport { ... } from "smithers-orchestrator"
smithersCLI binarysmithers db executions, smithers db state
smithers-orchestratorClaude Code skillPlugin provides this skill to Claude
The npm package and CLI binary have different names. Install smithers-orchestrator from npm, use the smithers command in your terminal.

Dependencies

Required

DependencyVersionPurpose
Bun1.0+JavaScript runtime
Claude CodelatestAgent execution

Bundled Dependencies

These are included as dependencies of smithers-orchestrator (not peer deps):
  • react - Reactive primitives for state management
  • bun:sqlite (reactive-sqlite wrapper) - SQLite for persistence
  • zod - Schema validation for structured output

Optional

DependencyPurpose
jj (Jujutsu)Alternative VCS with better snapshot support

Project Setup

TypeScript Configuration

Add JSX support to your tsconfig.json:
{
  "compilerOptions": {
    "jsx": "preserve",
    "jsxImportSource": "smithers-orchestrator",
    "moduleResolution": "bundler",
    "target": "ESNext",
    "module": "ESNext"
  }
}

Bun Configuration

Create a bunfig.toml for React JSX:
[dev]
jsx = "react"

Verify Installation

Create a test file test.tsx:
#!/usr/bin/env bun

import {
  createSmithersRoot,
  createSmithersDB,
  SmithersProvider,
  Claude,
} from "smithers-orchestrator";

const db = await createSmithersDB({ path: ".smithers/test" });
const executionId = await db.execution.start("Test", "test.tsx");

async function Test() {
  return (
    <SmithersProvider db={db} executionId={executionId}>
      <Claude model="haiku" maxTurns={1} onFinished={(r) => console.log("Success!", r.output)}>
        Say "Hello from Smithers!"
      </Claude>
    </SmithersProvider>
  );
}

const root = createSmithersRoot();
await root.mount(Test);
await db.close();
Run it:
bun test.tsx
You should see Claude respond with “Hello from Smithers!”

Troubleshooting

Make sure Claude Code is installed globally:
npm install -g @anthropic-ai/claude-code
Verify it’s in your PATH:
which claude
Ensure your bunfig.toml has the React JSX configuration:
[dev]
jsx = "react"
The SQLite database needs write access to the directory. Check permissions:
mkdir -p .smithers
chmod 755 .smithers

Next Steps