aivyx-coder · ManualContents ↓

Building and testing

Build and run

cargo run -p aivyx-coder                  # the TUI, from a checkout
cargo run -p aivyx-coder -- --acp         # as an ACP server
cargo build --workspace

The package is aivyx; the binary it produces is aivyx-coder.

Features

Feature Default What it does
sandbox-backend on Landlock + seccomp confinement. Linux-only; --no-default-features builds without it (NoopConfiner), which is how the macOS release is built — and changes runtime behaviour, see [sandbox] require_enforcement.
provider-mistral-rs off The embedded mistral.rs engine, CPU only
provider-mistral-rs-cuda / -metal / -accelerate off The embedded engine with GPU acceleration — pick one

Every workspace crate that re-forwards sandbox-backend depends on its siblings with default-features = false; leaving one edge unguarded pulls landlock back in through it. Check with cargo tree -i landlock.

Release builds

scripts/build-release.sh

builds the static Linux x86_64 (musl) binary into dist/aivyx-coder-v<version>-x86_64-linux-musl.tar.gz with a .sha256. It needs musl-gcc (the musl / musl-tools package) for tree-sitter’s C sources. Tagged releases (vX.Y.Z) are built by GitHub Actions for Linux x86_64 and macOS Apple Silicon, and a Docker image is published to ghcr.io/aivyx-agent/aivyx-coder.

Test and lint

cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo test -p aivyx-core some_test_name     # one crate / one test

Some sandbox tests need a kernel with Landlock; CI runs on one.

Documentation checks

Two tests keep the manual honest: one in crates/aivyx fails if a command-line flag has no section in reference/01-command-line.md, one in aivyx-core if a slash command has none in reference/02-slash-commands.md.

Two reference pages are generated — re-run after changing the config schema or a tool, and commit the result:

python3 scripts/gen-config-reference.py > docs/manual/reference/03-configuration.md
python3 scripts/gen-tools-reference.py  > docs/manual/reference/04-tools.md

Both scripts stop with an error when something new isn’t covered (a config section without an intro, a key without a meaning, a tool without a group or a known ActionKind), so the fix is usually a line in the script.

Debugging a model

AIVYX_DEBUG_LOG=/tmp/wire.log captures the raw traffic to and from the model in plain text. Delete it afterwards.