Long-running workflows need retries, queues, error handling, and monitoring β that's months of plumbing before you ship a single feature. Durable execution shouldn't require you to manage workers or learn a custom runtime.
GraphIngest lets you define workflows in plain code, deploy with one call, and run them on managed infrastructure β in Python, TypeScript, Go, JavaScript, or Java. Need AI agents? Built-in ReAct and tool calling are included.
from graphingest import graph, node
@node(retries=3, timeout=30)
def extract(url: str):
return fetch_data(url)
@node
def transform(raw_data):
return clean(raw_data)
@graph(name="etl-pipeline")
def pipeline(url):
data = extract(url)
return transform(data)Try It Out
Explore how GraphIngest works β no signup required. Run a mock pipeline, watch the real-time dashboard, or interact with an AI agent.
1from graphingest import graph, node23@node(retries=3, timeout=30)4def extract(url: str):5 """Fetch raw data from source."""6 return fetch_data(url)78@node(retries=2)9def validate(data: dict):10 """Validate schema and data quality."""11 return check_schema(data)1213@node14def transform(validated_data: dict):15 """Clean and normalize data."""16 return normalize(validated_data)1718@node19def load(clean_data: dict):20 """Write to destination database."""21 return db.insert(clean_data)2223@graph(name="etl-pipeline")24def pipeline(url: str):25 raw = extract(url)26 valid = validate(raw)27 clean = transform(valid)28 return load(clean)Click "Run Pipeline" to start
Watch tasks execute with mock data
Free tier available β no credit card required
Use Cases
GraphIngest handles the hard problems that break other orchestrators in production.
Vercel serverless functions timeout at 10s (Hobby) or 60s (Pro). GraphIngest dispatches tasks to Cloud Run workers asynchronously β your cron route returns instantly while pipelines run for hours in the background.
# Vercel cron triggers the pipeline β returns in <1s
# Pipeline runs for hours on managed infra
@graph(name="nightly-sync", timeout_seconds=7200)
def sync(): ...
deploy() # cron calls this endpointProcess 10,000+ documents in parallel with .map(). Each task gets its own timeout, retries, and caching β no cold starts, no connection limits, no 256KB state caps.
@graph(name="batch", timeout_seconds=3600)
def process(doc_ids: list[str]):
raw = fetch.map(doc_ids) # 10K parallel
processed = transform.map(raw) # auto-retry
return store.map(processed) # cachedRun multi-agent research pipelines with built-in ReAct loops, tool calling, and LangGraph integration. Fan-out 50 agents in parallel with rate limiting to stay within LLM API budgets.
@agent(name="researcher", tools=[search, scrape],
model="standard")
def research(query: str) -> str:
"""You are a research assistant."""
...
# Fan-out 50 agents in parallel
results = research.map(queries)When task 49 of 50 fails, restart from task 49 β not from scratch. Completed tasks return cached results instantly. Failed tasks land in a dead letter queue for review.
# Task 49 failed? Resume from exactly there.
client.restart_from_failure(flow_run_id)
# Tasks 1-48: cached results (0ms)
# Task 49: re-executed with retries
# Task 50: runs after 49 succeedsTrigger pipelines from any scheduler β Vercel cron, GitHub Actions, external webhooks. The platform handles execution, monitoring, and notifications regardless of how the run was triggered.
# Trigger from anywhere
client.trigger_flow_run(flow_id, parameters={
"source": "s3://bucket/data.csv",
"batch_size": 100
})
# Platform handles retries, timeouts, alertsImagine you run an AI writing tool β one enterprise customer kicks off 500 document generations at once, starving every other user. With GraphIngest, per-user concurrency limits cap them at 5 parallel runs, throttling keeps your OpenAI bill under control at 100 calls/min, and priority queuing lets paid users jump the line. One decorator, no custom infrastructure.
@graph(
name="process-upload",
concurrency=ConcurrencyPolicy(
limit=5, key="user_id"
),
throttle=ThrottlePolicy(
limit=100, period_seconds=60
),
priority=10
)
def process(user_id, file_url): ...Features
Production-grade primitives for building reliable data pipelines and AI agent workflows.
Define pipelines as directed graphs with @node and @graph decorators. Automatic dependency resolution and parallel execution.
Configurable retry policies with exponential backoff. Never lose a task to transient failures.
Concurrency limits, throttling, and priority queuing built into the SDK. No external config needed.
Per-node and per-graph timeouts with graceful cancellation. Keep pipelines on schedule.
Monitor runs, inspect task states, view logs, and track metrics from a single control plane.
Built-in ReAct agents and LangGraph support. Run multi-step AI workflows with tool calling, memory, and automatic tool routing.
How It Works
Use decorators to define nodes, edges, and retry policies. The SDK handles the rest.
Call deploy() and the platform handles everything. Auto-scales from zero to handle any load.
Watch runs in real-time on the dashboard. Debug failures with structured logs and traces.
SDKs
First-class SDKs with the same decorator-based API across all languages.
@node / @agent
node() / agent()
gi.Node() / gi.Agent()
node() / agent()
Node.create() / React.agent()
Why GraphIngest
Traditional orchestrators force you to manage workers and infrastructure. Serverless orchestrators lock you into one language and their cloud. GraphIngest gives you both simplicity and control.
One function call. No Dockerfiles, no CLI tools, no YAML.
Python, TypeScript, Go, JavaScript, Java β same API everywhere.
ReAct loops, tool calling, and LLM routing in the SDK β not bolted on.
Pay nothing at idle. Auto-scale to thousands of parallel tasks.
| Capability | Worker-based Orchestrators | Serverless Orchestrators | GraphIngest |
|---|---|---|---|
| Deployment | Workers + config | Add route to app | deploy() β zero config |
| Language SDKs | 1 (Python) | 1 (TypeScript) | 5 languages |
| Infra management | You manage workers | You manage app | Platform manages all |
| Scale to zero | yes | ||
| Parallel fan-out | Via external executor | No native support | .map() with auto-scale |
| AI agent support | Built-in ReAct + LLM | ||
| Dashboard latency | Polling (seconds) | Polling (seconds) | Real-time (instant) |
| Retry granularity | Re-run entire flow | Step-level | Resume from failure |
| Env variable mgmt | External blocks | You manage | Dashboard UI + env_path |
| Idle cost | Workers run 24/7 | Your infra cost | $0 when idle |
Pricing
Get started with generous free limits.
Managed infrastructure. Zero ops.
Join teams using GraphIngest to ship reliable data pipelines and AI agent workflows.