Skip to main content
Mentra Miniapp SDK betaThe SDK is in beta, so its APIs may change before general availability.There is currently no way to distribute a miniapp built with the Miniapp SDK. In a future release, developers will upload miniapps through the Mentra Developer Console, and users will download them from the Mentra Miniapp Store. Neither service supports Miniapp SDK distribution in MentraOS 3.0.Only use the Miniapp SDK if you are comfortable with these limitations.Developing on Mentra Live? We recommend using the Mentra Bluetooth SDK.To enable miniapp development, open Settings in the Mentra App and tap the version number at the bottom ten times. Then open Debug Settings, turn on Miniapp Developer Settings, return to Settings, and open Miniapp Developer Settings.Share feedback with an in-app bug report, on Discord, or by email at help@mentra.glass.
session.mic is the low-level audio input: raw frames and a voice-activity signal. If you want text, use session.transcription instead. Reach for mic when you need the audio itself, like recording a clip or running your own audio processing. Both subscriptions need the MICROPHONE permission in your manifest, or the phone rejects them with PERMISSION_NOT_DECLARED.

Raw audio

Each AudioChunkData has:

Voice activity

onVoiceActivity fires when the user starts and stops speaking, without giving you the audio:

Cleaning up

Both methods return an unsubscribe function, and stop() tears down everything this module owns:
session.mic.hasPermission reports whether MICROPHONE is declared in your manifest, not whether the user granted the OS prompt. If they denied it, the subscription succeeds but no chunks arrive.
mic, transcription, and translation are independent. Subscribing to raw audio does not give you transcripts, and vice versa. Audio output (playback and text-to-speech) lives on session.speaker.