An Android app for Meta glasses that replaces the Meta AI app.
Your photos stay on your phone, and "Hey Meta" answers with the model you choose.
Features | Install | Privacy | Good to know | Build | Get involved
Visor works with Ray-Ban Meta, Oakley Meta and the other Meta glasses. It speaks the glasses' own protocol over Bluetooth and Wi-Fi Direct.
Note
Visor is an independent project. It is not affiliated with, endorsed by or sponsored by Meta Platforms or EssilorLuxottica.
| Feature | What it does |
|---|---|
| Home | A 3D model of your pair, lit by a light that shows their state: connected, charging, asleep, recording, out of reach. Under it: both batteries, free space, volume, temperature and your latest photos. |
| Gallery | Imports photos and videos over Wi-Fi Direct, on its own while the glasses charge or when you ask. Live photos become Motion Photos. Files go to Pictures/Visor and Movies/Visor. |
| Live view | The glasses' camera on your phone, with recording, an instant replay of the last minutes, snapshots, RTMP broadcast and Live AI. |
| Assistant | "Hey Meta" goes to your own model: Claude, or any OpenAI-compatible endpoint. The glasses read the answer in their own voice. A diary on the phone keeps every conversation, and you can continue one from the app. |
| Notifications | Message notifications go to the glasses, which announce the sender by the name in your contacts. |
| Settings | Every setting the glasses have, the way the Meta app shows them. Advanced holds the rest, assistant language packs and the firmware's feature flags. |
| Outside the app | A home screen widget, a Quick Settings tile, launcher shortcuts, and a Live Update notification while the Live view runs. |
| Developer mode | Other apps and automations can take photos and videos, import captures and hear about new ones. See Developer mode. |
| More than one pair | Keep several pairs on one phone. Home swipes between them, each with its name, batteries and a Connect button, and ends with a page to set up another. |
| Meta Ray-Ban Display | A teleprompter, live captions and translation, the Neural Band's gestures, the Briefing panel and saved Wi-Fi networks. The glasses' own apps reach the internet through the phone, with Instagram's Reels and messages among them. |
| Neural Band | Set up from the Display's settings, with its battery on Home and its wrist in Settings. |
- Glasses: a pair of Meta glasses, such as Ray-Ban Meta, Oakley Meta or the Meta Ray-Ban Display. Support for the Display and its Neural Band is newer and does not yet cover everything the Meta AI app does.
- Phone: Android 12 or later.
- Meta account, for setup. Log in with a password or an email code. Passkeys do not work.
- For the assistant: an API key from Anthropic or from an OpenAI-compatible service.
- Download
visor-<version>.apkfrom the latest release. - Compare its SHA-256 with the
.sha256file next to it. - Install the APK. Android asks you to allow installs from your browser or file manager.
- Open Visor and follow the setup: permissions, Meta login, pairing, then pick your glasses.
Tip
To put the glasses in pairing mode, fold both arms and hold the capture button for about 5 seconds. The LED inside the frame blinks blue.
Release signing certificate
CN=Visor
SHA-256: F6:01:C7:FE:63:EF:04:E0:7F:66:8A:EC:BA:5A:2B:9C:23:90:C4:C0:22:B5:2B:5F:B0:F6:D3:04:22:7C:B9:C7
Visor has no server of its own, no analytics and no crash reporting. It connects only to these:
| To | When | What for |
|---|---|---|
Meta (accounts.meta.com, api.accounts.meta.com, meta.graph.meta.com, ar.graph.meta.com, graph.facebook-hardware.com) |
During setup | The login, and the ownership receipt that makes Visor the owner app of your glasses |
Meta (ar-genai.graph.meta.com) |
When it needs to | Your pair's frame style and lens colour, assistant language packs, and the Display's weather, sports and stocks |
Meta (ar.graph.meta.com, graph.facebook.com, i.instagram.com) |
When you link a Facebook, Instagram or Threads account to the glasses | That account's tokens and ids, which Visor hands to the glasses |
| Your model provider | When you ask the assistant | Your question, with your own API key |
| Your RTMP server | When you broadcast from the Live view | The broadcast |
OpenStreetMap (nominatim.openstreetmap.org, routing.openstreetmap.de) |
When Maps on the Display searches or plans a route | The search with your position, and the route's start and end |
GitHub (api.github.com) |
Twice a day | The latest release, to tell you about a new version. Turn it off in Settings, About. |
Everything else stays between the phone and the glasses.
Important
The glasses accept one session at a time. If the Meta AI app connects to them, Visor's session ends, and the other way round.
- Your own builds and releases do not mix. A build you made has a different signing key from a release, so uninstall one before you install the other. Uninstalling removes the login and the glasses' keys from the phone, and you set up again.
- The first "Hey Meta" can go unheard. For English answers in the glasses' own voice, Visor sometimes turns off a Meta setting and restarts the glasses' assistant when it connects.
- The assistant is as good as your model. Visor sends it the question, the recent conversation and, when you ask about what you see, the photo the glasses take. In a partner language, questions about what you see need a model with tool calls and images.
- Partner-language camera commands take a photo, record a video or hyperlapse, and stop recording. Photos need "Voice photos" on.
You need JDK 21 (the one bundled with Android Studio works) and the Android SDK with platform 37.
./gradlew :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Warning
Setup logs in to Meta with the Meta AI app's own client tokens, and they are not in this repository. Without them Visor builds and runs, but the Meta login and the ownership step of setup fail.
Adding the Meta client tokens
Extract the tokens from the official Meta AI app, where they are the strings that start with HW|, AR| and FRL|. Add them to local.properties before you build:
VISOR_META_HW_TOKEN=HW|...
VISOR_META_AR_TOKEN=AR|...
VISOR_META_FRL_TOKEN=FRL|...
Release builds in CI read them from the repository secrets with the same names.
Debug builds and releases
Debug builds write every frame to files/wire.log on the phone:
adb exec-out run-as com.macedonga.visor cat files/wire.log
They also have a broadcast receiver that drives the app from adb (app/src/debug). Release builds have neither.
A tag like v1.2.3 builds the signed release APK in CI and publishes it as a GitHub release (.github/workflows/release.yml).
How the code is laid out
| Module | What it holds |
|---|---|
core/protocol |
Wire format, ciphers, handshake messages. Plain JVM. |
core/transport |
The LE L2CAP, RFCOMM and TCP byte pipes, and the wire log. |
core/session |
The link: handshake, channel mux, reconnect ladder. |
core/identity |
Owner key store, trust, Meta login, change of owner, language packs. |
core/connection |
GlassesConnection and GlassesState, device status. |
core/media |
Media import, the Live view, the glasses' MobileConfig. |
core/settings |
Glasses settings and contacts. |
core/assistant |
Plays Meta's assistant server on the glasses' side, with your model. |
core/design |
Colours and type. |
app |
The service, the screens, setup, the widget and the tile. |
CLAUDE.md lists the protocol traps that cost the most time to find.
| You have | Go to |
|---|---|
| A question, an idea, or a report of how Visor works on your pair | Discussions |
| A bug | Issues, with the event log from Settings, Advanced, Event log |
| An accessibility problem | The accessibility form in Issues. ACCESSIBILITY.md says what works and what does not yet. |
| A security problem | A private report, as SECURITY.md explains. Never a public issue. |
| Code to contribute | CONTRIBUTING.md first. There are no test suites: changes are tried on real glasses, and a pull request says what was tried. |
Visor is free software under the GNU Affero General Public License v3.0.
Meta, Ray-Ban, Oakley, Ray-Ban Meta and Oakley Meta are trademarks of their owners. Visor uses the names only to say which glasses it works with.
