Workflows that forget nothing.
Retry anything.
Ship in an afternoon.

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.

  • 01 Durable steps memoized across crashes & retries
  • 02 Native OpenAI · Anthropic · any LiteLLM provider
  • 03 Self-host on your infra — zero phone-home
runs / flow-8241 · order.process_orderLIVE
EVENTorder/createdstep.runvalidatestep.aifraud$0.04wait_forpaymentretry · 2/3notify_slackstep.runshipRETURNMODELgpt-4oTOKENS1,204 in · 88 outTIMEOUT24h
run_id 8241_a2f7·attempt 2/3·elapsed 00:01:42p95 280ms
↓ event sourced
memoized ✓
Powering teams shipping AI in production
§02PRIMITIVES

Plain async functions.
Unreasonable guarantees.

Four step primitives. Memoization, retries, and state handled behind the scenes. Write Python; get durability.

workflows/order.py
# 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
§03LIFECYCLE

From event to completion
in five acts.

  1. 01

    Event arrives

    An HTTP POST, a cron tick, a webhook, a queued message. Anything that fires in your stack can kick off a flow.

    POST /events
    order/created
  2. 02

    Function matched

    FlowForge dispatches the event to every registered function whose trigger matches — by name, by filter, by schedule.

    order/created✓ process_order
    order/created✓ notify_warehouse
    order/created− send_receipt
  3. 03

    Run enqueued

    A durable run record is written. Fair queueing ensures one noisy tenant can't starve the rest.

    RUN 8241
  4. 04

    Steps execute

    Each step.* call checkpoints to the store. Crash mid-flow? Redeploy? The run picks up exactly where it left off — no duplicate side-effects.

    validate · ✓
    fraud-check · ✓
    await-payment · …
    ship · pending
  5. 05

    Workflow completes

    The function returns. The run is sealed, results stored durably, and every side-effect is logged with full replay data.

    RUN 8241
    attempts 2 · steps 4/4 · 00:03:12
    ✓ COMPLETE
§04CAPABILITIES

Eight things
you'd otherwise build yourself.

Durability01

Steps that survive anything

Completed work is memoized and checkpointed. Crashes, deploys, and retries resume exactly where they left off.

validatecached · 0ms
fraud-checkcached · 0ms
await-paymentrunning …
shippending
Economics02

Cost attribution

Token spend per model, tenant, and workflow. No surprise bills.

$284.12
− 18% wk/wk
Observability03

Live SSE stream

Every tool call, decision, and event as they happen. Not a dashboard — a tap.

0.2sfetch_user_context
1.1sAnalyzing sentiment…
1.8ssearch_knowledge_base
2.4sResponse drafted
Control04

Declarative flow control

Concurrency, rate limits, throttling, debouncing — one decorator.

@flowforge.function(
  concurrency=5,
  rate="60/min",
  throttle="10s",
  debounce="2s",
)
Security05

Secure by default

Tenant isolation, scoped secrets, signed audit logs for every action.

Signing keyffk_live_•••• a2f7
Tenant isolationenforced
Audit logstreaming
SOC 2GDPRHIPAAISO 27001
Agents06

AI agents as team members

Named identities with skills, models, and live status. Track them the way you track people.

A
Atlas claude-sonnet-4.5
researchcodereview
running
M
Maya gpt-4o
summarizetriage
idle
K
Kepler o1-mini
planverify
waiting
Safety07

Human-in-the-loop

Approval queues for sensitive actions. Stay in control without stalling the pipeline.

Agent wants to issue refund of $420 to ORD-9218
Planning08

Task board

Kanban with human-readable IDs. Assign to humans or agents.

Todo 2
FF-14
Sync customer data
Doing 1
FF-12
Analyze churn
Done 2
FF-09
Summarize Q3
§05LICENSING

Free forever. Your infra,
your rules.

FlowForge is fully open-source. Clone it, run it, extend it — no license fees, no seat limits, no phone-home.

Self-hosted · MIT

Open Source

$0/ forever

Self-hosted. Full control. No limits.

  • Unlimited workflows & runs
  • All step primitives
  • Event triggers & cron schedules
  • Python & TypeScript SDKs
  • Agent team platform
  • Community support (GitHub)
FREE · OPEN · FOREVER · MIT · FLOWFORGE
Later this year

Cloud

TBDfair pricing, promise

A managed option for teams who don't want to run infra. Zero-ops deploys, shared skill registry, SSO.

  • Hosted orchestrator (multi-region)
  • Team workspaces & SSO
  • Shared skill registry
  • Managed secrets & audit
  • Priority support
Q2Self-host GA
Q3Cloud private beta
Q4Cloud GA
§06QUESTIONS

Answers, before you ask.

How is this different from Temporal or Inngest?
FlowForge is Python-first with native LLM primitives baked in from day one — not bolted on. 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.
What does “durable” actually mean here?
Every 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.”
Which model providers are supported?
Anything LiteLLM speaks: OpenAI, Anthropic, Google, Mistral, Bedrock, Azure, Ollama, and the long tail. Bring your own keys. Token usage and cost are attributed per step, per model, per tenant.
Can I run this on my own infra?
Yes — and it's the default. FlowForge is a single binary plus a Postgres-compatible store. Docker Compose, Kubernetes, a bare VM, a Raspberry Pi under your desk. No phone-home, no license server.
Is there a TypeScript SDK?
The Python SDK is the reference implementation. TypeScript is next and in active development — target parity with step.run, step.ai, step.wait_for_event, and step.invoke.
How do I migrate from a Celery / Bull / cron setup?
Incrementally. FlowForge functions coexist with your existing workers — point a few triggers at FlowForge, watch them run, move more over. Most teams migrate one pipeline at a time over a week or two.
— open source · self-host it anywhere

Clone the repo.
Ship your first durable
workflow in ten minutes.

$ pip install flowforge
$ flowforge init my-first-flow
$ flowforge dev
→ listening on :8288 · ready