Skip to content
Browse documentation

High availability

The policy evaluator is stateless and scales horizontally. The decision log is the one component that needs a real replication story.

Availability design in Cirvix follows from one principle: an authorization system that fails open is worse than one that fails slowly. Every failure mode below is designed around staying closed.

What can fail independently

ComponentFailure modeMitigation
EvaluatorPod or process crashStateless — add replicas behind the gateway
GatewayNode lossMultiple replicas behind a load balancer
Decision logDisk or node lossReplicated append-only store plus an external checkpoint witness
Approval channelSlack outageFalls back to email or the approve CLI queue

Fail-open or fail-closed

Fail-closed is not configurable, and that is deliberate. An empty or unparseable rule set denies everything; an unknown condition operator fails closed; a control-plane outage leaves the last cached rule set enforcing rather than opening the door. There is no fail_open setting, because the setting that turns this off is the one nobody discovers until it is being used against them.

Running more than one instance

The evaluator and gateway are stateless enough to run behind your existing load balancer. The decision log's replication topology depends on the consistency guarantee you need for the audit chain, which is a decision to make with your own infrastructure team rather than a default Cirvix can safely pick for you. Note that the bundled control plane is single-writer and the Helm chart pins one replica; multi-region replication and regional data isolation are not features Cirvix implements today.

Note
No uptime SLA or RTO/RPO figure is published here. Cirvix is in private beta, and any such number today would be a target rather than a measurement — see the note on benchmarks in Security.
Edit this page on GitHub
Was this page helpful?