Complete step-by-step guide to set up and run OpenVision.
- Mac with macOS 13.0 (Ventura) or later
- Xcode 15.0 or later
- iOS device running iOS 16.0+ (simulator doesn't support Bluetooth)
- Apple Developer Account (free or paid)
- Meta Ray-Ban smart glasses - For glasses integration (iPhone camera works as fallback)
- OpenClaw instance - For OpenClaw AI backend
- Gemini API key - For Gemini Live AI backend
git clone https://github.com/rayl15/OpenVision.git
cd OpenVision/meta-visioncp Config.xcconfig.example Config.xcconfigEdit Config.xcconfig with your values:
// Your development team ID (from developer.apple.com)
DEVELOPMENT_TEAM = XXXXXXXXXX
// Unique bundle identifier for your app
PRODUCT_BUNDLE_IDENTIFIER = com.yourname.openvision
// Meta App ID from developer.meta.com (required for glasses)
META_APP_ID = your_meta_app_id_here
cp OpenVision/Config/Config.swift.example OpenVision/Config/Config.swiftThis file can contain default API keys (optional - users can also enter them in-app):
enum Config {
// Leave empty if users will enter in Settings
static let defaultOpenClawURL = ""
static let defaultOpenClawToken = ""
static let defaultGeminiAPIKey = ""
}- Open Xcode
- Go to Xcode → Settings → Accounts
- Sign in with your Apple ID
- Click your team name
- Your Team ID is shown (10 characters)
If you want to use Meta Ray-Ban glasses:
- Go to developer.meta.com
- Create a new app or select existing
- Add the Meta Wearables product
- Copy your App ID from the dashboard
- Add it to
Config.xcconfig
Note: You can skip this if testing with iPhone camera only.
The Meta Wearables Device Access Toolkit (DAT) SDK is required for glasses integration.
- Open
OpenVision.xcodeprojin Xcode - Go to File → Add Package Dependencies
- Enter URL:
https://github.com/anthropics/meta-wearables-dat-ios - Add these packages:
MWDATCoreMWDATCamera
- Download from Meta GitHub
- Drag the frameworks into your project
- Ensure "Copy items if needed" is checked
In Xcode, select your target and go to Signing & Capabilities:
-
Background Modes
- Audio, AirPlay, and Picture in Picture
- Background fetch
- Background processing
-
App Groups (optional, for sharing data)
Add these to your Info.plist:
<!-- Microphone access for voice input -->
<key>NSMicrophoneUsageDescription</key>
<string>OpenVision needs microphone access for voice conversations with AI.</string>
<!-- Camera access for photo capture -->
<key>NSCameraUsageDescription</key>
<string>OpenVision uses the camera to capture photos for AI analysis.</string>
<!-- Speech recognition for wake word -->
<key>NSSpeechRecognitionUsageDescription</key>
<string>OpenVision uses speech recognition to detect your wake word and voice commands.</string>
<!-- Bluetooth for glasses connection -->
<key>NSBluetoothAlwaysUsageDescription</key>
<string>OpenVision connects to Meta Ray-Ban glasses via Bluetooth.</string>
<!-- Meta Wearables callback URL scheme -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>openvision</string>
</array>
</dict>
</array>- Connect your iOS device via USB
- Select your device as the run destination
- Press Cmd+R to build and run
- Trust the developer certificate on your device if prompted:
- Go to Settings → General → VPN & Device Management
- Tap your developer app and trust it
Once the app is running:
- Go to Settings → AI Backend
- Select OpenClaw
- Tap OpenClaw Settings
- Enter:
- Gateway URL: Your OpenClaw WebSocket URL (e.g.,
wss://your-server.com:18789) - Auth Token: Your OpenClaw authentication token
- Gateway URL: Your OpenClaw WebSocket URL (e.g.,
- Tap Test Connection to verify
- Go to Settings → AI Backend
- Select Gemini Live
- Tap Gemini Settings
- Enter your Gemini API key
If you have Meta Ray-Ban glasses:
- Ensure glasses are paired with your iPhone via Bluetooth
- Go to Settings → Glasses
- Tap Register with Meta AI
- Follow the Meta AI app authentication flow
- Return to OpenVision when prompted
- Your glasses should now show as "Connected"
- Glasses not appearing: Ensure Bluetooth is on and glasses are paired in iOS Settings
- Registration fails: Check your Meta App ID in Config.xcconfig
- Streaming issues: Try disconnecting and reconnecting the glasses
- Tap the main orb button OR say "Hey Vision"
- Wait for "Listening..." status
- Speak your question or command
- AI responds via text-to-speech
- Tap the main orb button to start
- Just speak naturally (no wake word needed)
- AI responds with natural voice
- Video streams continuously from glasses
OpenVision includes iPhone camera fallback for development:
- Go to Settings → Glasses
- Toggle Use iPhone Camera (if glasses aren't connected)
- Photo commands will use your iPhone's camera
| Error | Solution |
|---|---|
| "Signing certificate not found" | Add your Apple ID in Xcode → Settings → Accounts |
| "Missing package dependencies" | File → Packages → Resolve Package Versions |
| "MWDATCore not found" | Add Meta DAT SDK via Swift Package Manager |
| "Bundle identifier already in use" | Change PRODUCT_BUNDLE_IDENTIFIER in Config.xcconfig |
| Error | Solution |
|---|---|
| "Microphone access denied" | Grant permission in iOS Settings → OpenVision |
| "WebSocket connection failed" | Check your OpenClaw URL and network connection |
| "Invalid API key" | Verify your Gemini API key in Settings |
| "Wake word not working" | Grant speech recognition permission |
| Issue | Solution |
|---|---|
| OpenClaw disconnects frequently | Check network stability; auto-reconnect will retry 12 times |
| Gemini audio choppy | Ensure stable WiFi connection |
| Glasses not streaming | Toggle streaming off/on in Glasses settings |
The iOS Simulator doesn't support:
- Bluetooth (no glasses connection)
- Some audio features
Use a physical device for full testing.
Enable verbose logging in Xcode console:
- Filter by
[OpenClaw],[Gemini],[Voice],[Glasses]
Settings changes are applied immediately without restart. WebSocket sessions receive updated configuration in real-time.
- GitHub Issues: Report bugs or request features
- Discussions: Ask questions and share tips
- CLAUDE.md: Technical documentation for AI assistants
- Read the Contributing Guide to contribute
- Check out OpenClaw for tool development
- Explore Gemini Live API capabilities