Privacy Policy
Last updated: 27 May 2026
Oneshot is an iOS companion app for Meta Ray-Ban smart glasses (and iPhone-only test mode) that streams what the camera sees and what the microphone hears into an AI voice assistant, so the user can have a hands-free conversation about whatever they're looking at.
This document describes what data the app handles, where it goes, and what we do — and don't do — with it. We've tried to be specific rather than write a generic boilerplate policy.
TL;DR
- The app does not have user accounts. We don't see who you are.
- The app does not collect analytics, telemetry, advertising IDs, or any tracking data.
- The app does not sell or share data with third parties beyond the AI providers required to make the feature work (Google Gemini Live, and the ShipMemory backend the user points the app at).
- API keys you enter (Gemini, ShipEdge) are stored only on your device.
- Camera frames and microphone audio are streamed to Google Gemini Live (the AI model) for as long as a voice session is active. Google's privacy policy applies to that data once it reaches them: policies.google.com/privacy.
What the app accesses on your device
| Permission | Why |
|---|---|
| Camera | To stream video from your glasses (or from the iPhone camera in test mode) into the AI voice session, and to scan QR codes that load an asset's context. |
| Microphone | To capture your voice so the AI can hear you during a session. |
| Bluetooth | To connect to Meta Ray-Ban smart glasses. |
| Local network | To discover and connect to Meta smart glasses over Wi-Fi. |
| Photo Library (add only) | If you choose to save a captured photo from your glasses, the app writes it to your Photos library. The app does not read your library. |
If you decline a permission, the corresponding feature is disabled. You can revoke any permission at any time in iOS Settings.
What data leaves your device, and where it goes
The app makes outbound network calls only in the following situations:
1. Voice / video sessions → Google Gemini Live
When you start a session, the app opens a secure WebSocket (WSS) connection to Google's
Gemini Live API at generativelanguage.googleapis.com.
While the session is active:
- Microphone audio is streamed continuously.
- Camera frames are streamed at a throttled rate.
- The model's text + audio responses come back over the same connection.
This connection is authenticated with the Gemini API key you provide in Settings. Sessions only happen when you start one; closing the session closes the connection.
We don't proxy or log this traffic. It goes directly from your device to Google. Google's privacy policy and terms govern what happens to it on their end: policies.google.com/privacy.
2. Context cards → the ShipEdge backend you point the app at
When you scan a QR code or short code, the app fetches a "ContextCard" (the system prompt
that tells the AI which asset it's helping with) from a ShipEdge backend, by default
shipedge-production.up.railway.app.
You can change this URL in Settings.
The ContextCard is read-only data; no personal information about you is sent in this request. The request is HTTPS-authenticated with the ShipEdge API key in Settings.
If the active context defines tool calls (used during a session to look things up in the asset's wiki), those tool calls are also HTTPS requests to the same ShipEdge backend. They include the tool's arguments — typically the asset id and a query string — and never the raw audio or video.
3. Optional WebRTC signaling (off by default)
If you configure a WebRTC signaling URL in Settings, the app will connect to that server (WSS) to negotiate a peer-to-peer video stream. This is an opt-in developer feature and is empty by default.
4. Universal Links / App Links
The app handles https://oneshot.glass/...
URLs (e.g. https://oneshot.glass/c/<code>)
so that tapping an Oneshot link opens the app. No data is sent to
oneshot.glass as part of
this — it's a local URL-routing mechanism.
What we do not do
- We do not collect analytics. No Crashlytics, no Firebase, no Amplitude, no Segment, no Mixpanel, no other SDK that phones home.
- We do not use the IDFA or any advertising identifier.
- We do not track you across apps or websites.
- We do not have a backend that stores your data under your name. The ShipEdge backend stores ContextCards and aggregated session traces keyed by opaque session UUIDs, not by personal identifiers.
- We do not sell data to anyone.
API keys you enter in the app
The Gemini API key and ShipEdge API key you enter in Settings are stored locally on your
device (in iOS UserDefaults
/ DataStore). They are
not transmitted anywhere except to the corresponding service when making a request that
needs them. Uninstalling the app removes them.
Children
Oneshot is not directed at children under 13 and we do not knowingly collect data from children.
Changes to this policy
If we change this policy in a way that meaningfully changes what data the app handles, we'll update the "Last updated" date at the top, and (for material changes) flag it on oneshot.glass.
Contact
Questions about privacy: mika@oneshot.glass.