feat: complete remote gateway support — iOS + Android (fixes #35)#45
Open
juliosuas wants to merge 1 commit intoIntent-Lab:mainfrom
Open
feat: complete remote gateway support — iOS + Android (fixes #35)#45juliosuas wants to merge 1 commit intoIntent-Lab:mainfrom
juliosuas wants to merge 1 commit intoIntent-Lab:mainfrom
Conversation
…-Lab#35) Enables VisionClaw to work outside the local network — critical for Talent Land demos and any use case where phone is on mobile data. ## How it works 1. New "Remote URL" field in Settings (e.g. Tailscale IP or public URL) 2. On session start, checkConnection() tries Remote URL first, then falls back to local Host — first reachable wins 3. Resolved URL is cached for the session (no re-probing per tool call) 4. Both OpenClawBridge AND OpenClawEventClient use the resolved URL 5. If the remote fails mid-session, cache is invalidated and next call re-resolves ## Changes (both platforms) ### OpenClawBridge - New resolveGatewayBaseURL with proper 2-step health check (/health + /v1/chat/completions) and specific error messages - Cached resolved URL — no latency penalty per tool call - Auto-invalidation on network errors (triggers re-resolve) - x-openclaw-scopes: operator.write header added ### OpenClawEventClient - New overrideBaseURL property — uses resolved gateway URL - Proper ws:// → wss:// upgrade when host uses https:// ### SettingsManager + SettingsView/SettingsScreen - New openClawRemoteURL setting with UI field on both platforms - Clear caption: "For use outside your home Wi-Fi" ### GeminiSessionViewModel - Passes resolved gateway URL to EventClient on connect ## Demo setup (Talent Land) 1. Install Tailscale on Mac + phone 2. In Settings → Remote URL: http://100.x.x.x:18789 3. Works on any network — mobile data, venue Wi-Fi, anything Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
VisionClaw hardcodes OpenClaw gateway as a
.localmDNS hostname that only resolves on the same LAN. On mobile data or different Wi-Fi, all tool calls silently fail.This supersedes PR #38 with a more complete implementation.
Solution
New: Remote URL setting
Both iOS and Android now have a Remote URL field in Settings (e.g.
http://100.64.x.x:18789for Tailscale). When set:checkConnection()tries Remote URL first, then falls back to local HostOpenClawBridge(HTTP) andOpenClawEventClient(WebSocket) use the resolved URLImprovements over PR #38
Files Changed (10 files, both platforms)
OpenClawBridge.swift/.kt— cached URL resolution + proper health checkOpenClawEventClient.swift/.kt— uses resolved URL + ws/wss upgradeSettingsManager.swift/.kt— newopenClawRemoteURLpropertySettingsView.swift/SettingsScreen.kt— Remote URL UI fieldGeminiSessionViewModel.swift/.kt— wires resolved URL to EventClientDemo Setup (Talent Land)
Test plan