2026-01-10 16:03:01 +01:00
|
|
|
|
---
|
2026-01-11 10:15:37 +00:00
|
|
|
|
summary: "Gateway runtime on macOS (external launchd service)"
|
2026-01-10 16:03:01 +01:00
|
|
|
|
read_when:
|
|
|
|
|
|
- Packaging Clawdbot.app
|
2026-01-11 10:15:37 +00:00
|
|
|
|
- Debugging the macOS gateway launchd service
|
|
|
|
|
|
- Installing the gateway CLI for macOS
|
2026-01-10 16:03:01 +01:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
# Gateway on macOS (external launchd)
|
|
|
|
|
|
|
|
|
|
|
|
Clawdbot.app no longer bundles Node/Bun or the Gateway runtime. The macOS app
|
2026-01-18 16:29:33 +00:00
|
|
|
|
expects an **external** `clawdbot` CLI install, does not spawn the Gateway as a
|
|
|
|
|
|
child process, and manages a per‑user launchd service to keep the Gateway
|
|
|
|
|
|
running (or attaches to an existing local Gateway if one is already running).
|
2026-01-11 10:15:37 +00:00
|
|
|
|
|
|
|
|
|
|
## Install the CLI (required for local mode)
|
|
|
|
|
|
|
|
|
|
|
|
You need Node 22+ on the Mac, then install `clawdbot` globally:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm install -g clawdbot@<version>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-13 07:58:47 +00:00
|
|
|
|
The macOS app’s **Install CLI** button runs the same flow via npm/pnpm (bun not recommended for Gateway runtime).
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
## Launchd (Gateway as LaunchAgent)
|
|
|
|
|
|
|
|
|
|
|
|
Label:
|
2026-01-11 02:17:10 +01:00
|
|
|
|
- `com.clawdbot.gateway` (or `com.clawdbot.<profile>`)
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
Plist location (per‑user):
|
|
|
|
|
|
- `~/Library/LaunchAgents/com.clawdbot.gateway.plist`
|
2026-01-15 05:22:09 +00:00
|
|
|
|
(or `~/Library/LaunchAgents/com.clawdbot.<profile>.plist`)
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
Manager:
|
2026-01-11 10:15:37 +00:00
|
|
|
|
- The macOS app owns LaunchAgent install/update in Local mode.
|
2026-01-21 17:45:12 +00:00
|
|
|
|
- The CLI can also install it: `clawdbot gateway install`.
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
Behavior:
|
|
|
|
|
|
- “Clawdbot Active” enables/disables the LaunchAgent.
|
|
|
|
|
|
- App quit does **not** stop the gateway (launchd keeps it alive).
|
2026-01-18 16:29:33 +00:00
|
|
|
|
- If a Gateway is already running on the configured port, the app attaches to
|
|
|
|
|
|
it instead of starting a new one.
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
Logging:
|
|
|
|
|
|
- launchd stdout/err: `/tmp/clawdbot/clawdbot-gateway.log`
|
|
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
## Version compatibility
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
The macOS app checks the gateway version against its own version. If they’re
|
|
|
|
|
|
incompatible, update the global CLI to match the app version.
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
## Smoke check
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-01-11 10:15:37 +00:00
|
|
|
|
clawdbot --version
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
2026-01-13 08:11:59 +00:00
|
|
|
|
CLAWDBOT_SKIP_CHANNELS=1 \
|
2026-01-10 16:03:01 +01:00
|
|
|
|
CLAWDBOT_SKIP_CANVAS_HOST=1 \
|
2026-01-11 10:15:37 +00:00
|
|
|
|
clawdbot gateway --port 18999 --bind loopback
|
2026-01-10 16:03:01 +01:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-11 10:15:37 +00:00
|
|
|
|
Then:
|
2026-01-10 16:03:01 +01:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-01-11 10:15:37 +00:00
|
|
|
|
clawdbot gateway call health --url ws://127.0.0.1:18999 --timeout 3000
|
2026-01-10 16:03:01 +01:00
|
|
|
|
```
|