ColibriDB. The Redis-compatible database that stays up and stays secure.

Automatic failover, mTLS, encryption at rest and an audit log. On your own servers or in Kubernetes.

The ColibriDB Admin console, Overview page: a banner saying all 7 nodes are healthy, the throughput chart for the last 30 minutes, and the nodes table.

Built to stay up.

When a primary fails, ColibriDB fences it off and promotes its replica on its own, and the console shows every step.

Acknowledged writes lost 0 Writes acknowledged 0

The Chaos Lab’s live Raft simulation: three nodes and a client writing about once a second. When the leader dies, the followers time out, vote, and one of them takes over. Writes pause only for the election.
The Topology page right after a failover: the primary of one slot is marked not answering, its in-sync replica now serves as primary and the epoch has advanced.
The Nodes page, Raft groups tab: the group's leader, term and shards led, and each member's role, lag and Raft address.
The Topology page after the failover: control plane, proxies and three slots, each with its serving primary, a Raft group with its leader crowned, and connectivity all reachable.
  1. Automatic failover

    A lease and an epoch fence the old primary, so it cannot take a write once its replica is in charge. No data moves. By default Admin promotes the replica only when most nodes agree the primary is down, so a split network does not trigger a failover.

  2. Raft shard groups

    Opt in to groups of three per slot: a majority commits each write and the group elects its own leader. Proven with Jepsen-style tests on real processes.

  3. Strictly linearizable

    With Strict synchronous replication, a write is acknowledged only once the replica holds it, so reads stay linearizable across a failover.

One console for all of it.

Topology, data, diagnostics, backups and alerts in one place, with roles, single sign-on and an audit trail behind every change.

Security you can see.

Closed by default, and graded for you. The posture page checks your deployment and links straight to each fix.

The Access page: the console's members with their roles, the side menu of access settings and a banner with the security checks that pass.
checkout:sess_7Hq2Lw9d
{
  "id": "sess_7Hq2Lw9d",
  "customer": "cus_4KfZ81",
  "email": "ana.morales@example.com",
  "items": [{ "sku": "LX-2201", "qty": 2 }],
  "amount": 12900,
  "currency": "USD",
  "status": "open",
  "expires": "2026-10-09T18:30:00Z"
}
On disk the value is sealed with AES-256-GCM: a 1-byte key id, a random 12-byte nonce, the ciphertext, as long as the stored value, and a 16-byte tag. The key stays readable: it is authenticated, not hidden.

Encrypted at rest

AES-256-GCM on every record, with a data key per shard wrapped by your own key: a local KEK or HashiCorp Vault Transit. Turn it on, rotate the key and turn it off from Admin.

mTLS everywhere

A built-in cluster CA issues short-lived certificates with SPIFFE identities for every listener and internal link.

Signed ACLs

Data users get rules per key prefix, deny by default. The ACL is signed with HMAC-SHA256 and verified before a node applies it.

Single sign-on

OIDC with PKCE through Entra ID, Okta, Keycloak or Google, with roles taken from your groups.

An audit log

Every sign-in and every change is appended to the audit log, where you can filter and export it.

Speaks Redis.

Point redis-cli, StackExchange.Redis, ioredis or redis-py at a node. Over RESP2 or RESP3 they work unchanged.

redis-cli, connected to a ColibriDB node
127.0.0.1:7474> SET sessions:7f3a9c1e '{"user":"m.ortega","device":"ios","locale":"es-CR"}' EX 3600OK127.0.0.1:7474> GET sessions:7f3a9c1e"{\"user\":\"m.ortega\",\"device\":\"ios\",\"locale\":\"es-CR\"}"127.0.0.1:7474> TTL sessions:7f3a9c1e(integer) 3599127.0.0.1:7474> HSET inventory:levels:AX-2210 name "Trail runner" stock 42 warehouse SJO-2(integer) 3127.0.0.1:7474> HGETALL inventory:levels:AX-22101) "name"2) "Trail runner"3) "stock"4) "42"5) "warehouse"6) "SJO-2"127.0.0.1:7474> HINCRBY inventory:levels:AX-2210 stock -1(integer) 41127.0.0.1:7474> MULTIOK127.0.0.1:7474(TX)> INCR checkout:orders:seqQUEUED127.0.0.1:7474(TX)> SET checkout:lock:88583 held EX 30QUEUED127.0.0.1:7474(TX)> EXEC1) (integer) 12) OK

See what is compatible

What teams run on it.

The Redis patterns you already know, on a database that fences its failovers and encrypts what it stores.

Sessions and cache

Values that expire on their own. Expiry is checked on every read and swept in the background.

SET session:7f3a '{"user":"m.ortega","plan":"pro"}' EX 3600
GET session:7f3a
TTL session:7f3a

Rate limits

A counter per client and minute. MULTI and EXEC apply the increment and its expiry together.

MULTI
INCR rate:203.0.113.9:28511
EXPIRE rate:203.0.113.9:28511 60
EXEC

Leaderboards

Sorted sets with scores, ranks and ranges, each update atomic.

ZINCRBY season:7 120 ada
ZINCRBY season:7 95 bob
ZREVRANGE season:7 0 9 WITHSCORES

Locks

One holder at a time, and a worker that crashes lets go after 30 seconds.

SET lock:invoice:8853 worker-7 NX EX 30
GET lock:invoice:8853
TTL lock:invoice:8853

Memory for AI agents

Vector search inside every node: an HNSW index per namespace, metadata filters, and an MCP server so agents can remember and recall.

curl -X POST "$COLIBRI_URL/vector/docs/search" \
  -H "Authorization: Bearer $COLIBRI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vector":[0.12,0.87,0.33],"k":5,
       "filter":{"metadata":{"lang":"es"}}}'

Measured, not claimed.

Every number says where it was measured. No borrowed benchmarks, and no comparisons we did not run.

0.3ms

p50 GET through the HTTP proxy, on a developer laptop.

1.2µs

A read from disk, with closed segments memory-mapped. It took 4.9 µs before.

≈100ms

Native AOT cold start, in a Linux container.

~2,100

Automated tests on every change.

13

Fuzz targets for parsers, file formats and servers. Every crash found is fixed and replayed.

0

Violations of the claimed consistency model in Jepsen-style histories with kills, partitions and clock skew.

Latency measured through the HTTP proxy on a developer laptop (macOS, arm64); the disk read in-process with scripts/bench.sh; the cold start in a Linux container. Your hardware will differ, which is why scripts/bench.sh is in the repository. Test counts change with every release.

Break it yourself.

A three-node Raft group runs live in this page. Kill the leader, cut the network or skew a clock, then read the verdict.

Open the full Chaos Lab

Ready for your platform.

Deploy it, watch it and connect to it with the tools you already run.

Deploy

  • Kubernetes operatorColibriCluster, ColibriBackup and ColibriRestore resources, rolling upgrades and cert-manager TLS.
  • Helm and DockerA Helm chart, Compose files and container images, including Native AOT builds of the node and the binary proxy.

Observe

  • Prometheus and GrafanaA /metrics endpoint, six Grafana dashboards and ready-made alert rules.
  • OpenTelemetryTraces and metrics over OTLP, sent to the collector you choose. Switch export on and set the collector in Admin.

Connect

  • SDKs.NET over the binary protocol, Python and TypeScript over HTTP, and a CLI.
  • Three protocolsHTTP, a pipelined binary protocol and RESP2/RESP3, behind stateless proxies. Pipelined writes from one connection share a group commit.

Recover

  • BackupsIncremental, content-addressed checkpoints to a filesystem or any S3-compatible bucket.
  • Point-in-time recoveryRestore to a moment between backups from the archived log.

AI

  • Vector searchAn HNSW index per namespace, with cosine, dot-product or L2 distance.
  • MCP serverAI agents read and write keys, vectors and session memory over stdio or HTTP.

Control plane

  • Admin high availabilityThree Admins form a Raft group, so the control plane has no single point of failure.
  • Online rebalancingAdd or remove nodes while the cluster keeps serving. A node that does not answer can be removed from Admin once you type its id.

Simple pricing, per cluster.

Business and Enterprise are priced per cluster. Try either one for 5 days on a hosted cluster, and annual billing gives you 2 months free.

Every plan starts with a 5-day trial.

A real ColibriDB cluster in the region you choose, used from your browser. Nothing to install, and you decide after.

Compare plans
FeatureWhere most teams startBusiness Production clusters that must not go down. $408 per cluster per month billed $4,900 a year Request a 5-day trial or talk to sales Enterprise Regulated workloads and zero-trust estates. $1,583 per cluster per month billed $19,000 a year Request a 5-day trial or talk to sales
Cluster sizeUnlimited nodes
5-day hosted trialIncluded
Engine, Admin console, TLS and basic ACLIncluded
Availability
Automatic failover with fencingIncluded
Strict synchronous replicationIncluded
Backups and point-in-time recovery to S3Included
Raft shard groups and a three-Admin control planeIncluded
Security
OIDC single sign-on and signed ACL data usersIncluded
Tenant quotasIncluded
Encryption at rest with Vault Transit KEK rotationIncluded
Audit log exportIncluded
Operations and support
Prometheus and Grafana packsIncluded
Kubernetes operator, private builds and Native AOT imagesIncluded
Support24/7, 1 hour for critical issues

Estimate your cost

Choose a plan and the number of clusters. A cluster is one independent ColibriDB deployment.

Plan
Per month
$408
Per year
$4,900
First-year total
$4,900

You save $980 a year with annual billing.

List prices in USD. Taxes, volume terms and your final agreement may differ.

Start in your browser.

Try ColibriDB in this tab in seconds, get your own hosted cluster for 5 days, or walk through the security model with the people who build it.