# Extentos > Extentos lets AI agents extend native iOS and Android apps to smart glasses (Meta Ray-Ban GA, Android XR, Brilliant Labs and HTC VIVE Eagle in preview, others on roadmap) with one install. MCP server + native SDKs + browser simulator. Full documentation in plain markdown is at /llms-full.txt. Every page also has a `.md` mirror at its URL with `.md` appended (e.g. /docs/getting-started/ios.md). ## Overview - [Extentos Docs](https://extentos.com/docs): The AI smart-glasses development studio for Meta Ray-Ban — MCP server, Kotlin/Swift SDK, and browser simulator docs. Free to start, no hardware required. ## Get started - [Get started](https://extentos.com/docs/getting-started): Start building with Extentos, the smart-glasses dev layer for Meta Ray-Ban. The recommended path is agent-driven — install the MCP server, it scaffolds the app. - [Android quickstart](https://extentos.com/docs/getting-started/android): Add the Extentos Android SDK by hand — Gradle install, manifest permissions, and your first capability call. Voice apps need no vendor token. - [Choose your path](https://extentos.com/docs/getting-started/choose-your-path): Voice apps run on any Bluetooth smart glasses with no vendor setup. Camera and display need vendor credentials. Pick the smaller path first — you can add the other later without rewriting your app. - [iOS quickstart](https://extentos.com/docs/getting-started/ios): The by-hand iOS quickstart — add the Extentos Swift package, set the Info.plist keys, initialize, and make your first capability call. - [Quickstart with an AI agent](https://extentos.com/docs/getting-started/with-agent): Install the Extentos MCP server and let your AI agent scaffold Meta Ray-Ban smart-glasses capabilities into a native iOS or Android app. Free to start. ## Concepts - [Concepts](https://extentos.com/docs/concepts): The mental-model pages for Extentos — transport vs app simulation, architecture, the capability vocabulary, the AI gateway, the assistant, and display. - [The managed AI gateway](https://extentos.com/docs/concepts/ai-gateway): How AI runs in an Extentos app — the assistant routes voice AI through the managed gateway. Content relayed, never stored; metered. The assistant always runs on the managed gateway; there is no bring-your-own-key option. - [Architecture](https://extentos.com/docs/concepts/architecture): How Extentos fits together — AI agent, MCP server, native Kotlin/Swift SDK, four transports (system audio, Meta DAT, browser sim, local in-memory sim), and the backend. - [The assistant runtime](https://extentos.com/docs/concepts/assistant): Build a voice assistant on smart glasses with glasses.assistant — wake/sleep, tools, vision, barge-in, memory, on the managed AI gateway. Kotlin and Swift. - [Capabilities](https://extentos.com/docs/concepts/capabilities): The Extentos capability vocabulary — the vendor-agnostic SDK primitives (audio, camera, voice, assistant, display, hardware events) your handler subscribes to. - [The display capability](https://extentos.com/docs/concepts/display): Render UI on the Ray-Ban Display with the glasses.display builder DSL in Kotlin and Swift — text, images, buttons, media, and Neural Band input. Gated per device. Beta. - [On-device models](https://extentos.com/docs/concepts/local-models): Run the assistant's brain on the phone instead of the cloud — Automatic device-fit selection, the model ladder, the end-user download path, and on-device neural voices. Kotlin and Swift. - [Permissions](https://extentos.com/docs/concepts/permissions): Extentos derives Android permissions and iOS Info.plist keys from the capabilities your handler uses, plus the always-required Bluetooth and Meta DAT keys. - [Projects](https://extentos.com/docs/concepts/projects): How Extentos identifies a project across Android and iOS — the Extentos app id (config.appId) decoupled from the store bundle id, and how the same app id shares one project across platforms. - [Protocol overview](https://extentos.com/docs/concepts/protocol): The Extentos simulator wire protocol — WebSocket roles, hardware-ready gating, the inject envelope, event log, and voice proxy. The SDK speaks it for you. - [Sessions](https://extentos.com/docs/concepts/sessions): How an Extentos session works — the glasses connection-state machine, what persists across backgrounding and reconnects, and the three browser-simulator roles. - [Transport vs app simulation](https://extentos.com/docs/concepts/transport-vs-app): Meta's Mock Device Kit simulates the transport layer; Extentos simulates the app layer — voice, photo capture, and the wearing experience. Both matter. - [Extentos vs Meta DAT directly](https://extentos.com/docs/concepts/vs-meta-dat): Extentos wraps Meta's Device Access Toolkit — it doesn't replace it. What you write against raw DAT vs what Extentos gives you, and when to go direct. ## Guides - [Guides](https://extentos.com/docs/guides): Task-shaped Extentos recipes for Meta Ray-Ban — voice triggers, voice assistant, photo/video/audio capture, display, hardware events, and disconnect handling. - [Audio streaming](https://extentos.com/docs/guides/audio-streaming): Stream raw mic audio off Meta Ray-Ban with audioChunks, get continuous STT with transcriptions(), play TTS with speak(), and push your own realtime model's audio back out with sendAudio. Covers A2DP/HFP coexistence. - [Background sessions](https://extentos.com/docs/guides/background-sessions): Keep a Meta Ray-Ban session alive when your app backgrounds — the Android foreground service for mic, iOS background modes, and which capabilities survive. - [The capture button](https://extentos.com/docs/guides/capture-button): The touch surface on the Meta Ray-Ban's right temple can pause or stop your camera stream at any moment — a firmware-enforced privacy gesture your app must respect. What your app observes, how to handle it, and how to test it in the simulator. - [Render on the display](https://extentos.com/docs/guides/display): Render UI on glasses with a screen — photo capture, browsable card lists via glasses.display, and full-surface views. One tree, three vendors: Meta Ray-Ban Display, Android XR Display Glasses, and Brilliant Labs Halo and Frame. - [Handle disconnects](https://extentos.com/docs/guides/handle-disconnects): Observe glasses.connection.state, branch on the typed Disconnected.cause to tell a user-pulled-the-glasses-off from a Bluetooth drop, and reconnect cleanly. The connection-state spine for any Meta Ray-Ban app. - [Migrating from raw Meta DAT](https://extentos.com/docs/guides/migrating-from-meta-dat): Move an app you already built against Meta's Device Access Toolkit onto the Extentos SDK — a call-site swap, not a rewrite, because Extentos calls the same DAT underneath. - [Capture a photo](https://extentos.com/docs/guides/photo-capture): Take a still photo on the Meta Ray-Ban camera from your handler code, handle CaptureError cleanly, and pipe the image into a vision LLM. Uses glasses.camera.capturePhoto() and the Photos URI helpers. - [Hardware events](https://extentos.com/docs/guides/sensor-streams): What Meta Ray-Ban surfaces today via glasses.runtime.events, connection.state, and toggles — and which hardware-alert streams aren't exposed yet. No IMU API. - [From simulator to real glasses](https://extentos.com/docs/guides/simulator-to-real-glasses): Move a Meta Ray-Ban app from the browser simulator to real glasses — Meta identity, credentials, DAT resolution, the transport switch, and hardware checks. - [Capture video](https://extentos.com/docs/guides/video-capture): Record a bounded video clip from the Meta Ray-Ban camera with glasses.camera.captureVideo(), stop it cleanly with stopVideo(), or subscribe to the continuous videoFrames stream for on-device ML and live preview. - [Build a voice assistant](https://extentos.com/docs/guides/voice-assistant): Build a wake-word voice assistant on Meta Ray-Ban smart glasses with glasses.assistant.start. A phone-side wake phrase opens the conversation; the model owns turn-taking and intent parsing; you write tool bodies that read and act on your app's state, add a vision tool for "what am I looking at", and let the conversation sleep on intent. Runs on the Extentos managed gateway with no API key in your app. - [Voice triggers](https://extentos.com/docs/guides/voice-triggers): Wire a voice command on the glasses to an action in your app. Works on Meta Ray-Ban via the phone's speech recognizer over Bluetooth. Phrases auto-surface on the connection page and the simulator's click-to-fire panel. ## MCP server - [MCP server](https://extentos.com/docs/mcp-server): The Extentos MCP server (`@extentos/mcp-server`) is an npm package an AI agent (Claude Code, Cursor, Windsurf, Cline) installs once and then uses to add Meta Ray-Ban smart-glasses capabilities to a native iOS or Android app. It exposes a tight set of deterministic tools across 10 categories — discovery, generation, agent configuration, credentials, analytics, guidance, validation, simulation, production-readiness, and documentation — plus a CLI for account linking, telemetry consent, and update checks. This is the agent's operating manual. - [Supported agents](https://extentos.com/docs/mcp-server/agents): Per-host differences for AI coding agents that run Extentos — Claude Code, Cursor, Windsurf, Cline, IDE built-ins. Scope, cross-platform reach, MCP support. - [Auth](https://extentos.com/docs/mcp-server/auth): How Extentos auth works. Discovery, guidance, validation, and search run with no account; a free account (linked via the OAuth 2.0 device-code flow) unlocks browser-simulator sessions, the scaffold step, and the account-scoped project tools. No payment. - [Configuration](https://extentos.com/docs/mcp-server/configuration): Configure @extentos/mcp-server — environment variables, the ~/.extentos state files (install id, auth, consent), and the default vendor. - [Credentials checklist](https://extentos.com/docs/mcp-server/credentials-checklist): Provider-keys checklist for Extentos. Simulator needs none; Phase-4 assistant defaults to the managed gateway; handler calls are BYOK; Meta creds for hardware only. - [Install the MCP server](https://extentos.com/docs/mcp-server/install): How to install the Extentos MCP server (@extentos/mcp-server) in any MCP-compatible AI coding agent — Claude Code, Cursor, Windsurf, Cline, and others. Per-host install commands, config file locations, copy-pasteable JSON snippets, restart and verify steps, version pinning, updating, troubleshooting common errors, and uninstall instructions. Verified install paths for each supported host. - [Tools reference](https://extentos.com/docs/mcp-server/tools): The Extentos MCP server exposes a tight set of deterministic tools across deterministic categories — discovery + SDK reference, generation, guidance, validation, simulation, production, agent configuration, and search. Per-tool reference covering input parameters, response shapes, when to call each tool, and worked examples. Verified from the actual tool definitions and handler implementations in @extentos/mcp-server. - [Discovery and SDK reference tools](https://extentos.com/docs/mcp-server/tools/discovery): The Extentos MCP server's discovery + reference tools — getPlatformInfo (the static catalog of vendor capabilities), getCapabilityGuide (per-feature Kotlin + Swift call shape with gotchas), and getCodeExample (full canonical compositions for the common voice-glasses patterns). These are the first calls an AI agent makes in any new task — cheap, all local, no side effects, free and anonymous. - [Setup and Generation tools](https://extentos.com/docs/mcp-server/tools/generation): The Extentos MCP server's Setup and Generation surface — generateConnectionModule (the one-shot project scaffold that emits the bootstrap module, build-script changes, dependencies, permissions, and the integration manifest) plus the four connection-page-config tools (getConnectionPageConfig, setConnectionPageConfig, regenerateConnectionPageFile, adoptConnectionPageFile). After scaffolding, the customer (or their agent) writes handler classes against the SDK primitives surfaced by getCapabilityGuide / getCodeExample. - [Implementation Guidance tools](https://extentos.com/docs/mcp-server/tools/guidance): The Extentos MCP server's guidance tools — getVoiceCommandGuidance (analyze proposed wake / command phrases for UX issues) and getPermissions (derive exact platform permissions, Meta DAT requirements, and foreground-service needs from the declared SDK capability list). Side-quest helpers the agent calls during composition. - [Production tools](https://extentos.com/docs/mcp-server/tools/production): The Extentos MCP server's production tools — getProductionChecklist (personalized ship-readiness checklist based on declared capabilities + handler names) and getCredentialGuide (step-by-step credential setup for Anthropic, OpenAI, Google Cloud, DeepL, Azure, AWS Bedrock, HuggingFace, or custom providers). Pre-ship gates. - [Search tools](https://extentos.com/docs/mcp-server/tools/search): The Extentos MCP server's searchDocs tool — the bundled conceptual docs corpus. Phase-4 topics (assistant_runtime, managed_gateway, conversation_memory, display, agent_e2e_testing) plus the stable set (getting_started, custom_handlers, voice_integration, library_api, toggles, simulator_browser_mode). - [Simulation tools](https://extentos.com/docs/mcp-server/tools/simulation): Extentos MCP simulation tools — provision and operate browser-mode simulator sessions, plus agent-driven testing tools that close the E2E loop with no human. - [Validation tools](https://extentos.com/docs/mcp-server/tools/validation): The Extentos MCP server's validation tools — inspectIntegration (read-only project snapshot) and validateIntegration (whole-project correctness gate before testing). The pre-test sanity checks the agent runs after structural changes. ## SDK - [SDK](https://extentos.com/docs/sdk): Native Android and iOS libraries you link into your app to expose Extentos smart-glasses capabilities over a shared Rust core. Android and iOS both published. - [Android SDK](https://extentos.com/docs/sdk/android): Add Extentos to your Android app via Gradle. Smart-glasses capabilities for Meta Ray-Ban, Android 12+ (API 31), Kotlin, coroutines. - [Initialize the Android SDK](https://extentos.com/docs/sdk/android/initialization): Create ExtentosGlasses with ExtentosGlasses.create, configure ExtentosConfig (environment, applicationContext, transport), reach the sub-clients, and pattern-match ExtentosResult. - [Install the Android SDK](https://extentos.com/docs/sdk/android/install): Add the Extentos Android SDK to your Gradle project from Maven Central. Coordinates, minSdk 31, Kotlin/AGP/Gradle floors, and the assistant runtime. - [Android SDK lifecycle](https://extentos.com/docs/sdk/android/lifecycle): When to create and shut down ExtentosGlasses, how the bundled foreground service keeps the glasses mic alive in the background, and how Extentos behaves across Activity lifecycle and process death. - [Android manifest setup](https://extentos.com/docs/sdk/android/manifest): Which permissions the Extentos Android SDK auto-merges for you and which capability permissions (CAMERA, RECORD_AUDIO, INTERNET) your app must declare, plus the bundled foreground service. - [Android runtime internals](https://extentos.com/docs/sdk/android/runtime-internals): How the Extentos Android SDK is a thin Kotlin shell over a shared Rust core (uniffi + jniLibs), the four transports and how TransportChoice.Auto resolves, and the Meta DAT bridge. - [Android SDK threading model](https://extentos.com/docs/sdk/android/threading): How the Extentos Android SDK uses Kotlin coroutines and Flow — suspend functions for one-shot ops, Flow/StateFlow for streams, and which dispatcher to collect on. - [iOS SDK](https://extentos.com/docs/sdk/ios): The Extentos iOS SDK for Meta Ray-Ban smart glasses — iOS 17+, Swift 6 toolchain, async/await. Published as a Swift package. - [Info.plist setup (iOS)](https://extentos.com/docs/sdk/ios/info-plist): Required Info.plist keys for the Extentos iOS SDK — the Meta DAT auth callback URL scheme, external accessory protocol, background modes, and Bluetooth / camera / microphone / speech privacy strings. generateConnectionModule emits them all. - [Initialization (iOS)](https://extentos.com/docs/sdk/ios/initialization): Initialize the Extentos iOS SDK with Extentos.create(config:), forward the Meta DAT auth callback via .onOpenURL and handleUrl, request speech authorization, and reach the typed sub-clients. - [Install (iOS)](https://extentos.com/docs/sdk/ios/install): Add the Extentos iOS SDK with Swift Package Manager from github.com/extentos/swift-glasses — Xcode, Package.swift, or xcodegen. - [Lifecycle (iOS)](https://extentos.com/docs/sdk/ios/lifecycle): The Extentos iOS SDK lifecycle — create one instance for the app's lifetime, forward the auth callback, and tear down with the async shutdown(). - [Runtime internals (iOS)](https://extentos.com/docs/sdk/ios/runtime-internals): How the Extentos iOS Swift shell wraps the shared Rust core via uniffi, where the DAT-iOS transport bridge sits, and what's platform-bound vs shared. - [Threading model (iOS)](https://extentos.com/docs/sdk/ios/threading): How the Extentos iOS SDK concurrency works — ExtentosGlasses is Sendable, every sub-client call is async, MainActor guidance for UI, and why the package builds in Swift 5 language mode. ## Vendors - [Vendors](https://extentos.com/docs/vendors): Smart-glasses vendors Extentos supports. Meta smart glasses are the production target as of 2026-08; Android XR is in preview (transport built and emulator-proven, module unpublished, no shipping hardware); Brilliant Labs is in preview (transport built and published, but no hardware has run it and there is no emulator); HTC VIVE Eagle is in preview (Android transport built, published, and proven against HTC's own simulator, with app registration granted off-document by HTC); Apple is a tracked roadmap vendor. - [Android XR (preview)](https://extentos.com/docs/vendors/android-xr): Android XR support in Extentos: the projected transport is built and proven on the Android XR emulator, the module is deliberately unpublished while the platform is in developer preview, and no Android XR glasses are buyable yet. What you can test today, and what you can't. - [Brilliant Labs (preview)](https://extentos.com/docs/vendors/brilliant): Brilliant Labs support in Extentos: the BLE transport, on-device Lua bundle, display translation, still capture and microphone ship inside the SDK on both platforms — nothing to add on Android, TransportChoice.brilliant on iOS — but no hardware has run any of it and there is no emulator either. Video is unsupported permanently. Halo and Frame are selectable in the simulator today with their real panel geometry and input. - [HTC VIVE Eagle (preview)](https://extentos.com/docs/vendors/htc): HTC VIVE Eagle support in Extentos: the Android transport is built and proven end to end against HTC's own first-party simulator, and ships as com.extentos:glasses-htc. No hardware has run it, HTC must register your app before real glasses answer, and iOS is not built yet. Eagle is selectable in the simulator today. - [Meta smart glasses (Meta DAT)](https://extentos.com/docs/vendors/meta): Meta smart glasses developer guide: Wearables Device Access Toolkit (DAT 0.8.0) capabilities, supported models (Ray-Ban Meta, Oakley Meta, Ray-Ban Display), 2026 distribution state, and how Extentos abstracts the toolkit. ## Reference - [Reference](https://extentos.com/docs/reference): Generated API reference — the Android SDK (Dokka), iOS SDK (DocC), MCP server tools (JSON Schema), and a flat error-code index for troubleshooting. - [Android API reference](https://extentos.com/docs/reference/android-api): Symbol-level reference for the Extentos Android SDK — ExtentosGlasses, ExtentosConfig, every typed sub-client, the assistant builder, and the core data types, with exact Kotlin signatures. - [Error reference](https://extentos.com/docs/reference/errors): Every typed error the Extentos SDK can return — ConnectError, CaptureError, AudioError, TransportError, the ExtentosError umbrella, and the Meta-DAT DeviceSessionError — with their payload fields and meaning. Lifecycle operations return ExtentosResult with these concrete failure variants rather than throwing; pattern-match them. Generated from the Rust core. - [iOS API reference](https://extentos.com/docs/reference/ios-api): The Extentos iOS SDK API reference — entry point, ExtentosConfig fields, and the GlassesUI surface (ExtentosConnectionPage, theming, escape hatch). Hand-maintained until the generated DocC reference replaces it. - [MCP tools reference](https://extentos.com/docs/reference/mcp-tools): The complete, always-current catalog of @extentos/mcp-server tools — 36 deterministic tools across 10 categories for discovering smart-glasses capabilities, scaffolding native iOS/Android integrations, driving the browser simulator, and gating production readiness. Generated from the live tool registry. ## Troubleshooting - [Troubleshooting](https://extentos.com/docs/troubleshooting): Symptom-shaped fixes. Find your symptom, get the cause and the fix, with cross-links to error reference. - [Background session killed](https://extentos.com/docs/troubleshooting/background-session-killed): Fix a Meta Ray-Ban session that dies when your app backgrounds — a missing Android foreground service, missing iOS background modes, or an OS low-memory kill. - [Glasses won't connect](https://extentos.com/docs/troubleshooting/glasses-wont-connect): Fix common first-connection failures on Meta Ray-Ban — no pairing dialog, session won't start, the DAT auth callback never fires, or an immediate disconnect. - [Photo capture fails](https://extentos.com/docs/troubleshooting/photo-capture-fails): Fix capturePhoto() returning an error or no image on Meta Ray-Ban — CAMERA permission, thermal-critical, folded hinges, coexistence, and the camera toggle. - [Wake phrase not matching](https://extentos.com/docs/troubleshooting/voice-trigger-not-firing): You subscribed to glasses.audio.transcriptions() and matched a wake phrase, but the handler doesn't run when you say it. Common causes and fixes. ## Resources - [Resources](https://extentos.com/docs/resources): Extentos resources — pricing, data-handling and security, support, service status, license, public roadmap, FAQ, and changelog. - [Changelog](https://extentos.com/docs/resources/changelog): Release notes for Extentos — the MCP server (@extentos/mcp-server), the Android library (com.extentos:glasses), and the iOS library (swift-glasses). Newest first. The MCP server is pre-1.0; APIs may shift between minor versions until the hardware test loop closes. The 2.x line covers the vendorless core split, the display overflow policy, the iOS on-glasses display path, the minified-release fix, the removal of the automatic wake sound, and capture telemetry; the managed AI gateway, the Phase-4 voice assistant, the first stable iOS release, the pure-SDK pivot, the browser simulator, getEventLog, auto-bind, and device-code auth landed earlier. - [Frequently asked questions](https://extentos.com/docs/resources/faq): The Extentos FAQ — what it is, install, cost (mostly free; the AI gateway is metered), supported Ray-Ban/Oakley Meta hardware, and Meta DAT vs Extentos. - [License](https://extentos.com/docs/resources/license): Extentos license terms. The @extentos/mcp-server npm package is MIT-licensed (declared in its package.json, surfaced on the npm package page). The Android library (com.extentos:glasses) and the iOS library (Extentos) are distributed as public packages with proprietary source. This page states the current, verifiable licensing position per component. - [Pricing](https://extentos.com/docs/resources/pricing): Extentos is free to start — discovery, validation, the on-device simulator, and real-hardware DAT testing need no account. A free account unlocks the browser simulator, project scaffolding, and the managed AI gateway. The gateway is the one metered surface; every account gets $2 of free credit, then prepaid credits at provider list price. - [Roadmap](https://extentos.com/docs/resources/roadmap): The Extentos public roadmap — shipping today (Meta Ray-Ban, both native SDKs, managed AI gateway, the voice assistant, display), in development, and tracked further out. - [Security and data handling](https://extentos.com/docs/resources/security): What Extentos collects (aggregate dev + runtime metadata), what it never collects (transcripts, AI prompts, PII), and the one path that puts end-user media on our infrastructure — display hosting. Anonymous-first, GDPR-friendly. - [Status](https://extentos.com/docs/resources/status): Service status for Extentos. There is no public status page or uptime instrumentation yet — Extentos is pre-1.0. The backend that powers the browser simulator and the managed AI gateway runs at api.extentos.com. For what shipped, see the changelog; to report an outage or incident, email hello@extentos.com with the [incident] prefix. - [Support](https://extentos.com/docs/resources/support): How to get help with Extentos — which GitHub issue tracker owns which component (android-glasses, swift-glasses, mcp-server), self-service diagnostics through the extentos-mcp CLI (whoami, status, getEventLog), what to include in a bug report so it's actionable across the four components (MCP server, native libraries, backend, simulator UI), the private email path for security and billing, and pre-1.0 response expectations. No paid support tiers exist at launch. - [Terms of Service](https://extentos.com/docs/resources/terms): The terms that govern your use of Extentos, the SDKs, MCP server, simulator, and managed AI gateway. Plain-language, early-stage, Danish and EU law. ## Blog - [Meta hasn't built an app store for Ray-Ban Display. Two people already did.](https://extentos.com/blog/ray-ban-display-app-store-third-party): Meta shipped a Web Apps runtime for Ray-Ban Display with no store attached, and two community catalogues appeared to fill the gap. Neither is an app store, and the list they are building is the one asset Meta gets for free the day it ships. What the docs already tell you to do about it. - [How to add Android XR smart glasses support to an existing Android app](https://extentos.com/blog/add-android-xr-glasses-to-existing-android-app): Android XR glasses apps are not separate apps. They are a projected activity inside the phone app you already ship. The native Jetpack Projected route step by step, the field notes from building a transport against it, and how to decide whether your business logic should name a glasses vendor at all. - [You don't need a smart-glasses SDK to build a voice app](https://extentos.com/blog/voice-apps-dont-need-a-glasses-sdk): If your app only needs a microphone and a speaker, it already runs on smart glasses — no vendor SDK, no registration, no developer-preview approval. How that works, apps already shipping it, when you genuinely do need the vendor path, and what's left for Extentos to do. - [Realtime voice AI bills for every second it listens. So we moved it onto the phone.](https://extentos.com/blog/local-models-zero-cost-voice): Realtime voice models bill for every second they listen. Extentos now runs realtime models locally on mobile: the model, the voice and the turn-taking all on the phone, on iOS and Android, for nothing per token. What it takes to run local models on mobile, and the architecture that makes a conversation hold together. - [Proving 'vendor-agnostic': adding Android XR without changing a line of your app](https://extentos.com/blog/adding-android-xr-second-vendor): With one vendor in production, 'vendor-agnostic' is an assertion nobody can check. So we built the second one and ran it on glasses nobody can buy yet. The code that didn't change, how we verified it without hardware, and what running it taught us that Google's docs don't say. - [Android XR glasses for developers: the story Samsung skipped](https://extentos.com/blog/android-xr-glasses-for-developers): Samsung unveiled its Android XR smart glasses at Galaxy Unpacked and said nothing about building on them. Here's the actual developer reality — the projected app model, why the SDK is wide open but nothing ships yet, and what Meta's DAT already answers that Android XR hasn't. - [The button your glasses app doesn't own: Meta's capture-button privacy gesture](https://extentos.com/blog/capture-button-privacy-gesture): A finger on the right temple can pause or kill your camera stream at any moment — by design, enforced in firmware. What we learned probing it on real Ray-Ban Meta glasses, how the Extentos SDK models it honestly, and how we made a hardware privacy gesture testable in a browser. - [Welcome to the Extentos blog](https://extentos.com/blog/welcome): The first post — what this blog is for and how to follow along. ## External references - [GitHub](https://github.com/extentos) - [X / Twitter](https://x.com/extentos) - [Sitemap](https://extentos.com/sitemap.xml) - [Blog RSS](https://extentos.com/blog/rss.xml)