Documentation Index
Fetch the complete documentation index at: https://agdiai-597e782f.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Gateway CLI
The Gateway is Agdi’s WebSocket server (channels, nodes, sessions, hooks). Subcommands in this page live underagdi gateway ….
Related docs:
Run the Gateway
Run a local Gateway process:- By default, the Gateway refuses to start unless
gateway.mode=localis set in~/.agdi/agdi.json. Use--allow-unconfiguredfor ad-hoc/dev runs. - Binding beyond loopback without auth is blocked (safety guardrail).
SIGUSR1triggers an in-process restart when authorized (commands.restartis enabled by default; setcommands.restart: falseto block manual restart, while gateway tool/config apply/update remain allowed).SIGINT/SIGTERMhandlers stop the gateway process, but they don’t restore any custom terminal state. If you wrap the CLI with a TUI or raw-mode input, restore the terminal before exit.
Options
--port <port>: WebSocket port (default comes from config/env; usually18789).--bind <loopback|lan|tailnet|auto|custom>: listener bind mode.--auth <token|password>: auth mode override.--token <token>: token override (also setsOPENCLAW_GATEWAY_TOKENfor the process).--password <password>: password override. Warning: inline passwords can be exposed in local process listings.--password-file <path>: read the gateway password from a file.--tailscale <off|serve|funnel>: expose the Gateway via Tailscale.--tailscale-reset-on-exit: reset Tailscale serve/funnel config on shutdown.--allow-unconfigured: allow gateway start withoutgateway.mode=localin config.--dev: create a dev config + workspace if missing (skips BOOTSTRAP.md).--reset: reset dev config + credentials + sessions + workspace (requires--dev).--force: kill any existing listener on the selected port before starting.--verbose: verbose logs.--claude-cli-logs: only show claude-cli logs in the console (and enable its stdout/stderr).--ws-log <auto|full|compact>: websocket log style (defaultauto).--compact: alias for--ws-log compact.--raw-stream: log raw model stream events to jsonl.--raw-stream-path <path>: raw stream jsonl path.
Query a running Gateway
All query commands use WebSocket RPC. Output modes:- Default: human-readable (colored in TTY).
--json: machine-readable JSON (no styling/spinner).--no-color(orNO_COLOR=1): disable ANSI while keeping human layout.
--url <url>: Gateway WebSocket URL.--token <token>: Gateway token.--password <password>: Gateway password.--timeout <ms>: timeout/budget (varies per command).--expect-final: wait for a “final” response (agent calls).
--url, the CLI does not fall back to config or environment credentials.
Pass --token or --password explicitly. Missing explicit credentials is an error.
gateway health
gateway status
gateway status shows the Gateway service (launchd/systemd/schtasks) plus an optional RPC probe.
--url <url>: override the probe URL.--token <token>: token auth for the probe.--password <password>: password auth for the probe.--timeout <ms>: probe timeout (default10000).--no-probe: skip the RPC probe (service-only view).--deep: scan system-level services too.--require-rpc: exit non-zero when the RPC probe fails. Cannot be combined with--no-probe.
gateway statusresolves configured auth SecretRefs for probe auth when possible.- If a required auth SecretRef is unresolved in this command path,
gateway status --jsonreportsrpc.authWarningwhen probe connectivity/auth fails; pass--token/--passwordexplicitly or resolve the secret source first. - If the probe succeeds, unresolved auth-ref warnings are suppressed to avoid false positives.
- Use
--require-rpcin scripts and automation when a listening service is not enough and you need the Gateway RPC itself to be healthy. - On Linux systemd installs, service auth drift checks read both
Environment=andEnvironmentFile=values from the unit (including%h, quoted paths, multiple files, and optional-files).
gateway probe
gateway probe is the “debug everything” command. It always probes:
- your configured remote gateway (if set), and
- localhost (loopback) even if remote is configured.
Reachable: yesmeans at least one target accepted a WebSocket connect.RPC: okmeans detail RPC calls (health/status/system-presence/config.get) also succeeded.RPC: limited - missing scope: operator.readmeans connect succeeded but detail RPC is scope-limited. This is reported as degraded reachability, not full failure.- Exit code is non-zero only when no probed target is reachable.
--json):
- Top level:
ok: at least one target is reachable.degraded: at least one target had scope-limited detail RPC.
- Per target (
targets[].connect):ok: reachability after connect + degraded classification.rpcOk: full detail RPC success.scopeLimited: detail RPC failed due to missing operator scope.
Remote over SSH (Mac app parity)
The macOS app “Remote over SSH” mode uses a local port-forward so the remote gateway (which may be bound to loopback only) becomes reachable atws://127.0.0.1:<port>.
CLI equivalent:
--ssh <target>:user@hostoruser@host:port(port defaults to22).--ssh-identity <path>: identity file.--ssh-auto: pick the first discovered gateway host as SSH target (LAN/WAB only).
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Low-level RPC helper.
Manage the Gateway service
gateway installsupports--port,--runtime,--token,--force,--json.- When token auth requires a token and
gateway.auth.tokenis SecretRef-managed,gateway installvalidates that the SecretRef is resolvable but does not persist the resolved token into service environment metadata. - If token auth requires a token and the configured token SecretRef is unresolved, install fails closed instead of persisting fallback plaintext.
- For password auth on
gateway run, preferOPENCLAW_GATEWAY_PASSWORD,--password-file, or a SecretRef-backedgateway.auth.passwordover inline--password. - In inferred auth mode, shell-only
OPENCLAW_GATEWAY_PASSWORDdoes not relax install token requirements; use durable config (gateway.auth.passwordor configenv) when installing a managed service. - If both
gateway.auth.tokenandgateway.auth.passwordare configured andgateway.auth.modeis unset, install is blocked until mode is set explicitly. - Lifecycle commands accept
--jsonfor scripting.
Discover gateways (Bonjour)
gateway discover scans for Gateway beacons (_agdi-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): choose a domain (example:
agdi.internal.) and set up split DNS + a DNS server; see /gateway/bonjour
role(gateway role hint)transport(transport hint, e.g.gateway)gatewayPort(WebSocket port, usually18789)sshPort(SSH port; defaults to22if not present)tailnetDns(MagicDNS hostname, when available)gatewayTls/gatewayTlsSha256(TLS enabled + cert fingerprint)cliPath(optional hint for remote installs)
gateway discover
--timeout <ms>: per-command timeout (browse/resolve); default2000.--json: machine-readable output (also disables styling/spinner).