Files
openclaw/docs/platforms/mac/bundled-gateway.md

64 lines
1.6 KiB
Markdown
Raw Normal View History

---
2026-01-11 10:15:37 +00:00
summary: "Gateway runtime on macOS (external launchd service)"
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-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
expects an **external** `clawdbot` CLI install and manages a peruser launchd
service to keep the Gateway running.
## Install the CLI (required for local mode)
You need Node 22+ on the Mac, then install `clawdbot` globally:
```bash
npm install -g clawdbot@<version>
```
The macOS apps **Install CLI** button runs the same flow via npm/pnpm/bun.
## Launchd (Gateway as LaunchAgent)
Label:
- `com.clawdbot.gateway` (or `com.clawdbot.<profile>`)
2026-01-11 10:15:37 +00:00
Plist location (peruser):
- `~/Library/LaunchAgents/com.clawdbot.gateway.plist`
Manager:
2026-01-11 10:15:37 +00:00
- The macOS app owns LaunchAgent install/update in Local mode.
- The CLI can also install it: `clawdbot daemon install`.
Behavior:
- “Clawdbot Active” enables/disables the LaunchAgent.
- App quit does **not** stop the gateway (launchd keeps it alive).
Logging:
- launchd stdout/err: `/tmp/clawdbot/clawdbot-gateway.log`
2026-01-11 10:15:37 +00:00
## Version compatibility
2026-01-11 10:15:37 +00:00
The macOS app checks the gateway version against its own version. If theyre
incompatible, update the global CLI to match the app version.
2026-01-11 10:15:37 +00:00
## Smoke check
```bash
2026-01-11 10:15:37 +00:00
clawdbot --version
CLAWDBOT_SKIP_PROVIDERS=1 \
CLAWDBOT_SKIP_CANVAS_HOST=1 \
2026-01-11 10:15:37 +00:00
clawdbot gateway --port 18999 --bind loopback
```
2026-01-11 10:15:37 +00:00
Then:
```bash
2026-01-11 10:15:37 +00:00
clawdbot gateway call health --url ws://127.0.0.1:18999 --timeout 3000
```