coderClaw

Android App (Node)

Support snapshot

System control

System control (launchd/systemd) lives on the Gateway host. See Gateway.

Connection Runbook

Android node app ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway

Android connects directly to the Gateway WebSocket (default ws://<host>:18789) and uses Gateway-owned pairing.

Prerequisites

1) Start the Gateway

coderclaw gateway --port 18789 --verbose

Confirm in logs you see something like:

For tailnet-only setups (recommended for Vienna ⇄ London), bind the gateway to the tailnet IP:

2) Verify discovery (optional)

From the gateway machine:

dns-sd -B _coderclaw-gw._tcp local.

More debugging notes: Bonjour.

Tailnet (Vienna ⇄ London) discovery via unicast DNS-SD

Android NSD/mDNS discovery won’t cross networks. If your Android node and the gateway are on different networks but connected via Tailscale, use Wide-Area Bonjour / unicast DNS-SD instead:

  1. Set up a DNS-SD zone (example coderclaw.internal.) on the gateway host and publish _coderclaw-gw._tcp records.
  2. Configure Tailscale split DNS for your chosen domain pointing at that DNS server.

Details and example CoreDNS config: Bonjour.

3) Connect from Android

In the Android app:

After the first successful pairing, Android auto-reconnects on launch:

4) Approve pairing (CLI)

On the gateway machine:

coderclaw nodes pending
coderclaw nodes approve <requestId>

Pairing details: Gateway pairing.

5) Verify the node is connected

6) Chat + history

The Android node’s Chat sheet uses the gateway’s primary session key (main), so history and replies are shared with WebChat and other clients:

7) Canvas + camera

If you want the node to show real HTML/CSS/JS that the agent can edit on disk, point the node at the Gateway canvas host.

Note: nodes load canvas from the Gateway HTTP server (same port as gateway.port, default 18789).

  1. Create ~/.coderclaw/workspace/canvas/index.html on the gateway host.

  2. Navigate the node to it (LAN):

coderclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__coderclaw__/canvas/"}'

Tailnet (optional): if both devices are on Tailscale, use a MagicDNS name or tailnet IP instead of .local, e.g. http://<gateway-magicdns>:18789/__coderclaw__/canvas/.

This server injects a live-reload client into HTML and reloads on file changes. The A2UI host lives at http://<gateway-host>:18789/__coderclaw__/a2ui/.

Canvas commands (foreground only):

Camera commands (foreground only; permission-gated):

See Camera node for parameters and CLI helpers.