THE SOUS-CHEF — CONTROL PLANE · beta
One console for your whole local agent stack
A single Zig binary with an embedded Svelte dashboard that installs, supervises, monitors and updates NullClaw, NullBoiler, NullTickets and NullWatch. All state lives under ~/.nullhub — nothing goes to a hosted service.
docker run --rm -p 19800:19800 -v nullhub-data:/nullhub-data ghcr.io/nullclaw/nullhub:latestBy the numbers
- binary, UI embedded
- 1
- platform targets
- 7
- managed components
- 4
- local dashboard
- :19800
figures measured by the project
On the plate
What NullHub does.
Manifest-driven install wizard
Each component publishes a nullhub-manifest.json describing its installation, wizard steps, launch and health checks. NullHub is a generic engine that interprets them — in the terminal or the browser.
Process supervision
Start, stop, restart, crash recovery with backoff. Periodic HTTP health checks feed the dashboard status cards.
Updates with rollback
check-updates, update, update-all: download the new version, migrate config, roll back on failure.
Live logs over SSE
Tail or follow logs per instance — nullhub logs <c>/<n> -f in the terminal, live streaming in the browser.
Multi-instance
Run several instances of the same component side by side. Everything is addressed as component/instance-name.
Web UI, CLI and raw API
Browser dashboard for humans, CLI for automation, and nullhub api for raw JSON access to every endpoint.
Takeaway
One binary, packed to go.
Cross-compiled by nullbuilder for every kitchen — no runtime, no installer, nothing else on the plate.
Start the server, then add components from the same binary — the terminal wizard and the web UI run the same manifest-driven flow.
# start the server and open the dashboard
nullhub
# → http://nullhub.localhost:19800
# add components (terminal wizard)
nullhub install nullclaw
nullhub install nullwatch
# run and inspect
nullhub start-all
nullhub statusPairs well with
Pre-1.0 and calendar-versioned (v2026.x.y): config and CLI may change between releases.