You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fleet: sandbox tailnet route to the laptop for the direct-API comms path (comms design G3) #2301
From the OpenClaw comms design for #2023 (doc PR for task 3381), gap G3.
The sandbox VM is not a tailnet node; its only laptop route is an SSH CONNECT proxy, which refused a proxied HTTP attempt to the OpenClaw gateway. The phase-2 direct-API comms path (Muse → gateway on the laptop tailnet bind) has no route until this closes.
Work:
Join the sandbox VM to the user's tailnet (a Tailscale connector already exists in Muse's environment), OR record the stated reason it is refused and design the relay fallback on an existing tailnet node.
Verify: from the sandbox, a TCP connection to the laptop gateway tailnet address succeeds at the network level (application auth is the G2 follow-up's concern, not this one's).
Expectation: triage done = current-state verdict with fresh evidence.
What changed since filing (verified fresh 2026-11-03):
At filing, the sandbox VM was not a tailnet node and its SSH CONNECT proxy refused proxied HTTP to the gateway. That premise no longer holds: the sandbox is now enrolled in the tailnet via Muse's Tailscale connector (this node: 100.115.16.3), with TCP egress to tailnet addresses through the runtime tunnel proxy.
The laptop (amd-6) is on the tailnet at 100.99.113.103 (confirmed from both sides: sandbox tailscale status and the laptop's own tailscale ip -4).
The OpenClaw gateway is listening on exactly the tailnet bind this issue targets: 100.99.113.103:18789 (openclaw-gateway.service active on the laptop).
Route demonstrated: from the sandbox, an HTTP request to http://100.99.113.103:18789/ through the tailnet tunnel returned HTTP 200 — the sandbox → laptop-gateway TCP path works at the network level, which is this issue's verification step (application auth remains the G2 follow-up's concern, as the issue itself scopes it).
Caveat for the record: the sandbox's tailnet presence is client-only via the connector tunnel (outbound TCP only, no inbound) — sufficient for the phase-2 direct-API comms path this gap blocked (Muse → gateway), which is the direction the design needed.
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
Activity
developing-today commentedon Oct 29, 2026
CODE-1155
docs(openclaw): link filed follow-ups #2300 #2301 #2302 in comms design
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
What changed since filing (verified fresh 2026-11-03):
tailscale statusand the laptop's owntailscale ip -4).100.99.113.103:18789(openclaw-gateway.service active on the laptop).http://100.99.113.103:18789/through the tailnet tunnel returned HTTP 200 — the sandbox → laptop-gateway TCP path works at the network level, which is this issue's verification step (application auth remains the G2 follow-up's concern, as the issue itself scopes it).Caveat for the record: the sandbox's tailnet presence is client-only via the connector tunnel (outbound TCP only, no inbound) — sufficient for the phase-2 direct-API comms path this gap blocked (Muse → gateway), which is the direction the design needed.
developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03