Installation

Homebrew

brew tap hahwul/doma
brew install doma

From source

Requires Crystal 1.19 or newer and the SQLite headers.

git clone https://github.com/hahwul/doma.git
cd doma
shards install
shards build --release --no-debug --production
# binary lands at ./bin/doma

Prebuilt binaries

Static Linux (x86_64, arm64) and macOS (x86_64, arm64) binaries are attached to every release. The Linux binaries are fully musl-static — no glibc or libsqlite3 dependency.

.deb, .rpm, and .apk packages are published alongside the binaries:

# Debian / Ubuntu
sudo dpkg -i doma_X.Y.Z_amd64.deb

# RHEL / Fedora
sudo rpm -i doma-X.Y.Z.x86_64.rpm

# Alpine
sudo apk add --allow-untrusted doma-X.Y.Z-x86_64.apk

Container

Multi-arch image at ghcr.io/hahwul/doma:

docker pull ghcr.io/hahwul/doma:latest
docker run --rm -it \
  -v "$HOME/.config/doma:/root/.config/doma" \
  ghcr.io/hahwul/doma list

The volume mount keeps the doma database persistent across container runs.

Verify the install

doma version
doma doctor

doctor reports where doma writes, whether the config parses, and how the database is growing — reach for it first if something looks off:

Paths
     home                 /Users/me/.config/doma
  ·  config               /Users/me/.config/doma/config.yml
  ✓  database             /Users/me/.config/doma/doma.db

Config
     status               not present (using defaults)

Database
     size                 52.0 KB
     directories          4
     tags                 4
     schema               v2

means the file exists, · means it's missing (which is fine for config.yml — defaults apply).