Skip to main content

FlowForge SDK

Python SDK for FlowForge - AI workflow orchestration with durable execution.

Installation

pip install flowforge-sdk

Quick Start

from flowforge import FlowForge, Context, step

flowforge = FlowForge(app_id="my-app")

@flowforge.function(
    id="my-workflow",
    trigger=flowforge.trigger.event("my/event"),
)
async def my_workflow(ctx: Context) -> dict:
    result = await step.run("process", lambda: "Hello, World!")
    return {"message": result}

Features

  • Durable execution with automatic checkpointing
  • AI agent support with tool calling
  • Multi-agent networks with routing
  • Human-in-the-loop approvals

Step Primitives

Inside a @flowforge.function, use the global step object:

from flowforge import step

# Run any function with memoization (won't re-run on replay)
result = await step.run("validate", validate_order, order)

# Pause until an event arrives
event = await step.wait_for_event("wait-payment", event="payment/received", match="data.order_id == 'abc'")

# Sleep for a duration
await step.sleep("wait-1h", "1h")

# LLM call with automatic retry
reply = await step.ai("summarize", model="gpt-4o", prompt="Summarize: ...")

# AI agent loop with tool calling
result = await step.agent(
    "research-agent",
    model="claude-sonnet-4-6",
    system="You are a research assistant.",
    messages=[{"role": "user", "content": "Research this topic..."}],
    tools=[...],
    max_tokens=4096,
    max_tool_calls=20,
)

Sending Events

# Send a single event
event_id = await flowforge.send("order/created", data={"order_id": "123"})

# Send multiple events
event_ids = await flowforge.send_many([
    {"name": "user/signup", "data": {"user_id": "1"}},
    {"name": "user/signup", "data": {"user_id": "2"}},
])

Run Management

# Get run details (status, steps, output)
run = await flowforge.get_run("761c0321-...")

# Retry a failed run in-place — keeps all memoized (completed) steps,
# only re-executes from the point of failure
result = await flowforge.retry_run("761c0321-...")

# Cancel a running or pending run
result = await flowforge.cancel_run("761c0321-...")

retry_run is different from replaying: it preserves the memoized results of all completed steps so execution resumes from where it failed rather than starting over from scratch.

Streaming Run Events (SSE)

Stream real-time events from a running workflow via Server-Sent Events:

from flowforge import FlowForge, RunEvent

flowforge = FlowForge(app_id="my-app", api_key="ff_live_...")

# Async iterator
async for event in flowforge.stream_run("run-uuid"):
    print(f"[{event.event_type.value}] {event.data}")

# With callback
async for event in flowforge.stream_run("run-uuid", on_event=lambda e: print(e)):
    pass

The stream automatically closes when the run completes or fails. Available event types:

  • step_started, step_completed, step_failed
  • thinking, thinking_chunk
  • tool_call_started, tool_call_completed
  • approval_required, approval_resolved
  • run_started, run_paused, run_resumed, run_completed, run_failed

Options:

async for event in flowforge.stream_run(
    "run-uuid",
    include_history=True,   # Include past events on connect (default: True)
    timeout=300.0,          # Server-side stream timeout in seconds (default: 300)
    on_event=my_callback,   # Optional callback for each event
):
    if event.is_terminal:
        print("Run finished:", event.data)

Release files for flowforge-sdk 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flowforge-sdk 0.4.2
File Size Uploaded
flowforge_sdk-0.4.2.tar.gz 42.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flowforge-sdk 0.4.2
File Interpreter ABI Platform
flowforge_sdk-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 95.2 kB

Release files / flowforge_sdk-0.4.2.tar.gz

Download URL flowforge_sdk-0.4.2.tar.gz
Size 42.7 kB
Tags Source
SHA-256 checksum
How to use checksums
71c875e251610f4f06756c33a9df5025d10157a75b2fd36e319a1a47b084287a
BLAKE2b-256 checksum
How to use checksums
c2d561fef71569bb27db43d3f08853293bb57dee6fcde39ac020c5483997851d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 2, 2026.

Transparency log

Release files / flowforge_sdk-0.4.2-py3-none-any.whl

Download URL flowforge_sdk-0.4.2-py3-none-any.whl
Size 52.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ebdfd0b3a398d3c69712e1850d131b57deba743bc088431c0cd6ba88dfd16cc4
BLAKE2b-256 checksum
How to use checksums
88b769dd9f292ee2b52343258db56ab4a01431a72db3a0ea0d4932cda21ecb7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page