Building from Source
Building from source is the fastest way to try changes, inspect internals, or run a custom build. The OSS repository is a single Cargo workspace that compiles both binaries from one make build.
Prerequisites
- Rust stable 1.85 or newer (the workspace uses edition 2024).
- Git — the docs preview also needs the Hextra theme submodule (see Docs preview).
Clone and workspace layout
git clone https://github.com/schiplat/super.git
cd superThe workspace (Cargo.toml) has four crates:
| Crate | Path | Type | Role |
|---|---|---|---|
common | common/ | lib | Shared types: config schema, license verification, plugin ABIs, paths, program validation |
super-core | core/ | lib | The daemon engine: Manager actor, axum REST/WS API, runtime plugin host, scheduler, health checks, hooks, event history (SQLite), snapshot store |
superd | superd/ | bin superd | The daemon entry point: CLI args, plugin discovery and license checks, then bootstrap() of super-core, serving HTTP / WS / metrics |
super-cli | cli/ | bin super | Command-line client for the daemon’s HTTP API |
superd is intentionally thin: nearly all logic lives in super-core, and embedding super-core in your own binary is a supported pattern (see Writing Extensions).
Build the binaries
make build # cargo build --release --bin superd --bin superArtifacts land in target/release/:
target/release/superd # the daemon
target/release/super # the CLIFor an unoptimized dev build use cargo build --bin superd --bin super.
Run tests, lint, and audit
CI runs the same gates on every PR:
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all -- --checkIntegration tests live in core/tests/ and cover restart policy, config loading, health checks, hooks, logs, OTA rollback, snapshots, scheduling, and more.
Dependency vulnerabilities are checked with cargo audit (install once with cargo install cargo-audit, then run with cargo audit). A clean cargo audit is a stated release-branch gate for the project — run it locally before opening a PR that touches Cargo.toml / Cargo.lock or when verifying a release branch.
Run a local dev instance
The daemon resolves its layout from SUPER_ROOT (default: exe-relative/cwd). Point it at a scratch directory so logs and data never land inside the repository:
export SUPER_ROOT=/tmp/super-dev
mkdir -p "$SUPER_ROOT/conf"
./target/release/superd # foreground; API on 127.0.0.1:9002 by defaultIf conf/super.toml is missing, superd starts with defaults. In another shell, drive it with the CLI (same SUPER_ROOT):
export SUPER_ROOT=/tmp/super-dev
./target/release/super add --name demo --autostart /usr/bin/sleep 3600
./target/release/super list
./target/release/super shutdown # graceful stopUseful checks while iterating:
curl http://127.0.0.1:9002/health— liveness.super doctor— diagnose config, daemon connectivity, andSUPER_ROOTlayout in one shot.- Logs:
$SUPER_ROOT/logs/app.log.YYYY-MM-DDfor the daemon,$SUPER_ROOT/logs/{uuid}.out/{uuid}.errfor managed children.
Note
Building from source always yields OSS mode. Licensed capabilities are separate signed plugin libraries delivered with a subscription and dropped into $SUPER_ROOT/plugins/; they are not built from this repository. See Editions.
Docs preview
Docs preview requires Hugo Extended 0.163.x+ and the Hextra submodule:
git submodule update --init --recursive
make docs-serve # → http://localhost:1313/Next steps
- Writing Extensions — hook custom logic into the process lifecycle.
- Design Philosophy — how the core is architected.
- API Reference and Config Reference — what a running instance exposes.
Was this page helpful? Thanks for your feedback!
Still have questions? Open an issue or browse the source.