Quick Start (development)
For local development on a Linux host, you can run the control plane directly from
the source tree without the production install.sh flow.
# 1. Build the web console (embedded into release builds)
cd web && pnpm install && pnpm build && cd ..
# 2. Set the bootstrap admin token (required)
export DENIA_ADMIN_TOKEN="$(openssl rand -hex 32)"
# 3. Run the control plane
cargo run --release
The server binds 127.0.0.1:7180 by default, serving the API under /v1 with the
console as the fallback for non-API routes.
:::caution Release builds need the web build first
A release cargo build embeds web/dist/client via rust-embed, and that
directory is gitignored. Build the web console (cd web && pnpm build) before
cargo build --release, or the embed will be empty.
:::
Build targets
The Makefile wraps the build:
make web # build the SPA only (pnpm install --frozen-lockfile && pnpm build)
make rust # cargo build --release --locked
make build # web + rust
sudo make install # build, then install the binary to /usr/local/bin/denia
make clean # cargo clean + remove web/dist and web/node_modules
Verify the build
cargo build
cargo test
cargo fmt --all
cargo clippy --all-targets --all-features
Privileged runtime tests mutate namespaces, mounts, and cgroups, so they are opt-in:
DENIA_RUN_PRIVILEGED_TESTS=1 cargo test --test linux_runtime_privileged -- --ignored
See Configuration for every DENIA_* setting,
and Contributing for the workflow.