Open Source  ·  PostgreSQL & MySQL  ·  v0.3.0

Your database deserves better connections.

Keel multiplexes thousands of application connections into a lean pool — transparently, with zero code changes. Stop hitting connection limits. Ship faster.

100× more clients
<20µs overhead
5 min to deploy
PG + MySQL protocols
Scroll to explore

Connection limits are killing your scale

Most databases handle a few hundred simultaneous connections before performance degrades. When your app grows, you hit this wall — and paying for a bigger database doesn’t fix the underlying problem.

Without Keel
App Instance
App Instance
App Instance
App Instance
App Instance
… hundreds more
↓ 500+ direct connections
⚠️ Database Connection limit reached
vs
With Keel
App Instance
App Instance
App Instance
App Instance
App Instance
… hundreds more
↓ 500 app connections
Keel multiplexes → 25 backend conns
↓ 25 backend connections
Database Healthy & fast

The result: Keel serves 500 app connections using just 25 backend connections — a 20× reduction — while every query still completes normally. Your database never notices the traffic spike.

Built for production, simple to deploy

Everything you need to handle massive database load — and nothing you don’t.

Massive Multiplexing

Transaction pooling holds just 25 backend connections open while transparently serving thousands of simultaneous app clients. Your database stays well within its limit.

Zero Code Changes

Keel speaks PostgreSQL and MySQL natively. Change your app’s database host to Keel’s address. That is the only change required — no driver swaps, no query rewrites.

Automatic R/W Splitting

In smart mode, Keel automatically routes read queries to replicas and writes to the primary. Cut your primary load in half without touching your app.

Enterprise Security

SCRAM-SHA-256, TLS/mTLS, and cloud IAM authentication (AWS RDS, GCP Cloud SQL, Azure Database) are built in. Secure by default, configurable for your environment.

Kubernetes Native

Official operator, Helm charts, and Docker images. Auto-scales with your deployment and integrates with Patroni, CloudNativePG, and Percona XtraDB Cluster.

Full Observability

Prometheus metrics, OpenTelemetry distributed tracing, and a live admin console. Know exactly what is happening in your connection pool at every moment.

Up and running in 5 minutes

Three steps. No recompiling. No code changes. No drama.

1

Pull the image

Grab Keel from Docker Hub or download a pre-built binary.

shell
docker pull virtlabs/keel:latest
2

Create a config file

A minimal keel.ini with just three sections:

keel.ini
[keel]
port    = 6432
workers = 0   # 0 = one per CPU core

[pool]
mode          = transaction
max_pool_size = 25

[backend "primary"]
host = your-database-host
port = 5432
role = RW

Use the Config Builder →

3

Start Keel and connect

Run the container, then point your app at localhost:6432 instead of your database. Done.

shell
docker run -d \
  -p 6432:6432 \
  -v ./keel.ini:/etc/keel/keel.ini \
  virtlabs/keel:latest

One proxy, four modes

Pick the mode that fits your workload. Switch anytime with a hot reload — no restarts, no downtime.

proxy

Pure TCP passthrough with optional TLS termination. Minimal overhead, no pooling. Great for TLS offload or debugging.

smart

Everything in pool plus automatic read/write routing. Reads go to replicas, writes go to the primary. Zero app changes needed.

full

Maximum feature set: extensible hooks, horizontal sharding, audit logging, and distributed transaction tracking. For teams that need full control.