Embedded SQL database built for AI agents with realtime change feeds.
10K+
KalamDB is a SQL-first realtime backend for agent-native apps. Give AI agents one SQL tool to your app data, while your frontend subscribes to live rows from the same backend.
It combines in one runtime:
The Docker image includes:
kalamdb-serverkalamkalam-clidocker pull jamals86/kalamdb:latest
docker run -d \
--name kalamdb \
-p 2900:2900 \
-e KALAMDB_SERVER_HOST=0.0.0.0 \
-e KALAMDB_ROOT_PASSWORD=kalamdb123 \
-e KALAMDB_JWT_SECRET=replace-with-a-32-char-secret \
-v kalamdb_data:/data \
jamals86/kalamdb:latest
curl http://localhost:2900/health
curl http://localhost:2900/v1/api/healthcheck
curl -X POST http://localhost:2900/v1/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"root","password":"kalamdb123"}'
curl -X POST http://localhost:2900/v1/api/sql \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"sql":"SELECT 1 AS ok"}'
cd docker/run/single
export KALAMDB_JWT_SECRET=replace-with-a-32-char-secret
docker compose up -d
By default, the single-node compose file publishes KalamDB on http://localhost:8088.
cd docker/run/cluster
export KALAMDB_JWT_SECRET=replace-with-a-32-char-secret
docker compose up -d
Cluster endpoints:
http://localhost:2901http://localhost:2902http://localhost:2903Single node:
KALAMDB_JWT_SECRET=replace-with-a-32-char-secret \
curl -sSL https://raw.githubusercontent.com/kalamdb/KalamDB/main/docker/run/single/docker-compose.yml | docker compose -f - up -d
3-node cluster:
KALAMDB_JWT_SECRET=replace-with-a-32-char-secret \
curl -sSL https://raw.githubusercontent.com/kalamdb/KalamDB/main/docker/run/cluster/docker-compose.yml | docker compose -f - up -d
If the Admin UI is enabled in your image and config, open:
http://localhost:2900http://localhost:8088http://localhost:2901Useful API endpoints:
GET /healthGET /v1/api/healthcheckPOST /v1/api/auth/loginPOST /v1/api/sqlThe image includes both kalam and kalam-cli.
docker exec -it kalamdb kalam --version
docker exec -it kalamdb kalam-cli --version
The image includes bash for direct shell access:
docker exec -it kalamdb bash
docker exec -it kalamdb kalam --help
docker exec -it kalamdb kalam-cli --help
docker exec -it kalamdb /usr/local/bin/kalamdb-server --help
# View logs
docker logs -f kalamdb
# Stop container
docker stop kalamdb
# Start container
docker start kalamdb
# Remove container
docker rm -f kalamdb
# List volumes
docker volume ls
# Inspect persisted data volume
docker volume inspect kalamdb_data
These are the most useful environment variables for setup and day-to-day use.
| Variable | Purpose | Example |
|---|---|---|
KALAMDB_SERVER_HOST | Bind address inside the container | 0.0.0.0 |
KALAMDB_ROOT_PASSWORD | Root user password for initial login | kalamdb123 |
KALAMDB_JWT_SECRET | JWT signing secret, should be at least 32 chars | super-secret-value |
KALAMDB_LOG_LEVEL | Logging level | info |
KALAMDB_PORT | Host port override in single-node compose | 2900 |
KALAMDB_ALLOW_REMOTE_SETUP | Allow initial remote setup in Docker-based development flows | true |
KALAMDB_CLUSTER_ID | Cluster identifier for multi-node deployments | docker-cluster |
KALAMDB_NODE_ID | Node id in cluster setups | 1 |
KALAMDB_CLUSTER_RPC_ADDR | Raft RPC address for a node | kalamdb-node1:2910 |
KALAMDB_CLUSTER_API_ADDR | Public API address for a node | http://kalamdb-node1:2900 |
KALAMDB_CLUSTER_PEERS | Cluster peer list for Docker cluster compose | 2@node2:2910@http://node2:2900;3@node3:2910@http://node3:2900 |
For anything beyond local testing:
KALAMDB_ROOT_PASSWORDKALAMDB_JWT_SECRET/data with a Docker volume or bind mountKalamDB stores database state under /data inside the container.
Run with a named volume:
docker run -d \
--name kalamdb \
-p 2900:2900 \
-e KALAMDB_SERVER_HOST=0.0.0.0 \
-e KALAMDB_ROOT_PASSWORD=kalamdb123 \
-e KALAMDB_JWT_SECRET=replace-with-a-32-char-secret \
-v kalamdb_data:/data \
jamals86/kalamdb:latest
Backup example:
docker run --rm \
-v kalamdb_data:/data \
-v "$PWD":/backup \
alpine \
tar czf /backup/kalamdb-data.tar.gz /data
docker logs kalamdb
Make sure:
2900 is publishedKALAMDB_SERVER_HOST=0.0.0.0Make sure the password you use matches KALAMDB_ROOT_PASSWORD from container startup.
Permission denied (os error 13) on startupThe image runs as a non-root user.
The bundled CLI uses /data/.kalam as its default local state directory inside the container.
Check these first:
server.toml, make sure the file is readable inside the containerlogs_path or data_path, make sure those paths are writable/data or /config, make sure Docker grants the container write access/datadocker rm -f kalamdb
docker volume rm kalamdb_data
Content type
Image
Digest
sha256:1530fea3fโฆ
Size
58.4 MB
Last updated
5 days ago
docker pull jamals86/kalamdb