AionDB v0.3 is live: vector search becomes a first-class engine surface with pgvector-style SQL, HNSW, IVF-flat, Qdrant-style filters, and published recall/latency benchmarks. See the v0.3 vector update.

What's New in v0.5

v0.5 is the developer-experience and installation update. It adds guided setup with aiondb init, configuration files through aiondb serve --config, a 128 MiB default buffer pool, bounded dynamic-programming join ordering, prebuilt release binaries with a checksum-verifying installer, and multi-arch Docker images.

v0.5 is in development. Everything on this page is shipped on the v0.5 development branch. The downloadable artifacts — release binary archives, installer downloads, and release-tagged multi-arch images — become available when the first v0.5 release is published.

Product Highlights

v0.5 delivers five major upgrades:

  1. aiondb init: one command that prepares a data directory, writes a commented aiondb.conf, and prints strong generated bootstrap credentials once;
  2. aiondb serve --config <path>: file-based configuration with environment > file > defaults precedence and fail-fast validation;
  3. a 128 MiB default buffer pool matching PostgreSQL's shared_buffers default, plus the new AIONDB_STORAGE_INDEX_POOL_FRAMES knob;
  4. bounded dynamic-programming join ordering for queries joining up to 10 relations, with the previous greedy ordering as fallback;
  5. release binaries for linux x86_64, linux aarch64, and macos arm64 with SHA256 checksums, a one-liner installer, and multi-arch (amd64 + arm64) Docker images.

Guided Setup: aiondb init

aiondb init prepares a persistent local instance in one step:

aiondb init --data-dir ./data/aiondb

It creates the data directory (owner-only permissions), writes a commented aiondb.conf (owner read/write only) with strong generated bootstrap credentials, prints the credentials once, and prints the exact command to start the server:

aiondb serve --config ./data/aiondb/aiondb.conf

Behavior is deliberately conservative, mirroring initdb:

Use --output <path> to write the config file somewhere other than <data-dir>/aiondb.conf.

Configuration Files: serve --config

aiondb serve --config <path> loads configuration from a KEY=VALUE file using the same keys as the AIONDB_* environment variables. Real environment variables take precedence over file values (priority: environment > file > built-in defaults).

Startup fails if the file is missing, unreadable, or contains an unknown key. There is no silent fallback: a typo in a key name stops the server instead of being ignored.

Useful references:

Default Buffer Pool: 128 MiB

The default storage buffer pools now total 128 MiB, matching PostgreSQL's shared_buffers default:

AIONDB_STORAGE_TABLE_POOL_FRAMES=8192
AIONDB_STORAGE_SNAPSHOT_POOL_FRAMES=2048
AIONDB_STORAGE_INDEX_POOL_FRAMES=6144

Each frame caches one 8 KiB page. AIONDB_STORAGE_INDEX_POOL_FRAMES is new in v0.5 and sizes the durable index page pool.

The pools are fixed-size and are not resized based on host RAM. On machines with 1 GiB of RAM or less, lower the frame counts (for example 1024/256/768 for a 16 MiB total). Every value must be at least 1; the loader rejects 0.

Join Ordering

For queries joining up to 10 relations, the planner now runs a bounded dynamic program (DPsize over left-deep join orders) that exhaustively searches join orders using the same per-step cost function as the previous greedy ordering. The DP order is adopted only when it is strictly cheaper than the greedy order, so plans never regress. Beyond 10 relations, the planner keeps the greedy path.

Release Binaries and Installer

The release workflow now attaches real binaries to each tagged GitHub Release:

each with a matching .tar.gz.sha256 checksum file. Once the first v0.5 release is published, install the latest binary into ~/.local/bin with:

curl -fsSL https://raw.githubusercontent.com/ayoubnabil/aiondb/main/packaging/install.sh | sh

The installer detects the OS and CPU architecture, downloads the matching archive, verifies the SHA256 checksum, and copies the aiondb binary into the install directory. It never uses sudo and never writes outside the install directory and a temporary directory. AIONDB_VERSION pins a release tag and AIONDB_INSTALL_DIR overrides the target directory.

Docker images are now built multi-arch (linux/amd64 and linux/arm64). docker-compose.yml is self-contained, so the compose quickstart also works without a repository checkout; see packaging/INSTALL.md. That path depends on the GHCR packages being public — if an image pull is denied, the package is not public yet.

Shipped vs. Upcoming

Shipped on the v0.5 development branch:

Available when the first v0.5 release is published:

Suggested Reading Order

  1. Getting Started
  2. Installation
  3. Configuration
  4. Release Notes