Quick Start
This guide takes you from zero to a working KalamDB flow:
- Run the server
- Bootstrap authentication
- Create a namespace and table
- Execute SQL
- Connect from the TypeScript SDK or CLI
Use this path if you want the fastest route into a working local KalamDB setup before moving into the TypeScript SDK, HTTP API, PostgreSQL extension, or production guides.
Prerequisites
Pick the path that matches how you want to run the server:
| Option | You need |
|---|---|
| 1. Docker | Docker Engine or Docker Desktop |
| 2. Kalam CLI | Kalam CLI installed (install.sh or npm) and, for TypeScript starters, Node.js plus a package manager (npm, pnpm, yarn, or bun) |
| 3. GitHub binaries | curl or a browser — no Rust toolchain required |
| 4. Build from source | Git and Rust 1.92+ |
Option 1: Docker
The fastest way to run KalamDB locally is the published image jamals86/kalamdb:latest. Copy-paste the commands below — they start the server, bootstrap auth, and log you in as the initial DBA user.
What this does:
- Starts
kalamdb-serverwith data persisted in the named volumekalamdb_data - Generates a JWT signing secret (required when binding to
0.0.0.0) - Allows first-time setup from your host machine (
KALAMDB_ALLOW_REMOTE_SETUP=true) - Creates DBA user
adminand returns a JWT when login succeeds
Save the access_token from the login response for the SQL steps below.
Docker note:
/v1/api/healthcheckis localhost-only inside the container. From your host, use/v1/api/auth/status(as above) or rundocker exec kalamdb wget -qO- http://127.0.0.1:2900/v1/api/healthcheck.
Admin UI: http://127.0.0.1:2900/ui — log in as admin with AdminPass123!.
For Docker Compose (single node or 3-node cluster), volume overrides, and Windows PowerShell examples, see Docker Deployment.
Option 2: Kalam CLI (kalam init + kalam dev)
Use this path when you want a project scaffold (kalam.toml, schema.sql, migrations) and a single command that starts the local server, applies schema, and supervises your app.
Step 1 — Install the CLI
Or with npm:
Verify:
Step 2 — Scaffold a project with kalam init
Create a directory and run the interactive wizard:
The wizard asks for:
- Project name — written to
[project].nameinkalam.toml - Schema mode — choose SQL file (
schema.sql) - Language targets — TypeScript and/or Dart for generated SDK types
- Template — built-in TypeScript starter (for example
simple-live) - Package manager — npm, pnpm, yarn, or bun (TypeScript only)
- Server mode — choose local so
kalam devcan startkalamdb-serverfor you - Server URL — defaults to
http://localhost:2900for local mode
Non-interactive equivalent (CI or scripted setup):
kalam init creates at minimum:
| File / directory | Purpose |
|---|---|
kalam.toml | Project config: environments, schema paths, dev orchestration |
schema.sql | Your schema source |
kalam/migrations/ | Migration history |
kalam/server/server.toml | Local server config (includes auth.root_password) |
src/generated/kalam.ts | Generated TypeScript types (after first dev run) |
Step 3 — Start everything with kalam dev
From the project root:
On startup, kalam dev:
- Resolves the dev environment from
kalam.toml(http://localhost:2900by default) - Starts or reuses a local
kalamdb-server— if no binary is installed, the CLI can download the matching release into~/.kalam/bin(interactive terminals only) - Bootstraps auth — logs in as local root using
kalam/server/server.tomland saves credentials to~/.kalam/ - Applies schema — runs the migration pipeline against
schema.sql - Regenerates types — refreshes SDK artifacts when configured
- Supervises app processes — starts commands from
[dev.processes](for examplepnpm devfor TypeScript starters)
To wipe local database files and start over, stop the dev session and run kalam db reset (use --yes when reusing a non-project server or in non-interactive shells), then kalam dev again.
Press Ctrl+C to shut down managed processes cleanly.
Useful flags:
Check project state in another terminal:
While kalam dev is running, sign in to the local server with root / kalamdb123:
- Admin UI: http://localhost:2900/ui
- CLI:
kalam --url http://127.0.0.1:2900 --user root --password kalamdb123
If port 2900 is already in use, kalam dev reuses that server instead of starting a new one. Use a free port when scaffolding:
Full references: Project Init and Local Development.
Option 3: GitHub release binaries
Download prebuilt kalamdb-server and kalam archives from KalamDB Releases . Each release publishes platform archives plus a SHA256SUMS file — verify checksums before extracting.
Choose your platform
The latest release ships these server and CLI archives (version shown dynamically):
| Platform | Server archive | CLI archive |
|---|---|---|
| Linux x86_64 | kalamdb-server-<ReleaseValue bare fallback="<version>" />-linux-x86_64.tar.gz | kalamcli-<ReleaseValue bare fallback="<version>" />-linux-x86_64.tar.gz |
| Linux ARM64 | kalamdb-server-<ReleaseValue bare fallback="<version>" />-linux-aarch64.tar.gz | kalamcli-<ReleaseValue bare fallback="<version>" />-linux-aarch64.tar.gz |
| macOS Apple Silicon | kalamdb-server-<ReleaseValue bare fallback="<version>" />-macos-aarch64.tar.gz | kalamcli-<ReleaseValue bare fallback="<version>" />-macos-aarch64.tar.gz |
| Windows x86_64 | kalamdb-server-<ReleaseValue bare fallback="<version>" />-windows-x86_64.zip | kalamcli-<ReleaseValue bare fallback="<version>" />-windows-x86_64.zip |
Replace <version> with the bare release tag from GitHub (for example 0.5.3-rc.1). macOS Intel builds are not published — use Docker, Rosetta with a Linux binary, or build from source on Intel Macs.
Release archives contain versioned binary names (not kalamdb-server / kalam). You also need a server.toml config file — the binary does not start without one.
Linux (x86_64) example
# 1. Download both archives and SHA256SUMS from the release page, then verify:sha256sum -c SHA256SUMS --ignore-missing # 2. Extract (creates versioned binary names in the current directory)mkdir -p kalamdb-bin && cd kalamdb-bintar -xzf ../kalamdb-server-0.5.4-rc.1-linux-x86_64.tar.gztar -xzf ../kalamcli-0.5.4-rc.1-linux-x86_64.tar.gz # 3. Optional convenience symlinksln -sf kalamdb-server-0.5.4-rc.1-linux-x86_64 kalamdb-serverln -sf kalamcli-0.5.4-rc.1-linux-x86_64 kalam # 4. Create a minimal local configcat > server.toml <<'EOF'[server]host = "127.0.0.1"port = 2900 [storage]data_path = "./data" [limits] [logging]logs_path = "./logs"log_to_console = true [performance] [auth]jwt_secret = "local-binary-test-secret-32chars-min"root_password = "kalamdb123"EOF # 5. Start the server./kalamdb-server-0.5.4-rc.1-linux-x86_64 server.tomlIn another terminal, confirm the server is up and run the CLI:
macOS (Apple Silicon) example
shasum -a 256 -c SHA256SUMS mkdir -p kalamdb-bin && cd kalamdb-bintar -xzf ../kalamdb-server-0.5.4-rc.1-macos-aarch64.tar.gztar -xzf ../kalamcli-0.5.4-rc.1-macos-aarch64.tar.gzln -sf kalamdb-server-0.5.4-rc.1-macos-aarch64 kalamdb-serverln -sf kalamcli-0.5.4-rc.1-macos-aarch64 kalam cat > server.toml <<'EOF'[server]host = "127.0.0.1"port = 2900 [storage]data_path = "./data" [limits] [logging]logs_path = "./logs"log_to_console = true [performance] [auth]jwt_secret = "local-binary-test-secret-32chars-min"root_password = "kalamdb123"EOF ./kalamdb-server-0.5.4-rc.1-macos-aarch64 server.tomlWindows (x86_64) example
Get-FileHash .\kalamdb-server-0.5.4-rc.1-windows-x86_64.zip -Algorithm SHA256Get-FileHash .\kalamcli-0.5.4-rc.1-windows-x86_64.zip -Algorithm SHA256Expand-Archive .\kalamdb-server-0.5.4-rc.1-windows-x86_64.zip -DestinationPath .Expand-Archive .\kalamcli-0.5.4-rc.1-windows-x86_64.zip -DestinationPath .@'[server]host = "127.0.0.1"port = 2900[storage]data_path = "./data"[limits][logging]logs_path = "./logs"log_to_console = true[performance][auth]jwt_secret = "local-binary-test-secret-32chars-min"root_password = "kalamdb123"'@ | Set-Content server.toml.\kalamdb-server-0.5.4-rc.1-windows-x86_64.exe server.tomlThen verify from PowerShell or Command Prompt:
More platform notes: GitHub Binaries.
Option 4: Build from source
Clone the repository and run the server with Cargo (requires Rust 1.92+):
The example config binds to http://127.0.0.1:2900 by default. Copy and edit server.example.toml if you need different paths or secrets.
To build the CLI as well:
Verify Health
After starting the server with any option above:
For a native or CLI-managed local server you can also use:
Docker users: the health endpoint is localhost-only from inside the container. Use auth/status from the host, or docker exec kalamdb wget -qO- http://127.0.0.1:2900/v1/api/healthcheck.
Bootstrap Authentication
Check whether the server still needs first-time setup:
If it returns "needs_setup": true, initialize root + DBA user:
If the server is already configured, this endpoint returns conflict; in that case, go directly to login.
Then log in:
Keep the returned access_token for API calls.
Create Namespace And Table
Insert And Query
Connect With TypeScript SDK (@kalamdb/client)
Install the package first:
Package reference: @kalamdb/client on npm
Connect With Kalam CLI
Install the CLI with npm or the curl installer:
Log in and run a query:
If you want to test the OIDC flow instead of local password login:
Full CLI reference: Kalam CLI — start with Project Init and Local Development
Use KalamDB Skills With Coding Agents
Install the official KalamDB skill for Codex, Claude Code, OpenCode, and Agent Skills-compatible tools:
Choose Your Next Track
Building an app or AI-agent backend in TypeScript
Continue with TypeScript Setup, Authentication, Querying & DML, and Realtime Subscriptions.
Building background workers and agent automation
Continue with Topic Consumers & ACK, Consumer Runtime, and AI Agent Coding Guidelines.
Integrating through PostgreSQL
Continue with PostgreSQL Extension Getting Started, SQL Syntax, and Data Type Conversions.
Hardening for production
Continue with Authentication & Bootstrap, Configuration, Security, and OIDC & Issuer Trust.
Advanced features and integrations
Continue with SQL Reference, Vector Search, Dex, OIDC & Issuer Trust, MinIO (S3-Compatible), Jaeger, and OpenTelemetry (OTEL).