Skip to content

wolverin0/remote-pair-eyes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Remote Pair-Eyes

Real-time remote assistance platform using Meta Ray-Ban smart glasses

A complete system that enables remote experts to see through Meta Ray-Ban smart glasses, provide voice guidance, and draw real-time annotations that appear in the wearer's field of view.

Overview

Remote Pair-Eyes transforms Meta Ray-Ban glasses into a powerful remote assistance tool. Field technicians, workers, or anyone wearing the glasses can stream their first-person view to remote experts who can guide them with voice chat and visual annotations.

Use Cases

  • Field Service: Technicians get real-time expert guidance for complex repairs
  • Medical: Remote specialists assist with procedures
  • Training: Instructors guide trainees hands-free
  • Accessibility: Visual assistance for those who need it
  • Industrial: Remote inspection and quality control

Features

Real-Time Video Streaming

  • Live camera feed from Meta Ray-Ban glasses
  • Low-latency WebSocket-based streaming
  • Automatic quality optimization
  • Frame rate up to 30 FPS

Two-Way Voice Communication

  • Full-duplex WebRTC audio
  • Push-to-talk or always-on modes
  • Mute/unmute controls
  • Works from both phone and dashboard

Live Annotations

  • Pointer: Quick attention indicator with auto-fade
  • Arrow: Directional guidance that persists
  • Circle: Highlight areas of interest
  • Rectangle: Frame specific components
  • Freehand Drawing: Complex instructions
  • Text Labels: Add contextual notes

Annotations appear on the phone overlay and sync in real-time across all participants.

Room-Based Sessions

  • Access code system for secure connections
  • Multiple participants per room
  • Role-based permissions (Wearer, Expert, Viewer)
  • Easy sharing via access codes

Audio Feedback

  • Text-to-speech instructions on the phone
  • Audio cues when experts join/leave
  • Voice announcements for room events

Quick Controls (Phone App)

  • Floating action button for easy access
  • Photo capture
  • Audio recording
  • Mute toggle
  • Call controls
  • No scrolling needed - overlay design

Architecture

┌─────────────────┐     WebSocket      ┌─────────────────┐
│   Meta Glasses  │◄──────────────────►│   Backend       │
│   (via Phone)   │                    │   (Node.js)     │
└─────────────────┘                    └────────┬────────┘
        │                                       │
        │ Camera Feed                           │ WebSocket
        │ + Annotations                         │
        ▼                                       ▼
┌─────────────────┐                    ┌─────────────────┐
│   Android App   │                    │   Dashboard     │
│   (Kotlin)      │                    │   (React)       │
└─────────────────┘                    └─────────────────┘
        ▲                                       │
        │              WebRTC Audio             │
        └───────────────────────────────────────┘

Project Structure

metasdk/
├── metatest/                    # Android companion app (Kotlin)
│   ├── app/
│   │   └── src/main/java/com/example/metatest/
│   │       ├── MainActivity.kt  # Main app with camera, WebRTC, annotations
│   │       └── crypto/
│   │           └── EncryptionManager.kt
│   └── CLAUDE.md               # Development notes
│
└── meta-glasses-companion/      # Backend + Dashboard (TypeScript)
    ├── apps/
    │   ├── backend/            # WebSocket server (port 8000)
    │   │   └── src/
    │   │       ├── server.ts
    │   │       ├── websocket/WebSocketServer.ts
    │   │       └── rooms/RoomService.ts
    │   │
    │   └── dashboard/          # React web app (port 5173)
    │       └── src/
    │           ├── components/
    │           │   ├── AnnotationCanvas.tsx
    │           │   ├── VideoFeed.tsx
    │           │   └── VoiceChat.tsx
    │           └── stores/
    │               ├── sessionStore.ts
    │               └── encryptionStore.ts
    │
    └── packages/
        └── shared/             # Shared types & utilities
            └── src/
                └── types/
                    ├── messages.ts
                    └── room.ts

Getting Started

Prerequisites

  • Node.js 18+
  • pnpm
  • Android Studio (for mobile app)
  • Meta Ray-Ban glasses paired with phone
  • Meta View app installed

Backend & Dashboard Setup

cd meta-glasses-companion

# Install dependencies
pnpm install

# Start development servers
pnpm dev

# Backend runs on http://localhost:8000
# Dashboard runs on http://localhost:5173

Android App Setup

  1. Open metatest/ in Android Studio
  2. Update backend IP in MainActivity.kt:
    private val backendHost = "YOUR_IP_ADDRESS"
  3. Build and install on your phone
  4. Ensure Meta glasses are connected via Meta View app

Usage

  1. Start the servers: Run pnpm dev in meta-glasses-companion
  2. Open dashboard: Navigate to http://localhost:5173
  3. Launch phone app: Open Remote Pair-Eyes on your phone
  4. Connect glasses: Ensure Meta View shows glasses as connected
  5. Start streaming: Tap "Start Streaming" on the phone
  6. Join from dashboard: Enter the access code shown on phone
  7. Collaborate: Use voice chat and annotations to guide the wearer

Tech Stack

Android App

  • Kotlin + Jetpack Compose
  • Meta SDK for glasses camera access
  • WebRTC for voice communication
  • Ktor for WebSocket client
  • Material3 UI components

Backend

  • Node.js + TypeScript
  • WebSocket (ws library)
  • Express for HTTP endpoints

Dashboard

  • React 18 + TypeScript
  • Zustand for state management
  • Tailwind CSS for styling
  • Vite for bundling

Shared

  • TypeScript types
  • pnpm workspaces + Turborepo

Configuration

Backend (apps/backend/.env)

PORT=8000

Phone App (MainActivity.kt)

private val backendHost = "192.168.x.x"  // Your server IP
private val backendPort = 8000

Development Notes

WSL + Android

When developing in WSL, use PowerShell for adb commands:

powershell.exe -Command "adb devices"
powershell.exe -Command "adb install app.apk"
powershell.exe -Command "adb logcat -s RemotePairEyes:*"

Common Issues

Glasses show as unavailable

  • Ensure Meta View app is open and glasses are connected
  • Try putting glasses in case for 30 seconds to reset
  • Check for thermal throttling (let glasses cool down)

Stream stuck in STARTING

  • Usually indicates thermal throttling
  • Let glasses rest for a few minutes
  • Check Meta View for error messages

WebSocket connection fails

  • Verify backend is running on correct port
  • Check firewall allows port 8000
  • Ensure phone and server are on same network

License

MIT License - See LICENSE file for details

Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.


Built with Meta SDK, WebRTC, and lots of coffee.

About

Real-time remote assistance platform using Meta Ray-Ban smart glasses

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors