Smart routing

A router agent classifies each request and dispatches it to the right specialist — no brittle if/else chains.

Context hand-off

Pass structured state between agents so each one starts with exactly what it needs — nothing more.

Parallel fan-out

Split a task across agents that run concurrently, then join their results with a reducer step.

Retries & recovery

Automatic backoff, fallbacks, and compensating steps so a single flaky tool call doesn't sink a run.

Durable state

Long-running workflows survive restarts and deploys — pause for hours, resume exactly where they left off.

Triggers & schedules

Kick off workflows from webhooks, queues, cron, or another agent — with idempotency built in.

How it runs

Declare the flow, not the plumbing

Describe agents and how they connect. The engine handles concurrency, state, retries, and ordering so you focus on behavior.

  • Typed edges between steps catch wiring mistakes before you ship.
  • Conditional branches and loops with cycle protection.
  • Sub-workflows you can version and reuse across teams.
workflow support_triage {
  router      → classify(ticket)
  // fan out to specialists
  billing     ⇶ when(category == "billing")
  technical   ⇶ when(category == "technical")
  human_gate  → approve_if(refund > $200)
  resolve     → send_reply()
}

Coordinate your first workflow

Wire two agents together in minutes and watch the engine handle the hard parts.