Node guide

← Back to console

1 · Deploy & verify

Deploy with Coolify (Docker Compose stack or standalone Dockerfile.coolify — see the repository's docs/COOLIFY-DEPLOYMENT.md), or run the binary directly on your own machine (loopback by default, no token needed).

curl https://your-domain/v1/health
# {"status":"ok","uptimeSeconds":…,"nodeVersion":"…","protocolVersion":"1"}

Health and version are the only unauthenticated endpoints — metadata only, safe for orchestrator probes.

2 · Secure remote administration

  1. Generate a high-entropy token on the server: openssl rand -hex 32
  2. Set it as environment variable HOMICORE_NODE_ADMIN_TOKEN (Coolify: environment variables of the stack) and redeploy.
  3. Use HTTPS for your domain — the token only works over TLS.
  4. Open /admin remotely: the sign-in screen takes a username (a local label only — the server never records it) and the admin token, which is the actual credential. The session lasts for the browser session; use Sign out to end it.

Wrong tokens are rate-limited (10 failures → 5-minute lockout). Lost token: generate a new one and redeploy — there is deliberately no unauthenticated recovery path. From the machine itself, http://127.0.0.1:7441/admin needs no token.

3 · Add a local model runtime

The node never downloads models and never exposes the runtime's port. Install the runtime next to the node:

HOMICORE_NODE_ALLOW_PRIVATE_NETWORK_RUNTIMES: "true"
HOMICORE_NODE_CONFIG: '{"runtimes":[{"id":"ollama","kind":"ollama","endpoint":"http://ollama:11434"}]}'

Endpoints must be loopback, Unix sockets, or (opted-in) same-host private networks. Public addresses are refused even when opted in, and hostname resolution is re-validated on every connection — the endpoint can never drift to the public internet (ADR-0023).

4 · Guided setup & certification

In the console click Run guided setup: it detects the runtime, selects a model, runs a bounded test inference (must return schema-conformant JSON), then runs certification against the synthetic corpus (tiers R1 read-only / R2 structured / W1 proposal-eligible).

5 · Pair devices (phones, apps)

  1. Console → Pair device — a one-time code appears (short expiry, single use, rate-limited).
  2. Enter the code on the device. Verify the node fingerprint the device shows against the server certificate — out-of-band if possible. Pairing is only as trustworthy as this check.
  3. The device receives its own client certificate. Every request authenticates with it; revoke any client anytime from the console list.

6 · Link the HomiCore gateway (HRP)

The HomiCore cloud connects through Pair HomiCore gateway — the same one-time-code flow with role gateway. The cloud is never more trusted than a phone: no database access, no bearer tokens, no connector secrets exist on this node (ADR-0011).

7 · Away from home (relay)

Remote device access uses the outbound relay: the node dials out to your relay over WebSocket — nothing listens publicly, no router port forwarding ever.

HOMICORE_NODE_RELAY_ENABLED=true
HOMICORE_NODE_RELAY_URL=wss://relay.example.com/ws
HOMICORE_NODE_RELAY_NODE_ID=my-node-1

The relay sees only encrypted tunnel bytes. Status: console "Remote access" card or /v1/relay/status.

8 · Day-to-day operations

TaskWhere
See clients, revoke a deviceConsole → paired clients table
Re-certify after replacing a modelConsole → models table → Certify
Inference counts & latency (never content)Console → safe diagnostics
Back up identity + secretsBack up the data directory (/data; 0600 files)
Rotate server certificatePOST /v1/admin/certificates/rotate-server

9 · Troubleshooting

SymptomCause & fix
401 from /admin off-machineNo/missing admin token, or domain is plain HTTP. Set the token, use HTTPS.
429 rate_limited10 wrong token attempts — wait 5 minutes.
No models in consoleRuntime unreachable or no models pulled — re-run guided setup step 1.
uncertified / stale modelRun Certify again; replaced models always need re-certification.
422 certification_below_minimumCaller demanded a tier the model's current certification doesn't meet.
Health ok, inference 503No runtime registered or adapters down — the node never falls back to cloud.

10 · What this node will never do

Store the household database · hold bank credentials · execute PendingActions or smart-home controls · give the model shell, filesystem, or internet access · silently fall back to cloud inference. A request for any of these is a boundary violation, not a missing feature (docs/planning/product-boundary.md).