Start
Install
On this page 6 sections
NullHub is one self-contained binary: the Zig backend and the Svelte dashboard are compiled together, so there is nothing else to deploy. Pick whichever of the three routes below fits your machine.
Docker
The image serves the dashboard on port 19800 and keeps all state in a volume mounted at /nullhub-data:
docker run --rm -p 19800:19800 -v nullhub-data:/nullhub-data ghcr.io/nullclaw/nullhub:latestThe default image runs as an unprivileged user (uid 65534). If you need the container to run as root — the Dockerfile calls this "autonomous mode", an explicit opt-in — build the root target:
docker build --target release-root -t nullhub:root .Prebuilt binary
Every release attaches binaries for seven targets:
| Platform | Asset |
|---|---|
| macOS, Apple silicon | nullhub-macos-aarch64.bin |
| macOS, Intel | nullhub-macos-x86_64.bin |
| Linux, x86_64 | nullhub-linux-x86_64.bin |
| Linux, aarch64 | nullhub-linux-aarch64.bin |
| Linux, riscv64 | nullhub-linux-riscv64.bin |
| Windows, x86_64 | nullhub-windows-x86_64.exe (also .zip) |
| Windows, aarch64 | nullhub-windows-aarch64.exe (also .zip) |
Download from GitHub releases, make it executable, run it:
curl -fL https://github.com/nullclaw/nullhub/releases/latest/download/nullhub-macos-aarch64.bin -o nullhub
chmod +x nullhub
./nullhubThere is no Homebrew formula for NullHub yet. (If you only want the agent, NullClaw does have one.)
Build from source
Requires Zig 0.16.0 exactly, plus npm to build the embedded Svelte UI:
zig build
./zig-out/bin/nullhubThe resulting binary includes the built web UI — it does not depend on a runtime ui/build directory.
Prerequisites
At runtime NullHub needs two ordinary tools:
curl— fetches releases and component binariestar— extracts UI module bundles
If either is missing, NullHub tries to install it automatically through whatever package manager it finds: apt, dnf, yum, pacman, zypper, apk, brew, winget, or choco.
Run as an OS service
Once you are happy with it, register NullHub as a systemd or launchd service so it survives reboots:
nullhub service install
nullhub service statusnullhub service uninstall removes it again.
Where things live
All state — config, instances, downloaded binaries, logs, cached manifests — sits under ~/.nullhub/. Deleting that directory is a full reset.
Next: Quickstart.