coderClaw

Remote CoderClaw (macOS ⇄ remote host)

This flow lets the macOS app act as a full remote control for a CoderClaw gateway running on another host (desktop/server). It’s the app’s Remote over SSH (remote run) feature. All features—health checks, Voice Wake forwarding, and Web Chat—reuse the same remote SSH configuration from Settings → General.

Modes

Remote transports

Remote mode supports two transports:

Prereqs on the remote host

  1. Install Node + pnpm and build/install the CoderClaw CLI (pnpm install && pnpm build && pnpm link --global).
  2. Ensure coderclaw is on PATH for non-interactive shells (symlink into /usr/local/bin or /opt/homebrew/bin if needed).
  3. Open SSH with key auth. We recommend Tailscale IPs for stable reachability off-LAN.

macOS app setup

  1. Open Settings → General.
  2. Under CoderClaw runs, pick Remote over SSH and set:
    • Transport: SSH tunnel or Direct (ws/wss).
    • SSH target: user@host (optional :port).
      • If the gateway is on the same LAN and advertises Bonjour, pick it from the discovered list to auto-fill this field.
    • Gateway URL (Direct only): wss://gateway.example.ts.net (or ws://... for local/LAN).
    • Identity file (advanced): path to your key.
    • Project root (advanced): remote checkout path used for commands.
    • CLI path (advanced): optional path to a runnable coderclaw entrypoint/binary (auto-filled when advertised).
  3. Hit Test remote. Success indicates the remote coderclaw status --json runs correctly. Failures usually mean PATH/CLI issues; exit 127 means the CLI isn’t found remotely.
  4. Health checks and Web Chat will now run through this SSH tunnel automatically.

Web Chat

Permissions

Security notes

WhatsApp login flow (remote)

Troubleshooting

Notification sounds

Pick sounds per notification from scripts with coderclaw and node.invoke, e.g.:

coderclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass

There is no global “default sound” toggle in the app anymore; callers choose a sound (or none) per request.