Identity
Ports
Inbound is default-deny (ufw). “LAN” below means private IPv4 source ranges only (10/8, 172.16/12, 192.168/16, 169.254/16, 100.64/10) — anything else on IPv4 is dropped. IPv6 is not source-scoped. Full rules: Networking → Firewall.
Also closed at the firewall: 631 CUPS (left running — loopback printing still works), 111 rpcbind (additionally disabled + masked), 8384 Syncthing if present, and anything else binding
0.0.0.0.
Paths
OpenClaw / dual editions only
Hermes / dual editions only
Services (systemd)
Every edition:clawbox-setup (web, port 80) · clawbox-ap (+-watchdog.timer) · clawbox-vnc + clawbox-websockify · clawbox-browser (CDP, on demand) · clawbox-heartbeat.timer (+ .service) · clawbox-tunnel (optional, off by default) · clawbox-performance · clawbox-embed (memory-search embedder, on demand) · clawbox-root-update@<step> (privileged installer steps) · ollama.
OpenClaw / dual: clawbox-gateway (pre-start self-heal script).
Hermes / dual: clawbox-hermes-dashboard · clawbox-hermes-dashboard-proxy. On Hermes the gateway unit is masked — an active clawbox-gateway there is a hard install failure.
Commands (over SSH)
Key API endpoints (/setup-api/*, session-cookie or MCP-bearer auth)
Gotchas (hard-won)
:18789never accepts your password — it’s the OpenClaw gateway (OpenClaw/dual); use plainhttp://<ip>. On Hermes it is closed entirely (connection refused) and the equivalent surface is the session-gated dashboard proxy on:8090.- Browser login ≠ separate password — same Linux password as SSH; failures are usually autofill,
unix_chkpwdperms (-rwxr-sr-x root shadow), a stale build, or password encoding. Ladder: Troubleshooting. git pullis not an update — always finish withsudo bash install.sh; otherwise service files + the agent core go stale (token mismatch,Unrecognized key). Hard-sync to the box’s own.update-branch, not a hardcodedmain.- Local commits silently block updates on stable ≤ current release (“up to date” forever); beta shows “Updates paused” + one-click reset. Manual fix = hard-sync (Recovery C).
- Two OpenAI lanes (OpenClaw/dual): both are
openai/…since OpenClaw 2 — API key = profileopenai:default+sk-…; ChatGPT subscription = OAuth profileopenai:chatgptplusagents.defaults.models."openai/<id>".agentRuntime.id = "codex". Different catalogs (the API lane carries the-protiers in addition togpt-5.4/5.5/5.6; the subscription carries no-pro), different credentials. Thecodex/…namespace is retired (Unknown model);doctor --fixrewrites it. Stale-key 401s after switching are self-healed on beta. On Hermes there is no OpenAI API-key lane at all — OpenAI is sign-in (Codex) only, and the key providers are OpenRouter, Anthropic, Gemini, z.ai and Kimi. - Secrets live in
auth-profiles.json(OpenClaw/dual), notopenclaw.json(metadata only). The codex session is additionally per-agent incodex-home/auth.json. On Hermes, credentials are held byhermes auth addunder~/.hermes. clawbox.localfailing ≠ box down — mDNS/Windows/router multicast issue; the IP always works.- The last update step reboots the box — 1–2 min offline is normal, not a hang.
- Factory reset password is
clawbox— and the box comes back in AP mode (ClawBox-Setup→10.42.0.1). It keepsdata/network.env,data/llamacpp/modelsand~/.hermes/hermes-agent, and the portal device id is re-derived from/etc/machine-id. Never hand-roll it withrm -rf ~/.hermesorrm -rf data/*— see Recovery D. - Version label ≠ running code —
package.jsonis read live; verify actual deployment via.next/BUILD_IDmtime. - Plan gates are internal names off by one — the internal
flashtier is marketed Pro, internalprois Max. Memory Shard and the Coding Agent need either paid tier; the cloud voice and the edition swap need Max; cloud transcription is on every connected box including Free. - ClawBox AI chat has no model picker — the chat is pinned to the flash alias (a saved pro-alias choice is migrated to it) and renders no model pill. Plan differences are allowance and device features.
- Nothing heavy is installed by an update — only the llama.cpp runtime and Gemma 4. Kokoro, Whisper and the ~640 MB embedding model arrive through
voice_kokoro_install,voice_whisper_installandembed_model, all owner-started and all offUI_ROOT_STEPS. - A provider or model change does not restart the gateway — it is hot-applied to the running agent, and open sessions are re-pointed. A change that does restart it (a subscription sign-in that migrates the auth store) waits for the gateway to answer again before sweeping sessions.

