Fluent builder
Compose pipelines with a chainable .do() API. Each step receives a shared
context object it can read and mutate.

Actioneer is a compact library for building pipelines of work. You describe your steps with a fluent builder, then hand the pipeline to a runner that executes it — either once, or concurrently across many inputs — with full control-flow semantics and lifecycle hooks along the way.
import {ActionBuilder, ActionRunner} from "@gesslar/actioneer"
class Doubler { setup(builder) { builder .do("double", ctx => { ctx.result = ctx.input * 2; return ctx }) .done(ctx => ctx.result) }}
const runner = new ActionRunner(new ActionBuilder(new Doubler()))console.log(await runner.run({input: 5})) // 10Fluent builder
Compose pipelines with a chainable .do() API. Each step receives a shared
context object it can read and mutate.
Concurrent runner
Run a single context with run(), or fan out across many with pipe() and
a configurable concurrency limit.
Real control flow
WHILE, UNTIL, IF, BREAK, CONTINUE, and SPLIT modes give you
loops, branches, and parallel sections inside a pipeline.
Lifecycle hooks
Attach before$ / after$ hooks to any activity for logging, setup, and
cleanup — by file path or pre-instantiated object.
Environment-aware
Works in Node.js, browsers, and browser-like runtimes such as Tauri, Electron, and Deno. The right variant is auto-detected.
No build step
Pure ES modules with shipped TypeScript declarations. Import from a CDN in the browser or from npm in Node.js.