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. |
- Glasses: a pair of Meta glasses, such as Ray-Ban Meta or Oakley Meta. Support for the Meta Ray-Ban Display is limited and lives on the
displaybranch. - Phone: Android 10 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, 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, and assistant language packs |
| 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 |
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.
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 RFCOMM byte pipe 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.
