Actors, not orchestrators
Every workflow is an independent Orleans grain. No shared coordinator, no lock contention — add silos, get linear throughput.
Actors, not orchestrators
Every workflow is an independent Orleans grain. No shared coordinator, no lock contention — add silos, get linear throughput.
Scale reads separately from writes
Built-in CQRS split routes read traffic through a NoTracking query context and optional PostgreSQL replica. Learn how →
Event-sourced, crash-safe state
Append-only event log with deterministic replay. Silo dies mid-workflow? Orleans reactivates the grain on another silo — no orphaned state. Learn how →
Typed BPMN recovery paths
Compensation, error boundaries, and escalation events are first-class. Failure modes get explicit semantics, not ad-hoc try/catch.
In-memory hot path
Active workflows run from RAM — mid-workflow steps skip the database. Events batch into one transaction at the end of each grain call.
Materialized read projections
Admin UI and state queries read a pre-built EF projection. No event replay to render a list or poll for completion.
Run in your infrastructure
Fleans ships as a container image you can run anywhere — laptop, VM, or Kubernetes. Your data never leaves your network, and there is no SaaS dependency to ramp. Learn how →
Bring your own database
SQLite for laptops, PostgreSQL for production — selected at startup via a single config key, no code change. The provider model is open if you need to add another. Learn how →
Plug in your stream provider
Domain events flow through Orleans Streams. Default is in-memory; flip
Fleans:Streaming:Provider=kafka to use the bundled Kafka adapter for
cross-silo durability — or ship your own provider against the same
extension point.
Learn how →
Extend with your own tasks and workers
Wrap REST calls, queues, or any custom integration as a BPMN task by shipping a worker silo from a GitHub template. Engine and plugin hosts scale independently, so one workflow can fan out across your own fleet. Learn how →