Add secure Personal OpenClaw copilot glasses sessions - #66
Draft
iJaack wants to merge 3 commits into
Draft
Conversation
The pinned DAT SDK 0.4.0 only supports Ray-Ban Meta firmware up to ~V20-V22 (per Meta's Version-Dependencies matrix). Newer glasses (e.g. the 2026 frames running V125-generation firmware, DAT runtime 0.7.0.10.0) are never discovered: registration succeeds and audio works, but devicesStream stays empty, AutoDeviceSelector never emits, and requestPermission(.camera) throws .noDevice. Reported widely (issues #200, #207, #201). This migrates the app to DAT SDK 0.7.0 and its session-based device model: - pbxproj: meta-wearables-dat-ios 0.4.0 -> 0.7.0 - StreamSessionViewModel: migrate StreamSession -> wearables.createSession( deviceSelector:) -> DeviceSession; wait for session .started before session.addStream(config:) -> MWDATCamera.Stream (addStream returns nil if the session hasn't connected yet, matching Meta's own 0.7.0 sample); remap the renamed StreamState/StreamError/StreamConfiguration types - WearablesViewModel: request camera permission as soon as registration completes (the device does not appear in devicesStream until a permission is granted via Meta AI; the stock flow only requested it behind the Start-streaming button, which is disabled until a device appears -- a deadlock) - Info.plist: add the 0.7.0 discovery keys from Meta's sample -- bluetooth-central + processing background modes, NSBonjourServices (_bonjour._tcp), NSLocalNetworkUsageDescription Tested live: glasses camera POV streams end-to-end on a Ray-Ban Meta (V125-gen firmware, iOS 26.5).
iJaack
marked this pull request as ready for review
July 23, 2026 21:35
iJaack
marked this pull request as draft
July 24, 2026 14:58
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.
What
glassesagent.Why
The previous direct integration coupled Gemini's fast model response to slower OpenClaw execution, which caused early replies, incomplete speech, timeouts, and frozen high/medium streams. It also lacked a trustworthy boundary between model suggestions and user-authorized external actions.
This change separates the realtime glasses conversation from asynchronous harness execution, keeps media and speech responsive while work continues, and moves pairing, routing scope, replay protection, Codex confirmation, and capture authorization into app/broker-owned policy.
Security and reliability
Verification
com.jaack.visionclawcom.jaack.visionclaw.GlassesWidgetR3UZ5ZH3DGIntentionally deferred