Xcode & Android Studio ready

Sync your emulator to the
Extentos Simulator.

The Extentos Simulator is a pair of smart glasses in a browser tab.

Build and tune your whole app against it. When you tell your agent to mint a simulation, your emulator automatically gets wired to the simulator and the Simulator opens in your browser. If your agent can’t open a browser, it prints out the URL for you to click.

coach-app — claude
Claude Code v2.1.88
Opus 4.7 (1M context) · Claude Max
~/coach-app
extentos MCP server connected · 16 tools
>
  • No hardware needed

    Your device's webcam, mic, and speaker stand in for the glasses' camera, microphone, and audio. Plug nothing in to start.

    How it's wired
  • Seconds per loop

    Save a file and refresh — no device to grab, no APK to push, no Xcode launch between tries. The build loop is hot.

    Try it live
  • iOS and Android at once

    Point your iOS and Android emulators at the same Simulator session and exercise both platforms side by side, in one place.

    Read the SDK docs
  • Every vendor in one Simulator

    Ray-Ban Gen 2, Display, Oakley Meta — and more vendors on the roadmap — all simulated from the same browser tab. Switch glasses, keep the loop.

    Cross-vendor architecture
  • You or your agent drives it

    Click through it yourself in the browser, or let Claude Code, Codex, or Cursor drive it over MCP and verify each step.

    See Extentos MCP

Test end to end.

Your Simulator and emulator work together exactly how they would in production.

CameraMicSpeakerWS
elapsed 04:57Meta Ray-Ban
Event Log·46
22:45:30LIFECYCLE app_foreground
22:45:31LIFECYCLE glasses_connected
22:45:32LIFECYCLE permission_granted camera
22:45:33LIFECYCLE stream_start audio · whisper
22:45:40VOICEREQMic “ask my coach”
22:45:40VOICE earcon
22:45:41LIFECYCLE stream_start video
22:45:42CAMERAREQ capture_photo
22:45:43CAMERARESULT photo_result
22:45:44VOICEREQVideo “should I hit or stand on 12?”
22:45:45AIREQ anthropic.ask
22:45:47AIRESULT answer · 2.1s
22:45:48VOICEspeak “Stand — dealer shows a 6…”
22:45:53VOICE earcon
22:45:54VOICEREQMic “take picture”
22:45:54VOICE earcon
22:45:55CAMERAREQ capture_photo
22:45:56CAMERARESULT photo_result
22:45:58LIFECYCLE stream_stop video
22:46:03VOICEREQMic “what’s my count?”
22:46:03VOICE earcon
22:46:05VOICEREQVideo “running count check”
22:46:06AIREQ anthropic.ask
22:46:08AIRESULT answer · 1.8s
22:46:08VOICEspeak “Running count is plus three…”
22:46:13VOICE earcon
22:46:14VOICEREQMic “start recording”
22:46:14VOICE earcon
22:46:15LIFECYCLE stream_start video
22:46:16CAMERAREQ capture_video
22:46:30VOICEREQVideo “next hand — double down?”
22:46:31VOICEspeak “Yes — double on 11…”
22:46:36VOICE earcon
22:46:37VOICEREQVideo “is this a good split?”
22:46:38VOICEspeak “Split the eights, always…”
22:46:43VOICE earcon
22:46:44VOICEREQMic “stop recording”
22:46:44VOICE earcon
22:46:45CAMERARESULT video_result
22:46:46LIFECYCLE stream_stop video
22:46:50VOICEREQMic “take picture”
22:46:50VOICE earcon
22:46:51CAMERAREQ capture_photo
22:46:52CAMERARESULT photo_result
22:47:00LIFECYCLE battery_update 87%
22:47:12LIFECYCLE session_idle
Glasses View
0:00 / 1:05
Voice Commands·1click voice to fire
WAKE
coach
w_coach_1
fired 1 time · 9s ago
GlassesDemoiPhone 17 Pro
Running
swiftGlassesDemoExtentosCoachHandler.swiftstart()
GlassesDemo
GlassesDemo
Extentos
Assets.xcassets
 1import GlassesCore
 2
 3final class CoachHandler {
 4  let glasses: any ExtentosGlasses
 5
 6  func start() {
 7    Task {
 8      for await t in glasses.audio.transcriptions() {
 9        guard case .final(let text, _, _, _) = t,
10              text.lowercased().contains("ask my coach")
11        else { continue }
12
13        _ = await glasses.audio.speak("What would you like to know?")
14        guard case .success(let q) =
15          await glasses.audio.recordDiscrete()
16        else { continue }
17
18        let answer = try await anthropic.ask(q.transcript)
19        _ = await glasses.audio.speak(answer)
20      }
21    }
22  }
23}
9:41
Meta View
Authorized
Meta Ray-Ban
Connected · BrowserSim
CAPABILITIES
Camera
Mic
Speaker
VOICE PHRASES
coach
WAKE
TOGGLES
Voice Activation
Listening for commands…

Install the MCP. Tell your agent to mint a simulation.

Drop the Extentos MCP server into Claude Code, Cursor, or Windsurf — and minting a Simulator is one prompt away.

agent prompt

Paste into any MCP-capable agent (Claude Code, Cursor, Windsurf, Cline). Restart the agent when it's done.