Skip to content

Install from source

Building from source gives you a native binary — useful for development, bare-metal deployments, or when you don't want to run a container. For the container path, see the Quickstart.

Prerequisites

  • Rust toolchain (cargo). Install via rustup.
  • Node.js (with npm) to build the web frontend.
bash
source "$HOME/.cargo/env"   # if cargo isn't already on your PATH

1. Build the frontend

The UI is a static single-page app that the backend serves. Build it once:

bash
cd frontend
npm install
npm run build               # outputs to frontend/dist
cd ..

2. Build the backend

bash
cargo build --release       # produces ./target/release/helios

For a FIPS 140-3 build, add --features fips (requires Go, Perl, and CMake) — see FIPS 140-3.

3. Run it

bash
./target/release/helios serve \
  --port 7300 \
  --data-dir ./data \
  --frontend-dir ./frontend/dist
# listening on http://127.0.0.1:7300

Open http://127.0.0.1:7300 and follow the setup wizard (or set HELIOS_ADMIN_PASSWORD first to skip it — see First steps).

Binding the host

By default serve binds to loopback (127.0.0.1), reachable only from the same machine. To accept connections from elsewhere (containers, a LAN, behind a proxy), add --host 0.0.0.0. Read Security hardening before exposing HeliosLogs directly.

Where things live

PathContents
./dataLog partitions and (single-node) control plane. Override with --data-dir.
./secret-control.jsonControl-plane encryption key (auto-generated).
./secret-jwt.jsonJWT signing secret (auto-generated).

The two secret files are written to the working directory by default. Back them up and do not place them inside --data-dir — see Secrets & encryption.

Frontend dev mode

When working on the UI, run Vite's dev server with hot reload. It proxies /api to the backend on :7300:

bash
cd frontend
npm run dev                 # http://localhost:5173

Keep helios serve running in another terminal so the proxied API is available.