Documentation Index Fetch the complete documentation index at: https://docs.omi.me/llms.txt
Use this file to discover all available pages before exploring further.
Overview
An easy-to-install Swift package for connecting to Omi devices. Get started in seconds with local Whisper-based transcription - no cloud API required.
Swift Package Native iOS/macOS support
Local Transcription Whisper runs on-device
Simple API Connect in minutes
Installation
Create a New Project
Open Xcode → File → New Project → iOS → App Make sure to select Storyboard as the Interface option.
Add the Swift Package
Navigate to File → Swift Packages → Add Package Dependency…
Select your project
Paste the repository URL: https://github.com/BasedHardware/omi
Click Next
If you aren’t prompted to add the package to your target, click “Add Package” again, then “Add to Target” and choose your project.
Add Bluetooth Permission
Go to Targets → Your Project → Info and add this permission: < key > NSBluetoothAlwaysUsageDescription </ key >
< string > This app needs Bluetooth access to connect to BLE devices. </ string >
Quick Start
Get transcription working in 2 minutes:
Copy This Code
Replace your ViewController.swift with: import UIKit
import omi_lib
class ViewController : UIViewController {
override func viewDidLoad () {
super . viewDidLoad ()
self . lookForDevice ()
}
func lookForDevice () {
OmiManager. startScan { device, error in
print ( "starting scan" )
if let device = device {
print ( "got device " , device)
self . connectToOmiDevice ( device : device)
OmiManager. endScan ()
}
}
}
func connectToOmiDevice ( device : Device) {
OmiManager. connectToDevice ( device : device)
self . listenToLiveTranscript ( device : device)
self . reconnectIfDisconnects ()
}
func reconnectIfDisconnects () {
OmiManager. connectionUpdated { connected in
if connected == false {
self . lookForDevice ()
}
}
}
func listenToLiveTranscript ( device : Device) {
OmiManager. getLiveTranscription ( device : device) { transcription in
print ( "transcription:" , transcription ?? "no transcription" )
}
}
}
Build and Run
Select your development team
Connect your iPhone via cable (simulators don’t support Bluetooth)
Run the project
Test It
Turn on your Omi device
The app should connect automatically
Speak - you’ll see transcription in the Xcode console
There’s no UI in this example - transcription appears in the Xcode logs.
API Reference
The OmiManager class provides all device interaction methods:
Device Scanning
import omi_lib
// Scan for any Omi device
func lookForDevice () {
OmiManager. startScan { device, error in
if let device = device {
print ( "got device " , device)
self . connectToOmiDevice ( device : device)
OmiManager. endScan ()
}
}
}
// Scan for a specific device
func lookForSpecificDevice ( device_id : String ) {
OmiManager. startScan { device, error in
if let device = device, device.id == "some_device_id" {
print ( "got device " , device)
self . connectToOmiDevice ( device : device)
OmiManager. endScan ()
}
}
}
Connection Management
func connectToOmiDevice ( device : Device) {
OmiManager. connectToDevice ( device : device)
self . reconnectIfDisconnects ()
}
func reconnectIfDisconnects () {
OmiManager. connectionUpdated { connected in
if connected == false {
self . lookForDevice ()
}
}
}
Live Data
Live Transcription
Live Audio
func listenToLiveTranscript ( device : Device) {
OmiManager. getLiveTranscription ( device : device) { transcription in
print ( "transcription:" , transcription ?? "no transcription" )
}
}
func listenToLiveAudio ( device : Device) {
OmiManager. getLiveAudio ( device : device) { file_url in
print ( "file_url: " , file_url ? . absoluteString ?? "no url" )
}
}
OmiManager Methods
Method Description startScan(callback)Start scanning for Omi devices endScan()Stop scanning connectToDevice(device)Connect to a discovered device connectionUpdated(callback)Monitor connection state changes getLiveTranscription(device, callback)Receive real-time transcription getLiveAudio(device, callback)Receive audio file URLs
License
MIT License - Omi’s Swift SDK is open source.
SDK Overview Compare all available SDKs
GitHub Source View source code and contribute