Skip to main content
Use the Effect builder when you want full control over typed step handles, Context.Tag services, Layer composition, and programmatic workflow graphs.

Prerequisites

  • Bun >= 1.3
  • TypeScript >= 5
  • SQLite access on the local filesystem

Install

Install the core builder dependencies:
bun add smithers-orchestrator effect @effect/sql drizzle-orm
If you plan to call hosted models, add the Vercel AI SDK packages you need. For example:
bun add ai @ai-sdk/anthropic

What Each Package Does

PackagePurpose
smithers-orchestratorWorkflow builder, durable runtime, SQLite helpers, CLI
effectEffect, Layer, Context.Tag, Schedule, and Schema
@effect/sqlModel and typed SQL integration
drizzle-ormSQLite client layer (uses bun:sqlite under the hood)
ai + @ai-sdk/anthropicOptional model integrations via the Vercel AI SDK

Minimal TypeScript Setup

Create a tsconfig.json like this:
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "verbatimModuleSyntax": true,
    "noEmit": true,
    "skipLibCheck": true
  }
}
The builder API does not require JSX configuration. Smithers should be configured the same way as the rest of an Effect app:
const AppLive = Layer.mergeAll(
  Smithers.sqlite({ filename: "./smithers.db" }),
  MyServicesLive,
  ObservabilityLive,
);
That is the core mental model:
  • dependencies are Context.Tags
  • infrastructure is a Layer
  • workflow steps are Effects
  • Smithers adds durability, retries, approvals, and orchestration

Next Steps