Skip to main content
Cloacina Documentation
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Cloacina

Cloacina

One workflow orchestration engine — two ways to run it. Cloacina runs durable, database-backed task pipelines (with retries and recovery) and in-process, event-driven computation graphs, for Rust and Python. Its only hard dependency is a database — Postgres or SQLite. No broker, no queue, no coordinator.

Pick the way that matches how you want it to live in your system — both are first-class:

Embed the library

Add cloacina (Rust) or cloaca (Python) as a dependency and run orchestration inside your application, against a database you already operate. No separate service to stand up. A permanent, production-legitimate way to run Cloacina.

Embed the library →

Run the service

Operate cloacina-server as a multi-tenant control plane — HTTP/WebSocket API, web UI, schema-per-tenant isolation, and horizontal scale. Ship workflows to it as .cloacina packages.

Run the service →

New here?

  • What is Cloacina? — the engine, the two ways, and the embedded-first principle.
  • Is Cloacina for you? — where it fits, where it doesn’t, and which door.
  • Engine & Primitives — the core objects (workflows, computation graphs, and more), described once for both languages.
  • Reference — APIs, CLI, HTTP/WebSocket, configuration.

The two primitives

  • Workflows — durable, database-backed DAGs; the task is the unit of scheduling. For work that must survive restarts and recover from failure.
  • Computation Graphs — in-process, event-driven DAGs; the whole traversal is the unit. For low-latency processing that reacts to a stream.

They compose, and both run through either door.