Installing skaidb
Every release is published as compiled, signed packages at repo.dsys.org. Every bundle ships two binaries:
skaidb— the database server (binary + REST endpoints, clustering).skaidbsh— the unified shell and admin client: an interactive SQL shell that connects over the network (with nearest-node selection and failover), plus cluster membership and configuration commands (cluster,config,status,metrics) — see CLUSTERING.md. It can also open a data directory directly with--localfor offline use.
skaidb-mcp ships separately, as its own package and its own archive
(skaidb-mcp_X.Y.Z_amd64.deb, skaidb-mcp-X.Y.Z-<target>.tar.gz, and a raw
.exe on Windows). It is the MCP server that exposes a database to
an LLM, and it belongs on the machine running the LLM client — a laptop or
workstation — which is usually not a database host. Installing it does not
install a server, and installing a server does not install it.
Replace
X.Y.Zbelow with the release you want (e.g.0.234.0).
Contents
- System requirements
- Which download do I want?
- Package repository (apt / dnf)
- Verifying the download
- Linux
- Debian / Ubuntu (.deb)
- Fedora / RHEL / CentOS / Rocky / Alma (.rpm)
- openSUSE (.rpm)
- Any distro — tarball (glibc)
- Any distro / Alpine — static musl tarball
- macOS
- Disk image (.dmg)
- Tarball
- Windows
- Zip archive
- Standalone .exe
- Binary-only (no package, no build)
- Run it / verify the install
- Upgrading
- Uninstalling
System requirements
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 core (x86-64 or ARM64) | 2+ cores |
| RAM | 512 MB | 2 GB+ |
| Disk | 1 GB free beyond your data | SSD/NVMe, 2–3× your expected data size |
- RAM: the default memtable alone budgets 256 MB. On boxes at or near
the minimum, set
storage.memory_target("auto", or an explicit"256MB"/"2GB") so the memtable, read cache, search-index writer heaps and the per-statement scan ceilings share one budget sized to this node instead of assuming a bigger machine."auto"reads the cgroup limit, so a container gets its own cap rather than the host's. A 3-node test cluster runs comfortably in 1 GB per node. - Disk: LSM compaction needs transient headroom (it rewrites
overlapping sstables before deleting the old ones), the WAL adds its own
footprint, and a full-text
SEARCH INDEXtypically adds another 0.5–1× the size of the text it indexes — hence 2–3× your expected live data. Watch real usage withSHOW STATUS(disk_bytes,wal_bytes,search.*.disk_bytes). - Cluster: the same figures apply per node; total storage scales with the replication factor (default 3 — every row is stored RF times).
When the disk fills up
skaidb keeps running on a full volume; it stops taking new data. Below the
iwm.disk_low_watermark of free space (default min(5%, 2GB)) — or the
moment any write actually fails with No space left on device — the node
enters IWM state 3: /ready answers 503, /status shows
iwm.disk_write_block: true, and INSERT/UPDATE/remote-write get the
retryable error disk full: node is blocking writes, retry (drivers treat
it like memory shedding: back off and retry, or fail over on a cluster).
Reads, DELETE, DDL, retention and compaction keep working: the node gives
back a reserve file it keeps for exactly this (iwm.disk_reserve, 64 MB by
default) so tombstones and compaction output have somewhere to go. A write
that had already committed is never lost to a full disk — it is in the WAL
and the memtable, and the flush it triggered is retried once space exists.
Restarting on a full disk is safe.
To recover, free space and wait ~10 s: drop or truncate a table you can
spare, lower a partitioned table's ttl so whole partitions drop, delete files that
are not skaidb's, or grow the volume. Once free space is back above
iwm.disk_resume_watermark (default twice the low watermark) plus the
reserve, the node logs writes resumed, /ready returns 200 and blocked
clients' retries succeed. Metrics to watch: skaidb_iwm_state,
skaidb_iwm_disk_enospc_trips_total (non-zero = the watermark was too low
for this node's compaction outputs; raise it) and
skaidb_storage_build_failures_total.
Which download do I want?
| Platform | CPU | Recommended | Also available |
|---|---|---|---|
| Debian, Ubuntu, Mint, … | x86-64 | skaidb_X.Y.Z_amd64.deb |
tarball |
| Debian, Ubuntu, … | ARM64 | skaidb_X.Y.Z_arm64.deb |
tarball |
| Fedora, RHEL, Rocky, Alma, openSUSE | x86-64 | skaidb-X.Y.Z-1.x86_64.rpm |
tarball |
| Fedora, RHEL, … | ARM64 | skaidb-X.Y.Z-1.aarch64.rpm |
tarball |
| Alpine / "any Linux, no deps" | x86-64 | skaidb-X.Y.Z-x86_64-unknown-linux-musl.tar.gz (static) |
— |
| Alpine / "any Linux, no deps" | ARM64 | skaidb-X.Y.Z-aarch64-unknown-linux-musl.tar.gz (static) |
— |
| Any Linux (glibc) | x86-64 | skaidb-X.Y.Z-x86_64-unknown-linux-gnu.tar.gz |
.deb/.rpm |
| Any Linux (glibc) | ARM64 | skaidb-X.Y.Z-aarch64-unknown-linux-gnu.tar.gz |
.deb/.rpm |
| macOS | Apple Silicon (M-series) | skaidb-X.Y.Z-aarch64-apple-darwin.dmg |
.tar.gz |
| macOS | Intel | skaidb-X.Y.Z-x86_64-apple-darwin.dmg |
.tar.gz |
| Windows | x86-64 | skaidb-X.Y.Z-x86_64-pc-windows-msvc.zip |
standalone .exe |
| Docker / compose | any | build from docker/ (DOCKER.md) — every config key as a SKAIDB_* env var |
— |
What releases actually publish today: the .deb and .rpm for x86-64 and
ARM64 (from the package repository), and the
static musl tarball for x86-64 (from
repo.dsys.org/dl/skaidb). The glibc
tarballs, the macOS builds and the Windows build are not currently produced —
on those platforms build from source, or run the server under
Docker.
Not sure of your CPU? uname -m on Linux/macOS (x86_64 → amd64/x86_64,
aarch64/arm64 → ARM64). On Apple Silicon Macs uname -m prints arm64.
Package repository (apt / dnf)
Every release is also published to a signed package repository at
repo.dsys.org, so apt/dnf handle installs and upgrades (no
manual downloads):
# Debian / Ubuntu
curl -fsSL https://repo.dsys.org/pubkey.gpg \
| sudo tee /etc/apt/keyrings/repo-dsys.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/repo-dsys.gpg] https://repo.dsys.org/deb stable main" \
| sudo tee /etc/apt/sources.list.d/repo-dsys.list
sudo apt update && sudo apt install skaidb
# Fedora / RHEL / Rocky / Alma
sudo tee /etc/yum.repos.d/repo-dsys.repo <<'EOF'
[repo-dsys]
name=repo.dsys.org
baseurl=https://repo.dsys.org/rpm
enabled=1
gpgcheck=0
repo_gpgcheck=1
gpgkey=https://repo.dsys.org/pubkey.gpg
EOF
sudo dnf install skaidb
Upgrades are then just apt upgrade / dnf upgrade (in a cluster, upgrade one
node at a time). The sections below cover installing directly from downloaded
package files instead.
Verifying the download (recommended)
Each release includes SHA256SUMS covering every asset, and
SHA256SUMS.minisig — a minisign
signature over it. Verifying the signature and then the checksums
authenticates every asset. The skaidb release public key:
RWRy23pp77/D3ct8mR6AjZBwdpha5AveYo3tvqcZf+ls9JeMRODnm92C
# 1. The signature (minisign, or rsign2 — same key/signature format).
minisign -Vm SHA256SUMS -P RWRy23pp77/D3ct8mR6AjZBwdpha5AveYo3tvqcZf+ls9JeMRODnm92C
# 2. The checksums.
# Linux
sha256sum -c SHA256SUMS --ignore-missing
# macOS
shasum -a 256 -c SHA256SUMS --ignore-missing
The trusted comment inside the signature names the release tag it was
made for — minisign -Vm prints it on success.
# Windows (PowerShell): compare the printed hash to the matching line in SHA256SUMS
Get-FileHash .\skaidb-X.Y.Z-x86_64-pc-windows-msvc.zip -Algorithm SHA256
Select-String skaidb-X.Y.Z-x86_64-pc-windows-msvc.zip .\SHA256SUMS
A ... : OK line (Linux/macOS) means the file is intact. (Releases are not
GPG-signed; verify over HTTPS from the official repo.)
Linux
The .deb/.rpm install skaidb and skaidbsh to /usr/bin and drop the
license + README under /usr/share/doc/skaidb/.
Debian / Ubuntu (.deb)
# x86-64
sudo apt install ./skaidb_X.Y.Z_amd64.deb
# ARM64
sudo apt install ./skaidb_X.Y.Z_arm64.deb
apt install ./file.deb resolves dependencies. On older systems without that
syntax, use sudo dpkg -i skaidb_X.Y.Z_amd64.deb (then sudo apt -f install if
it reports missing deps).
Fedora / RHEL / CentOS / Rocky / Alma (.rpm)
# x86-64
sudo dnf install ./skaidb-X.Y.Z-1.x86_64.rpm
# ARM64
sudo dnf install ./skaidb-X.Y.Z-1.aarch64.rpm
On older systems use sudo yum install ./skaidb-X.Y.Z-1.x86_64.rpm, or
sudo rpm -i skaidb-X.Y.Z-1.x86_64.rpm for a dependency-free install.
openSUSE (.rpm)
sudo zypper install ./skaidb-X.Y.Z-1.x86_64.rpm
Any distro — tarball (glibc)
For distros where you'd rather not use a package, or to install without root:
tar xzf skaidb-X.Y.Z-x86_64-unknown-linux-gnu.tar.gz # → skaidb, skaidbsh, LICENSE, README.md
sudo install -m 0755 skaidb skaidbsh /usr/local/bin/
# …or, no root, into your user path:
mkdir -p ~/.local/bin && install -m 0755 skaidb skaidbsh ~/.local/bin/
Use the aarch64-unknown-linux-gnu tarball on ARM64. The glibc build needs a
reasonably recent glibc; if you hit a GLIBC_… error, use the musl build below.
Any distro / Alpine — static musl tarball
A fully static build with no libc dependency — works on Alpine and anywhere the
glibc build won't. Tarballs are published at
repo.dsys.org/dl/skaidb — one directory per
version, plus latest/, each with a SHA256SUMS signed by the same key that
signs the apt/dnf metadata:
V=X.Y.Z
base="https://repo.dsys.org/dl/skaidb/$V"
curl -fLO "$base/skaidb-$V-x86_64-unknown-linux-musl.tar.gz"
curl -fLO "$base/SHA256SUMS"
sha256sum -c --ignore-missing SHA256SUMS
tar xzf "skaidb-$V-x86_64-unknown-linux-musl.tar.gz"
sudo install -m 0755 skaidb skaidbsh /usr/local/bin/
To check the signature too, import the repo key
(curl -fsSL https://repo.dsys.org/pubkey.asc | gpg --import) and run
gpg --verify SHA256SUMS.asc SHA256SUMS.
Run as a service (systemd)
The .deb / .rpm install a systemd unit and a default config, and create an
unprivileged skaidb system account that owns the data directory:
| Path | Purpose |
|---|---|
/lib/systemd/system/skaidb.service |
the service unit |
/etc/skaidb/skaidb.toml |
main configuration (not overwritten on upgrade) |
/etc/default/skaidb |
optional SKAIDB_* env overrides (win over the file) |
/var/lib/skaidb |
data directory, owned by the skaidb user |
Installing does not auto-start the server, so you can configure it first:
sudoedit /etc/skaidb/skaidb.toml # set bind_addr, cluster seeds, etc.
sudo systemctl enable --now skaidb # start now and on boot
systemctl status skaidb
journalctl -u skaidb -f # follow the logs
For a cluster, the per-host bits are easiest as env overrides in
/etc/default/skaidb (consistency levels are case-insensitive):
SKAIDB_BIND_ADDR=192.168.7.3
SKAIDB_SEEDS=192.168.7.3:7100,192.168.7.4:7100
SKAIDB_REPLICATION_FACTOR=2
SKAIDB_DEFAULT_READ_CONSISTENCY=ALL
SKAIDB_DEFAULT_WRITE_CONSISTENCY=ALL
Then sudo systemctl restart skaidb. Health is at
http://<bind_addr>:7080/health and metrics at :9090/metrics
(see METRICS.md). Uninstalling leaves /var/lib/skaidb and the
skaidb account in place so data is never destroyed by a package removal.
For the tarball installs above there is no service unit; either run skaidb
under your own process manager or copy the unit from the repo's
packaging/skaidb.service and adjust paths.
macOS
Builds are provided for both Apple Silicon (aarch64-apple-darwin) and
Intel (x86_64-apple-darwin). The binaries are not notarized, so macOS
Gatekeeper will warn the first time — clear the quarantine flag (shown below) or
right-click the binary in Finder and choose Open.
Disk image (.dmg)
# Mount, copy the binaries to a directory on your PATH, unmount.
hdiutil attach skaidb-X.Y.Z-aarch64-apple-darwin.dmg
vol="/Volumes/skaidb X.Y.Z"
sudo cp "$vol/skaidb" "$vol/skaidbsh" /usr/local/bin/
hdiutil detach "$vol"
# Clear the quarantine flag so Gatekeeper allows them to run.
sudo xattr -d com.apple.quarantine /usr/local/bin/skaidb /usr/local/bin/skaidbsh
(Use the x86_64-apple-darwin dmg on Intel Macs.) There is no Homebrew tap.
Tarball (macOS)
tar xzf skaidb-X.Y.Z-aarch64-apple-darwin.tar.gz
sudo install -m 0755 skaidb skaidbsh /usr/local/bin/
sudo xattr -d com.apple.quarantine /usr/local/bin/skaidb /usr/local/bin/skaidbsh
Windows
The binaries are not code-signed, so SmartScreen may warn on first run ("More info" → "Run anyway").
Zip archive
- Download
skaidb-X.Y.Z-x86_64-pc-windows-msvc.zipand extract it (it containsskaidb.exe,skaidbsh.exe,LICENSE,README.md). - Move the folder somewhere stable (e.g.
C:\Program Files\skaidb) and add it to yourPATH:
# Unblock the downloaded zip, extract, and add to PATH (per-user).
Unblock-File .\skaidb-X.Y.Z-x86_64-pc-windows-msvc.zip
Expand-Archive .\skaidb-X.Y.Z-x86_64-pc-windows-msvc.zip -DestinationPath "$env:LOCALAPPDATA\skaidb"
[Environment]::SetEnvironmentVariable(
"Path", $env:Path + ";$env:LOCALAPPDATA\skaidb", "User")
Open a new terminal so the PATH change takes effect.
Standalone .exe
If you only want one binary, download skaidb-X.Y.Z-x86_64-pc-windows-msvc.exe
(server) and/or skaidbsh-X.Y.Z-x86_64-pc-windows-msvc.exe, rename to
skaidb.exe / skaidbsh.exe, and put them on your PATH.
Binary-only (no package, no build)
If you just want the executable and nothing else (no system package, no system files), grab the tarball/zip for your platform and extract only the binary you need:
# Linux/macOS — extract just the server binary into the current directory.
tar xzf skaidb-X.Y.Z-x86_64-unknown-linux-gnu.tar.gz skaidb
./skaidb --version
# Windows — the standalone .exe is already binary-only; just run it.
.\skaidb-X.Y.Z-x86_64-pc-windows-msvc.exe --version
The binaries are self-contained: they create and manage their own data directory and have no runtime dependencies beyond the OS (the musl build has none at all).
Run it / verify the install
skaidb --version
skaidbsh --version
Start the server (creates the data dir if missing):
skaidb --data-dir ./data --bind-addr 127.0.0.1 --rest-port 7080
# Every option is also a flag/env var; print the effective config and exit:
skaidb --print-config
Query it over REST:
curl -X POST 127.0.0.1:7080/query -d "CREATE TABLE users (PRIMARY KEY (id))"
curl -X POST 127.0.0.1:7080/query -d "INSERT INTO users (id, name) VALUES (1, 'ada')"
curl -X POST 127.0.0.1:7080/query -d '{"sql":"SELECT * FROM users"}'
curl 127.0.0.1:7080/metrics
Or use the shell. It connects over the network by default (picking the nearest
reachable node, with failover); --local opens a data directory directly with
no server:
skaidbsh --host 127.0.0.1 -e "SELECT COUNT(*) FROM users"
skaidbsh --host 127.0.0.1 # interactive REPL
skaidbsh --local ./data # offline, against the data dir
Optional listeners: enabling [mqtt] binds 1883 (plain/WebSocket) and,
with client TLS on, 8883 — open them in the firewall only if IoT clients
connect from outside the host (see MQTT.md).
To run multiple nodes, see CLUSTERING.md (seeds, ports, replication factor, consistency, adding/removing nodes). For the SQL surface, see QUERY_SYNTAX.md.
Upgrading
- .deb / .rpm: install the newer package the same way — it replaces the old
one (
sudo apt install ./skaidb_NEW_amd64.deb,sudo dnf install ./skaidb-NEW…rpm). If theskaidbservice is running, the package restarts it automatically so the new binary takes over (a stopped or never-enabled service is left untouched). In a multi-node cluster, upgrade one host at a time so the nodes don't all restart at once. - Tarball / zip / source: overwrite the binaries in place. The on-disk data format is forward-compatible within a release line; stop the server before swapping the binary.
skaidb uses SemVer.
Uninstalling
# Debian/Ubuntu
sudo apt remove skaidb
# Fedora/RHEL/openSUSE
sudo dnf remove skaidb # or: sudo rpm -e skaidb / sudo zypper remove skaidb
# Tarball install
sudo rm /usr/local/bin/skaidb /usr/local/bin/skaidbsh
# cargo install
cargo uninstall skaidb-server skaidb-cli
Your data directory (e.g. ./data) is never touched by uninstalling — remove it
manually if you want to delete the database.