Install

Every channel installs the same thing: the jouledb server binary (crate joule-db-server). It serves HTTP on -p (default 8080), TCP on +1, the Postgres wire protocol on +2, and JWP on +3.

From source (works today)

cargo install --locked --git https://github.com/openIE-dev/jouledb joule-db-server
jouledb --version

Prebuilt binaries

The Release workflow builds jouledb-<version>-<target>.tar.gz (plus .sha256) for aarch64-apple-darwin, x86_64-apple-darwin, x86_64-unknown-linux-gnu, and aarch64-unknown-linux-gnu. Windows is experimental. Once a version is tagged:

cargo binstall jouledb            # the crates.io `jouledb` stub points binstall at these archives
# or
curl -fsSL https://github.com/openIE-dev/jouledb/releases/download/v0.1.0/jouledb-0.1.0-aarch64-apple-darwin.tar.gz | tar xz

Plain cargo install jouledb from crates.io only installs the stub, which prints these instructions. Use the --git form above to compile.

Homebrew

packaging/homebrew/jouledb.rb is the tap formula. Before a release exists: brew install --HEAD ./packaging/homebrew/jouledb.rb.

Docker

docker build -t jouledb .
docker run -e JOULEDB_JWT_SECRET=change-me -p 8080-8083:8080-8083 -v jdb:/data jouledb

Run and connect

jouledb -d ./data                 # loopback only, trust auth, like a local Postgres
psql "host=127.0.0.1 port=8082 user=postgres dbname=postgres sslmode=disable"

Binding to a non-loopback address (JOULEDB_BIND_HOST=0.0.0.0, as the container does) always turns auth on. Set JOULEDB_JWT_SECRET, which is also the pgwire password. Drivers tested in CI: psql, psycopg 3, SQLAlchemy 2, node-postgres, and pgJDBC (see tests/clients).