Gateway Runbook
Gateway runbook
Section titled “Gateway runbook”Use this page for day-1 startup and day-2 operations of the Gateway service.
5-minute local startup
Section titled “5-minute local startup”builderforce gateway --port 18789# debug/trace mirrored to stdiobuilderforce gateway --port 18789 --verbose# force-kill listener on selected port, then startbuilderforce gateway --forcebuilderforce gateway statusbuilderforce statusbuilderforce logs --followHealthy baseline: Runtime: running and RPC probe: ok.
builderforce channels status --probeRuntime model
Section titled “Runtime model”- One always-on process for routing, control plane, and channel connections.
- Single multiplexed port for:
- WebSocket control/RPC
- HTTP APIs (OpenAI-compatible, Responses, tools invoke)
- Control UI and hooks
- Default bind mode:
loopback. - Auth is required by default (
gateway.auth.token/gateway.auth.password, orBUILDERFORCE_AGENTS_GATEWAY_TOKEN/BUILDERFORCE_AGENTS_GATEWAY_PASSWORD).
Port and bind precedence
Section titled “Port and bind precedence”| Setting | Resolution order |
|---|---|
| Gateway port | --port → BUILDERFORCE_AGENTS_GATEWAY_PORT → gateway.port → 18789 |
| Bind mode | CLI/override → gateway.bind → loopback |
Hot reload modes
Section titled “Hot reload modes”gateway.reload.mode | Behavior |
|---|---|
off | No config reload |
hot | Apply only hot-safe changes |
restart | Restart on reload-required changes |
hybrid (default) | Hot-apply when safe, restart when required |
Operator command set
Section titled “Operator command set”builderforce gateway statusbuilderforce gateway status --deepbuilderforce gateway status --jsonbuilderforce gateway installbuilderforce gateway restartbuilderforce gateway stopbuilderforce logs --followbuilderforce doctorRemote access
Section titled “Remote access”Preferred: Tailscale/VPN. Fallback: SSH tunnel.
ssh -N -L 18789:127.0.0.1:18789 user@hostThen connect clients to ws://127.0.0.1:18789 locally.
See: Remote Gateway, Authentication, Tailscale.
Supervision and service lifecycle
Section titled “Supervision and service lifecycle”Use supervised runs for production-like reliability.
builderforce gateway installbuilderforce gateway statusbuilderforce gateway restartbuilderforce gateway stopLaunchAgent labels are ai.builderforce.gateway (default) or ai.builderforce.<profile> (named profile). builderforce doctor audits and repairs service config drift.
builderforce gateway installsystemctl --user enable --now builderforce-gateway[-<profile>].servicebuilderforce gateway statusFor persistence after logout, enable lingering:
sudo loginctl enable-linger <user>Use a system unit for multi-user/always-on hosts.
sudo systemctl daemon-reloadsudo systemctl enable --now builderforce-gateway[-<profile>].serviceMultiple gateways on one host
Section titled “Multiple gateways on one host”Most setups should run one Gateway. Use multiple only for strict isolation/redundancy (for example a rescue profile).
Checklist per instance:
- Unique
gateway.port - Unique
BUILDERFORCE_AGENTS_CONFIG_PATH - Unique
BUILDERFORCE_AGENTS_STATE_DIR - Unique
agents.defaults.workspace
Example:
BUILDERFORCE_AGENTS_CONFIG_PATH=~/.builderforce/a.json BUILDERFORCE_AGENTS_STATE_DIR=~/.builderforce-a builderforce gateway --port 19001BUILDERFORCE_AGENTS_CONFIG_PATH=~/.builderforce/b.json BUILDERFORCE_AGENTS_STATE_DIR=~/.builderforce-b builderforce gateway --port 19002See: Multiple gateways.
Dev profile quick path
Section titled “Dev profile quick path”builderforce --dev setupbuilderforce --dev gateway --allow-unconfiguredbuilderforce --dev statusDefaults include isolated state/config and base gateway port 19001.
Protocol quick reference (operator view)
Section titled “Protocol quick reference (operator view)”- First client frame must be
connect. - Gateway returns
hello-oksnapshot (presence,health,stateVersion,uptimeMs, limits/policy). - Requests:
req(method, params)→res(ok/payload|error). - Common events:
connect.challenge,agent,chat,presence,tick,health,heartbeat,shutdown.
Agent runs are two-stage:
- Immediate accepted ack (
status:"accepted") - Final completion response (
status:"ok"|"error"), with streamedagentevents in between.
See full protocol docs: Gateway Protocol.
Operational checks
Section titled “Operational checks”Liveness
Section titled “Liveness”- Open WS and send
connect. - Expect
hello-okresponse with snapshot.
Readiness
Section titled “Readiness”builderforce gateway statusbuilderforce channels status --probebuilderforce healthGap recovery
Section titled “Gap recovery”Events are not replayed. On sequence gaps, refresh state (health, system-presence) before continuing.
Common failure signatures
Section titled “Common failure signatures”| Signature | Likely issue |
|---|---|
refusing to bind gateway ... without auth | Non-loopback bind without token/password |
another gateway instance is already listening / EADDRINUSE | Port conflict |
Gateway start blocked: set gateway.mode=local | Config set to remote mode |
unauthorized during connect | Auth mismatch between client and gateway |
For full diagnosis ladders, use Gateway Troubleshooting.
Safety guarantees
Section titled “Safety guarantees”- Gateway protocol clients fail fast when Gateway is unavailable (no implicit direct-channel fallback).
- Invalid/non-connect first frames are rejected and closed.
- Graceful shutdown emits
shutdownevent before socket close.
Related: