Serverless, persistent Python workflows
Decorate your Python and get infinitely scalable infrastructure. Orchestrate millions of tasks with real code — no YAML DAGs, no JSON state machines. Long-lived workers with persistent state and automatic multi-cloud scaling.
Production-grade orchestration that stays just Python
Python-native workflows
Workflows and Steps are real Python programs — branching, loops, fan-out, fan-in and unlimited complexity. No config files, no YAML DAGs, no DSL to learn.
Persistent state & warm pools
Services are long-lived workers that persist across thousands of tasks. Connection pools stay warm, expensive setup runs once — sub-10ms responses, zero cold starts.
Sandboxed by design
Workflow code runs in an isolated process with zero access to credentials or secrets — enforced at the process level. Credential leaks become structurally impossible.
Scale without artificial limits
Steps run on async, CPU, or GPU workers, routed automatically. No timeouts, no quotas, no plan-based caps — scale to millions of concurrent tasks, bound only by your cluster.
Data sovereignty built in
Architected for multi-cloud from the ground up. Deploy the same codebase to GCP, the EU edge, or sovereign infrastructure — you control where data lives and who runs it.
Designed to feel effortless
Real config — no hidden glue, no proprietary DSL. Point it at the DigitalFrontier edge and deploy.
@app.step(sandboxed=True)
async def run_user_transform(data: dict, services=None):
# Isolated process — no credentials
return user_plugin.transform(data)
@app.step(gpu="A100")
def run_inference(data: dict):
# GPU worker pool
return model.predict(data)
@app.workflow
async def smart_pipeline(user_id: str, services=None):
user = await fetch_user(user_id, services=services)
result, prediction = await asyncio.gather(
run_user_transform(user), # -> sandbox
run_inference(user), # -> GPU
)
return {"result": result, "prediction": prediction}Get early access to Flow.
Tell us about your workload and we'll get you into the preview.