openclaw/src/commands
Jefferson Warrior c851bdd47a feat: add Tailscale binary detection, IP binding modes, and health probe password fix
This PR includes three main improvements:

1. Tailscale Binary Detection with Fallback Strategies
   - Added findTailscaleBinary() with multi-strategy detection:
     * PATH lookup via 'which' command
     * Known macOS app path (/Applications/Tailscale.app/Contents/MacOS/Tailscale)
     * find /Applications for Tailscale.app
     * locate database lookup
   - Added getTailscaleBinary() with caching
   - Updated all Tailscale operations to use detected binary
   - Added TUI warning when Tailscale binary not found for serve/funnel modes

2. Custom Gateway IP Binding with Fallback
   - New bind mode "custom" allowing user-specified IP with fallback to 0.0.0.0
   - Removed "tailnet" mode (folded into "auto")
   - All modes now support graceful fallback: custom (if fail → 0.0.0.0), loopback (127.0.0.1 → 0.0.0.0), auto (tailnet → 0.0.0.0), lan (0.0.0.0)
   - Added customBindHost config option for custom bind mode
   - Added canBindTo() helper to test IP availability before binding
   - Updated configure and onboarding wizards with new bind mode options

3. Health Probe Password Auth Fix
   - Gateway probe now tries both new and old passwords
   - Fixes issue where password change fails health check if gateway hasn't restarted yet
   - Uses nextConfig password first, falls back to baseConfig password if needed

Files changed:
- src/infra/tailscale.ts: Binary detection + caching
- src/gateway/net.ts: IP binding with fallback logic
- src/config/types.ts: BridgeBindMode type + customBindHost field
- src/commands/configure.ts: Health probe dual-password try + Tailscale detection warning + bind mode UI
- src/wizard/onboarding.ts: Tailscale detection warning + bind mode UI
- src/gateway/server.ts: Use new resolveGatewayBindHost
- src/gateway/call.ts: Updated preferTailnet logic (removed "tailnet" mode)
- src/commands/onboard-types.ts: Updated GatewayBind type
- src/commands/onboard-helpers.ts: resolveControlUiLinks updated
- src/cli/*.ts: Updated bind mode casts
- src/gateway/call.test.ts: Removed "tailnet" mode test
2026-01-13 05:20:02 +00:00
..
models Add Synthetic provider support 2026-01-13 03:36:53 +00:00
onboarding Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
providers Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
status-all Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
agent-via-gateway.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
agent-via-gateway.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
agent.test.ts refactor(test): consolidate temp home + vitest setup 2026-01-09 16:41:05 +01:00
agent.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
agents.add.test.ts style: tidy cli formatting 2026-01-08 08:26:40 +01:00
agents.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
agents.ts feat: streamline wizard selection prompts 2026-01-12 05:08:07 +00:00
antigravity-oauth.ts chore: apply biome lint fixes 2026-01-03 05:10:09 +01:00
auth-choice-options.test.ts Auth: add Chutes OAuth 2026-01-13 04:50:26 +00:00
auth-choice-options.ts Auth: add Chutes OAuth 2026-01-13 04:50:26 +00:00
auth-choice-prompt.ts feat(model): add /model picker 2026-01-12 06:02:39 +00:00
auth-choice.test.ts Tests: clean chutes fetch spies 2026-01-13 04:50:27 +00:00
auth-choice.ts fix: harden Chutes OAuth flow (#726) (thanks @FrieSei) 2026-01-13 05:01:08 +00:00
auth-token.ts feat: update token auth flow 2026-01-09 08:13:05 +01:00
chutes-oauth.test.ts Chores: format chutes oauth 2026-01-13 04:50:26 +00:00
chutes-oauth.ts fix: harden Chutes OAuth flow (#726) (thanks @FrieSei) 2026-01-13 05:01:08 +00:00
cleanup-utils.ts style: format cleanup commands 2026-01-11 10:54:33 +00:00
configure.gateway-auth.test.ts fix: clear gateway auth on off selection 2026-01-12 22:59:37 +05:30
configure.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
daemon-runtime.ts fix(daemon): audit runtime best practices 2026-01-08 22:18:07 +00:00
dashboard.test.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
dashboard.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
docs.ts feat(status): improve status output 2026-01-10 23:32:07 +01:00
doctor-auth.ts fix: wrap clack notes for cleaner boxes 2026-01-11 04:23:43 +01:00
doctor-format.ts feat: improve gateway services and auto-reply commands 2026-01-11 02:27:16 +01:00
doctor-gateway-services.ts fix: improve daemon node selection 2026-01-12 08:33:32 +00:00
doctor-legacy-config.ts fix: wrap clack notes for cleaner boxes 2026-01-11 04:23:43 +01:00
doctor-prompter.ts fix: update gateway auth docs and clients 2026-01-11 01:51:24 +01:00
doctor-sandbox.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
doctor-security.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
doctor-state-integrity.ts fix: wrap clack notes for cleaner boxes 2026-01-11 04:23:43 +01:00
doctor-state-migrations.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
doctor-state-migrations.ts fix(doctor): add headless flags + auto-migrate sessions 2026-01-07 04:43:24 +01:00
doctor-ui.ts feat: cron agent binding + doctor UI refresh 2026-01-13 04:25:41 +00:00
doctor-workspace.test.ts fix: doctor ignore install dir in legacy workspace check 2026-01-10 16:23:35 +01:00
doctor-workspace.ts fix: doctor ignore install dir in legacy workspace check 2026-01-10 16:23:35 +01:00
doctor.test.ts fix: stabilize session tools and tests 2026-01-12 18:21:20 +00:00
doctor.ts feat: cron agent binding + doctor UI refresh 2026-01-13 04:25:41 +00:00
gateway-status.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
gateway-status.ts fix(gateway): show connect vs RPC status 2026-01-11 03:57:52 +01:00
google-gemini-model-default.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
google-gemini-model-default.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
health-format.test.ts test: clean up lint warnings 2026-01-10 16:17:02 +01:00
health-format.ts feat(cli): colorize gateway health + daemon output 2026-01-10 03:01:27 +01:00
health.command.coverage.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
health.snapshot.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
health.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
health.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
message-format.ts refactor: unify message tool + CLI 2026-01-13 00:12:57 +00:00
message.test.ts feat: unify message cli and tools 2026-01-09 08:30:24 +01:00
message.ts refactor: unify message tool + CLI 2026-01-13 00:12:57 +00:00
model-picker.ts fix: set default model after auth choice 2026-01-12 08:04:32 +00:00
models.list.test.ts fix(auth): billing backoff + cooldown UX 2026-01-09 22:00:14 +01:00
models.set.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
models.ts feat: add GitHub Copilot provider 2026-01-12 16:52:15 +00:00
onboard-auth.test.ts fix: apply lint fixes 2026-01-13 03:36:53 +00:00
onboard-auth.ts fix: harden Chutes OAuth flow (#726) (thanks @FrieSei) 2026-01-13 05:01:08 +00:00
onboard-helpers.test.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
onboard-helpers.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
onboard-interactive.ts feat: unify onboarding + config schema 2026-01-03 16:48:08 +01:00
onboard-non-interactive.gateway-auth.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
onboard-non-interactive.lan-auto-token.test.ts test: force real config module for lan onboarding test (#766) 2026-01-13 01:53:40 +00:00
onboard-non-interactive.remote.test.ts test(onboard): cover remote + lan token flows 2026-01-10 04:14:39 +00:00
onboard-non-interactive.ts Auth: add Chutes OAuth 2026-01-13 04:50:26 +00:00
onboard-providers.test.ts fix: QuickStart provider selection (#485) 2026-01-10 01:08:00 +01:00
onboard-providers.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
onboard-remote.ts feat: add onboarding doc links 2026-01-07 01:19:31 +01:00
onboard-skills.ts feat: add onboarding doc links 2026-01-07 01:19:31 +01:00
onboard-types.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
onboard.ts feat: add onboard reset option 2026-01-11 05:04:36 +01:00
openai-codex-model-default.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
openai-codex-model-default.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
opencode-zen-model-default.test.ts fix: align opencode-zen provider setup 2026-01-10 21:38:18 +01:00
opencode-zen-model-default.ts fix: align opencode-zen provider setup 2026-01-10 21:38:18 +01:00
providers.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
providers.ts chore: add provider logs command 2026-01-08 12:01:06 +01:00
reset.ts style: biome fixes 2026-01-11 10:35:16 +00:00
sandbox-display.ts style(sandbox): fix linting errors 2026-01-09 13:23:16 +01:00
sandbox-explain.test.ts fix: polish restart feedback + stabilize tests (#685) (thanks @carlulsoe) 2026-01-10 22:52:09 +01:00
sandbox-explain.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
sandbox-formatters.test.ts test(sandbox): add unit tests for formatter functions 2026-01-09 13:23:16 +01:00
sandbox-formatters.ts style(sandbox): fix linting errors 2026-01-09 13:23:16 +01:00
sandbox.test.ts fix(sandbox): compare list to config images (#563) - thanks @pasogott 2026-01-09 13:29:47 +01:00
sandbox.ts fix(sandbox): compare list to config images (#563) - thanks @pasogott 2026-01-09 13:29:47 +01:00
sessions.test.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
sessions.ts feat: show more session flags 2026-01-10 05:14:07 +01:00
setup.ts feat: wire multi-agent config and routing 2026-01-09 12:48:42 +00:00
signal-install.ts chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
status-all.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
status.test.ts Move provider to a plugin-architecture (#661) 2026-01-11 11:45:25 +00:00
status.ts feat: add Tailscale binary detection, IP binding modes, and health probe password fix 2026-01-13 05:20:02 +00:00
systemd-linger.ts fix: wrap clack notes for cleaner boxes 2026-01-11 04:23:43 +01:00
uninstall.ts style: biome fixes 2026-01-11 10:35:16 +00:00