Start
Install NullHub
NullHub is a single binary with an embedded dashboard that installs and supervises the rest of the stack. Three ways to get it; all end at the same place: http://nullhub.localhost:19800.
Option A: Docker#
The quickest way to try it:
docker run --rm -p 19800:19800 -v nullhub-data:/nullhub-data ghcr.io/nullclaw/nullhub:latestThen open http://nullhub.localhost:19800. The named volume keeps hub state across container restarts.
Option B: release binary#
Prebuilt binaries for 7 targets are attached to each GitHub release — Linux (x86_64, aarch64, riscv64), macOS (x86_64, aarch64) and Windows (x86_64, aarch64). Download the one for your platform, make it executable, and run it:
chmod +x nullhub-macos-aarch64.bin
./nullhub-macos-aarch64.binRunning nullhub with no arguments starts the server and opens your browser. Where Bonjour or Avahi is available it publishes nullhub.local over mDNS and prefers that name; otherwise it falls back to nullhub.localhost and finally 127.0.0.1.
Option C: build from source#
Requires Zig 0.16.0 exactly, plus npm for the embedded Svelte UI:
git clone https://github.com/nullclaw/nullhub.git
cd nullhub
zig build
./zig-out/bin/nullhubThe UI is compiled into the binary — no ui/build directory needed at runtime.
Runtime prerequisites#
NullHub uses curl and tar to download and unpack components. If they are missing, it auto-installs them through whatever package manager it finds (apt, dnf, yum, pacman, zypper, apk, brew, winget, choco).
Run it as a service#
Once you are happy with it, register NullHub as an OS service so it survives reboots:
nullhub service install
nullhub service statusThis writes a systemd unit on Linux or a launchd agent on macOS. nullhub service uninstall removes it.
Check your install#
nullhub version
nullhub statusstatus prints a table of managed instances — empty for now. All hub state lives under ~/.nullhub/ (config, instances, binaries, logs, cached manifests).
Next: Run your first agent — install NullClaw through the hub and talk to it.