Steps that survive anything
Completed work is memoized and checkpointed. Crashes, deploys, and retries resume exactly where they left off.
Event-driven orchestration with automatic retries, step memoization, and native LLM integration. Write plain async Python — FlowForge handles durability, fan-out, and the 3 AM pager.
Four step primitives. Memoization, retries, and state handled behind the scenes. Write Python; get durability.
# Memoized step — completed work returns instantly on retry async def process_order(ctx: Context): order = await step.run( "validate", validate_order, ctx.event.data, ) if order["total"] > 1000: await step.run("flag", flag_high_value, order) return order
An HTTP POST, a cron tick, a webhook, a queued message. Anything that fires in your stack can kick off a flow.
FlowForge dispatches the event to every registered function whose trigger matches — by name, by filter, by schedule.
order/created✓ process_orderorder/created✓ notify_warehouseorder/created− send_receiptA durable run record is written. Fair queueing ensures one noisy tenant can't starve the rest.
Each step.* call checkpoints to the store. Crash mid-flow? Redeploy? The run picks up exactly where it left off — no duplicate side-effects.
The function returns. The run is sealed, results stored durably, and every side-effect is logged with full replay data.
Completed work is memoized and checkpointed. Crashes, deploys, and retries resume exactly where they left off.
Token spend per model, tenant, and workflow. No surprise bills.
Every tool call, decision, and event as they happen. Not a dashboard — a tap.
Concurrency, rate limits, throttling, debouncing — one decorator.
@flowforge.function( concurrency=5, rate="60/min", throttle="10s", debounce="2s", )
Tenant isolation, scoped secrets, signed audit logs for every action.
Named identities with skills, models, and live status. Track them the way you track people.
Approval queues for sensitive actions. Stay in control without stalling the pipeline.
ORD-9218Kanban with human-readable IDs. Assign to humans or agents.
FlowForge is fully open-source. Clone it, run it, extend it — no license fees, no seat limits, no phone-home.
Self-hosted. Full control. No limits.
A managed option for teams who don't want to run infra. Zero-ops deploys, shared skill registry, SSO.
step.ai() ships with retries, token tracking, and cost attribution at the step level, and the orchestrator understands agent identity. It's MIT-licensed, self-host-forever, and designed for teams shipping AI in production, not generic backend tasks.step.* call checkpoints its output to a durable store before continuing. If the process crashes, the machine is replaced, or you redeploy mid-flow, the next attempt resumes from the last completed step — without re-running side effects. It's the difference between “retry the job” and “retry the job and double-charge the customer.”step.run, step.ai, step.wait_for_event, and step.invoke.$ pip install flowforge
$ flowforge init my-first-flow
$ flowforge dev
→ listening on :8288 · ready