Features Overview
A single catalog of Cloacina’s capabilities. Each item links to the detailed tutorial, how-to, reference, or explanation. For whether Cloacina fits your problem, see When to Use Cloacina.
- Durable, database-backed execution — task and execution state persist in Postgres or SQLite; nothing lives only in memory.
- At-least-once with recovery — work is claimed atomically; failed or stalled work is recovered. Tasks and graph nodes must be idempotent.
- Automatic retries — configurable retry policies per task, including conditional retries.
- Content-versioned workflows — a workflow’s version is derived from its task code and structure, so changes are explicit and safe. See Workflow Versioning.
- Async-first — built on Tokio; blocking work is offloaded explicitly.
- Conditional task execution — per-task trigger rules (
all/any/noneover upstream task states) enable branching and conditional fan-in. See Trigger Rules. - External config & secrets — reference connections, secrets, and config by
name and resolve them from
CLOACINA_VAR_*environment variables at runtime (cloaca.var()/var_or()). See Variable Registry. - Two database backends, chosen at runtime — Postgres or SQLite via the connection URL, no recompile. See Database Backends.
- Workflows — durable DAGs of tasks with dependencies, retries, and recovery; the task is the unit of scheduling.
- Computation Graphs — in-process, deterministic, event-driven DAGs; the whole traversal is the unit.
- They compose — workflows can subscribe to a reactor and a task can invoke a computation graph.
These build on reactors and accumulators — see Concepts first if those terms are new.
- Accumulators — adapters that turn an external stream or source into boundary events (the discrete events a graph reacts to), in several flavors (passthrough, stream, polling, batch, state). See Accumulator Types.
- Reactors — fire a graph when their criteria are met (
when_any/when_all) with alatestorsequentialinput strategy. - Routing — enum-variant routing propagates results conditionally between nodes.
- Kafka stream accumulators — consume topics via the
kafkafeature; see Kafka Stream. - CEL firing filters — filter reactor firings with CEL (Common Expression Language) expressions; see Filter Reactor Firings with CEL.
- Cron schedules — run workflows on a schedule; see Cron Scheduling.
- Event triggers — start work from external events; see Event Triggers.
- Embedded library —
cloacina(Rust) /cloaca(Python) in your process. - Daemon —
cloacinactl daemonwatches a directory and runs packages locally. See Running the Daemon. - Server —
cloacina-server, an HTTP + WebSocket control plane. See Deploy a Server. - Compiler service —
cloacina-compilerbuilds uploaded packages in a sandbox. See Running the Compiler. - Execution-agent fleet —
cloacina-agentworkers run tasks off the server for horizontal scale. See Deploy an Execution-Agent Fleet and Execution-Agent Fleet.
.cloacinapackages — apackage.tomlplus source (Python module tree, or Rust compiled on the server at load). Scaffold, validate, pack, and upload withcloacinactl package. See Creating Your First Package and the Package Format.- Reconciler — the server loads and registers uploaded packages automatically. See Reconciler Pipeline.
- Schema-per-tenant isolation (Postgres) — see Multi-Tenancy and Configure a Multi-Tenant Deployment.
- API keys with roles — admin / write / read, managed via
cloacinactl keyand the API.
- Client SDKs — Rust, Python, and TypeScript clients for calling a running server over HTTP/WebSocket. See Client SDKs.
- Web UI — operate and observe a server: workflows, executions (with a live event stream), triggers, computation-graph health, package upload, and API-key management. See The Web UI.
- Observability — Prometheus
/metrics, structured logs, and optional OpenTelemetry export. See Observability and the Metrics Catalog. - Package signing — optional signature verification, enforced when the server runs with signatures required; signing private keys are encrypted at rest (AES-256-GCM). See Package Signing and Require Signed Packages.
- Build sandboxing — the compiler builds untrusted packages in an isolated environment (Linux). See Security Model.
- Horizontal scaling — stateless schedulers coordinate through the database. See Horizontal Scaling.
cloacinactl— the operator + developer CLI (daemon, server/compiler lifecycle, package, workflow, execution, tenant, key, trigger, graph). See the CLI Reference.- HTTP + WebSocket API — see the HTTP API Reference and WebSocket Protocol.