CLI ↔ agent IPC
The CLI and the local agent are separate processes. They talk over a per-user Unix domain socket, never a network port, so the local control plane is not reachable off the machine.
Transport
Section titled “Transport”Transport: Unix domain socket, one per userPath: ~/.routeup/agent.sock $XDG_RUNTIME_DIR/routeup/agent.sock on Linux when availablePermissions: 0700 directory, 0600 socketWire format: JSON over HTTP/1.1Auth: filesystem permissions only (no token on the local socket)Versioning: /v1/ URL prefix; GET /v1/status reports version and boot idFilesystem permissions are the entire auth model here: only your user can read or write the socket, so no token is needed for local control.
API surface
Section titled “API surface”POST /v1/routes register a route claimDELETE /v1/routes/{name} release a claimGET /v1/routes list active routesGET /v1/owners/{name} attach a serve-owner control streamPOST /v1/owners/{name}/stop request cooperative owner shutdownPOST /v1/owners/{name}/ack acknowledge stop receiptGET /v1/status agent status, version, uptime, boot idPOST /v1/shutdown graceful shutdownGET /v1/logs?route=&follow= stream access logs (SSE)GET /v1/requests/{id} inspect a retained request/response exchangePOST /v1/expose start public exposure for a claimed routePOST /v1/unexpose stop public exposureWhy the registry can be in-memory
Section titled “Why the registry can be in-memory”The status response carries a boot_id generated once per agent process. Live
CLI owners retain their exact desired state: serve and runner owners re-register
local claims; any owner with public exposure restores it; standalone expose
owners restore only their exposure. Foreground and detached owner processes are
the source of truth, so the agent never persists the route registry or tunnel
configuration to disk.
routeup stop uses the owner stream and acknowledgment endpoints. It never
signals a PID copied from the registry. Small non-secret runtime records contain
only record ID, route, owner kind, and PID so lifecycle commands can fail closed
while the in-memory agent is restarting; targets and credentials are not stored.
See Local agent for the daemon side and Conflict resolution for ownership rules.