docs/gateway/gateway-lock.md
ws://127.0.0.1:18789) using an exclusive TCP listener.EADDRINUSE, startup throws GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>").GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>").GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …").openclaw gateway --port <port>./healthz responder leaves that process in control. On systemd, the duplicate starter exits with code 78 so the default RestartPreventExitStatus=78 stops Restart=always from looping on a lock or EADDRINUSE conflict. If the existing process never becomes healthy, retries are bounded and startup fails with a clear lock error instead of looping forever.EADDRINUSE and port conflicts