TL;DR: Temporal is durable execution infrastructure — you write workflows in code (Go, TypeScript, Python) that survive crashes and run for days. Ballet is a full agent operations product with Ask Ballet authoring, playbooks, connectors, and a Studio UI. Choose Temporal when you need a custom orchestration SDK; choose Ballet when you want a ready-made agent ops platform.
Temporal is an open-source durable execution platform. Developers define Workflows (deterministic orchestration logic) and Activities (side effects like LLM calls or API requests). Temporal persists event history so workflows resume exactly where they left off after failures, deploys, or long waits. In 2026 it positions heavily as the orchestration layer for production AI agents — human-in-the-loop signals, multi-day conversations, and agent sandboxes.
Temporal gives you primitives; you still build the product — auth, UI, connector registry, agent prompts, and ops dashboards. Ballet ships those layers: console agent, playbook editor, MCP tools, triggers, and run observability.
Think of it as: Temporal is the engine; Ballet is the car.
Both systems park a long-running process and wake it with an external signal — same product idea, different tokens:
runId + server-issued requestId on state.resume.In Ballet, a Code step calls metaphor.waitForInput to park mid-step as suspended. Studio Continue or POST /api/runs/:id/reply with that requestId wakes the same run. Discover park state via GET /runs/:id, SSE input_request, or the Studio curl snippet. See How do I wake a suspended run with reply or resume?.
Choose Temporal when:
Choose Ballet when:
Some teams may use both: Temporal for core product infrastructure; Ballet for internal agent ops and playbook automation. They are complementary, not direct substitutes.