Developer SDKs
Relevant source files
The following files were used as context for generating this wiki page:
The Omi ecosystem provides a suite of Software Development Kits (SDKs) designed to enable developers to build cross-platform mobile and desktop applications that interact with Omi wearables. These SDKs facilitate communication over Bluetooth Low Energy (BLE), real-time audio streaming, and integration with the Omi backend for transcription and memory management.
Sources: README.md:88-91, sdks/react-native/README.md:2-15
SDK Ecosystem Overview
Omi supports multiple platforms through dedicated SDKs, allowing for integration into various development environments. The primary focus of these SDKs is to abstract the complexity of the BLE Protocol and audio processing pipelines.
| SDK Type | Primary Technology | Capabilities |
|---|---|---|
| React Native SDK | TypeScript/JavaScript | BLE connection, real-time audio streaming, battery monitoring, transcription integration. |
| Python SDK | Python | Backend integration, memory management, and data processing. |
| Swift SDK | Swift | Native iOS and macOS application development. |
Sources: README.md:88-91, sdks/react-native/README.md:5-15, sdks/react-native/package.json:1-10
React Native SDK
The React Native SDK (@omiai/omi-react-native) is the primary tool for building cross-platform mobile applications on iOS and Android. It leverages react-native-ble-plx for Bluetooth communication and provides high-level abstractions for interacting with Omi hardware.
Sources: sdks/react-native/package.json:2-3, sdks/react-native/README.md:19-27
Architecture and Data Flow
The React Native SDK acts as a bridge between the mobile application UI and the Omi hardware device. It manages the lifecycle of the BLE connection, handles asynchronous requests for device status (like battery or codec), and provides an event-driven listener for incoming audio data.
The diagram shows the flow from the mobile app through the SDK to the hardware, and the external transcription flow.
Sources: sdks/react-native/README.md:58-94, sdks/react-native/example/README.md:43-51
Key Classes and Functions
The core functionality is encapsulated in the OmiConnection class.
| Class/Method | Description |
|---|---|
OmiConnection | The main entry point for managing Omi device interactions. |
scanForDevices(callback, timeout) | Scans for nearby Omi wearables via BLE for a specified duration. |
connect(deviceId, onStateChange) | Establishes a connection to a specific device and monitors state changes. |
getAudioCodec() | Retrieves the codec (e.g., Opus) currently used by the device. |
getBatteryLevel() | Asynchronously fetches the current battery percentage. |
startAudioBytesListener(callback) | Begins streaming raw audio data from the wearable to the application. |
stopAudioBytesListener(subscription) | Stops the active audio stream. |
Sources: sdks/react-native/README.md:58-94, sdks/react-native/example/README.md:7-12
Integration with Transcription Services
While the SDK handles audio data transmission, transcription is typically handled by integrating third-party services like Deepgram. The SDK provides the raw audio bytes which can then be forwarded to an STT (Speech-to-Text) provider.
Sequence diagram illustrating the real-time audio streaming and transcription lifecycle.
Sources: sdks/react-native/README.md:118-122, sdks/react-native/example/README.md:43-51
Implementation and Requirements
Platform Specific Configuration
For the SDK to function, specific permissions must be declared in the host application's manifest files to access Bluetooth and Location services (required for BLE scanning).
Android (AndroidManifest.xml):
BLUETOOTH,BLUETOOTH_ADMINACCESS_FINE_LOCATION- For Android 12+:
BLUETOOTH_SCAN,BLUETOOTH_CONNECT
iOS (Info.plist):
NSBluetoothAlwaysUsageDescriptionNSBluetoothPeripheralUsageDescription
Sources: sdks/react-native/README.md:36-54
Development and Build Process
The React Native SDK is built using react-native-builder-bob, which targets CommonJS, ES Modules, and TypeScript definitions.
{
"scripts": {
"build": "bob build",
"typecheck": "tsc --noEmit",
"lint": "eslint \"**/*.{js,ts,tsx}\""
}
}
Sources: sdks/react-native/package.json:28-31, sdks/react-native/package.json:151-162
Summary
The Omi Developer SDKs serve as the connective tissue between open-source AI hardware and application logic. By providing standardized interfaces for BLE communication and audio handling, they allow developers to focus on building AI-driven experiences—such as automated meeting summaries and proactive personal assistants—without managing low-level hardware protocols.
Sources: README.md:5-10, AGENTS.md:164-175, sdks/react-native/README.md:2-15