4.6 KiB
mac-7 browser worker runbook
Date: 2026-03-18 Status: active
Purpose
Provide a single operational reference for the mac-7 = eyes browser worker setup used for unattended Chrome automation and remote CDP access from the tailnet.
Role in cluster
mac-5 = brain: control plane / orchestration / local human-in-the-loop takeovermac-7 = eyes: browser automation worker / verification / remote CDP host
Active architecture
Local automation Chrome on mac-7
- Browser: Google Chrome
- Executable:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
- Dedicated automation profile dir:
/Users/lingyuzeng/.openclaw/browser/mac7-automation-profile
- Local CDP listener:
127.0.0.1:9333
- Validation:
http://127.0.0.1:9333/json/version
Tailnet-facing CDP proxy
- Tailnet IP:
100.64.0.23
- Stable remote CDP endpoint:
http://100.64.0.23:9223
- Forwarding:
100.64.0.23:9223 -> 127.0.0.1:9333
- Validation:
http://100.64.0.23:9223/json/version
Durable components
LaunchAgents
1) Chrome automation launcher
- plist:
/Users/lingyuzeng/Library/LaunchAgents/com.lingyuzeng.chrome-cdp-mac7.plist
- current behavior:
- runs
/bin/zsh /Users/lingyuzeng/.openclaw/bin/start_chrome_cdp_mac7.sh RunAtLoad = true- no
KeepAlive
- runs
2) Tailnet proxy launcher
- plist:
/Users/lingyuzeng/Library/LaunchAgents/com.lingyuzeng.chrome-cdp-tailnet-proxy-mac7.plist
- current behavior:
- runs
/usr/local/bin/python3 /Users/lingyuzeng/.openclaw/bin/chrome_cdp_tailnet_proxy.py RunAtLoad = trueKeepAlive = true
- runs
Scripts
1) Chrome startup wrapper
- path:
/Users/lingyuzeng/.openclaw/bin/start_chrome_cdp_mac7.sh
- responsibility:
- check whether
127.0.0.1:9333is already listening - if yes, exit without launching a second Chrome instance
- if no, launch Chrome once with the dedicated automation profile and CDP flags
- check whether
2) Tailnet proxy script
- path:
/Users/lingyuzeng/.openclaw/bin/chrome_cdp_tailnet_proxy.py
- responsibility:
- bind
100.64.0.23:9223 - forward raw TCP traffic to
127.0.0.1:9333
- bind
Verification commands
On mac-7
Check listeners:
lsof -nP -iTCP:9333 -sTCP:LISTEN
lsof -nP -iTCP:9223 -sTCP:LISTEN
Check local CDP:
curl http://127.0.0.1:9333/json/version
Check tailnet CDP:
curl http://100.64.0.23:9223/json/version
Check LaunchAgent state:
launchctl print gui/$(id -u)/com.lingyuzeng.chrome-cdp-mac7
launchctl print gui/$(id -u)/com.lingyuzeng.chrome-cdp-tailnet-proxy-mac7
From mac-5 / control plane
OpenClaw profile used for remote control:
- browser profile:
remote-mac7 - cdpUrl:
http://100.64.0.23:9223
Useful checks:
openclaw browser --browser-profile remote-mac7 status
openclaw browser --browser-profile remote-mac7 tabs
openclaw browser --browser-profile remote-mac7 snapshot
Known incident and fix
Incident: repeated blank tabs
Observed on 2026-03-18:
- many
about:blanktabs kept appearing in the automation Chrome profile - remote CDP profile on mac-5 showed the tab count growing continuously
Root cause
The original com.lingyuzeng.chrome-cdp-mac7 LaunchAgent was incorrect:
- it directly executed Chrome
- it used
KeepAlive = true - it included
about:blankinProgramArguments
On macOS, Chrome reopened into the existing browser session, printed 正在现有的浏览器会话中打开。, exited with code 0, and launchd immediately ran it again.
That loop injected endless new blank tabs into the same automation session.
Correct pattern
Use a wrapper script that checks whether the CDP port is already active before launching Chrome. Do not restore the old pattern of:
- direct Chrome exec from launchd
KeepAlive = trueabout:blankin LaunchAgent arguments
Logs
Chrome automation logs
/Users/lingyuzeng/Library/Logs/chrome-cdp-mac7.stdout.log/Users/lingyuzeng/Library/Logs/chrome-cdp-mac7.stderr.log
Tailnet proxy logs
/Users/lingyuzeng/Library/Logs/chrome-cdp-tailnet-proxy-mac7.stdout.log/Users/lingyuzeng/Library/Logs/chrome-cdp-tailnet-proxy-mac7.stderr.log
Operational rules
- Treat
127.0.0.1:9333as the stable local automation endpoint on mac-7. - Treat
100.64.0.23:9223as the stable tailnet-facing remote CDP endpoint. - Use mac-5
user/existing-sessionfor local signed-in browser takeover. - Use mac-7 browser worker for unattended automation and verification.
- If blank tabs start multiplying again, inspect the Chrome LaunchAgent first before blaming the OpenClaw remote profile.