spawn/packages/cli/src/shared
Ahmed Abushagur c77ca106d2
feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452)
OpenClaw runs a web dashboard on port 18791 of the remote VM. This
change SSH-tunnels that port to localhost and auto-opens the browser,
giving users a web UI with zero CLI knowledge needed.

- Add TunnelConfig to AgentConfig interface (agents.ts)
- Add startSshTunnel function with port-finding logic (ssh.ts)
- Capture gateway token in closure so the same token is used for both
  the remote config and the browser URL (agent-setup.ts)
- Wire tunnel into orchestration pipeline between preLaunch and
  interactiveSession (orchestrate.ts)
- Add getConnectionInfo to CloudOrchestrator interface and implement
  in all SSH-based clouds (DO, Hetzner, AWS, GCP)
- Local: opens browser directly at localhost:18791
- Sprite: gracefully skipped (no standard SSH)
- Add USER.md bootstrap to guide OpenClaw users to web dashboard

Closes #2449
Supersedes #2418

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: L <6723574+louisgv@users.noreply.github.com>
2026-03-10 14:25:43 -04:00
..
agent-setup.ts feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
agent-tarball.ts fix: precise try/catch error handling with logDebug diagnostics (#2397) 2026-03-09 17:58:12 -07:00
agents.ts feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
billing-guidance.ts refactor: remove dead code and stale references (#2349) 2026-03-08 16:44:33 -04:00
cloud-init.ts fix(security): add --proto '=https' to TypeScript curl provisioning calls (#2172) 2026-03-04 00:21:37 -08:00
oauth-constants.ts fix: restore hyphens in OAuth code regex + add regression test (#2171) 2026-03-03 22:52:29 -08:00
oauth.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00
orchestrate.ts feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
parse.ts refactor: restore @openrouter/spawn-shared workspace package (#2405) 2026-03-09 17:14:26 -07:00
paths.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00
result.ts refactor: restore @openrouter/spawn-shared workspace package (#2405) 2026-03-09 17:14:26 -07:00
ssh-keys.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00
ssh.ts feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
type-guards.ts refactor: restore @openrouter/spawn-shared workspace package (#2405) 2026-03-09 17:14:26 -07:00
ui.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00