Metadata-Version: 2.4
Name: friend-lite-sdk
Version: 0.3.0
Summary: Python SDK for OMI/Neo1 BLE wearable devices — audio streaming, button events, and device control
License-Expression: MIT
Project-URL: Homepage, https://github.com/SimpleOpenSoftware/chronicle
Project-URL: Repository, https://github.com/SimpleOpenSoftware/chronicle
Project-URL: Original Project, https://github.com/BasedHardware/omi
Keywords: ble,bluetooth,wearable,omi,audio,streaming
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: bleak>=0.22.3
Requires-Dist: numpy>=1.26
Requires-Dist: opuslib>=3.0.1
Requires-Dist: websockets>=14.0.0
Provides-Extra: deepgram
Requires-Dist: deepgram-sdk>=3.11.0; extra == "deepgram"
Provides-Extra: wyoming
Requires-Dist: wyoming; extra == "wyoming"
Provides-Extra: dev
Requires-Dist: mypy>=1.15.0; extra == "dev"
Dynamic: license-file

# friend-lite-sdk

Python SDK for OMI / Friend Lite BLE wearable devices — audio streaming, button events, device control, and transcription.

Derived from the [OMI Python SDK](https://github.com/BasedHardware/omi/tree/main/sdks/python) (MIT license, Based Hardware Contributors). See `NOTICE` for attribution.

## Installation

```bash
pip install friend-lite-sdk
```

With optional transcription support:

```bash
pip install "friend-lite-sdk[deepgram]"   # Deepgram cloud transcription
pip install "friend-lite-sdk[wyoming]"    # Local ASR via Wyoming protocol
pip install "friend-lite-sdk[deepgram,wyoming]"  # Both
```

## Features

- **BLE Audio Streaming** — Connect to OMI/Friend Lite devices and stream Opus-encoded audio
- **Button Events** — Subscribe to single tap, double tap, long press events
- **Haptic Control** — Trigger haptic feedback patterns on supported devices
- **WiFi Sync** — Configure and trigger WiFi-based audio sync
- **Storage Access** — Read stored audio from device storage
- **Neo1 Support** — Sleep/wake control for Neo1 devices
- **Transcription** — Built-in Deepgram and Wyoming ASR integration

## Quick Start

```python
import asyncio
from friend_lite import OmiConnection, ButtonState, parse_button_event

async def main():
    async with OmiConnection("AA:BB:CC:DD:EE:FF") as conn:
        # Stream audio
        await conn.subscribe_audio(lambda _handle, data: print(len(data), "bytes"))

        # Listen for button events
        await conn.subscribe_button(
            lambda _handle, data: print("Button:", parse_button_event(data))
        )

        await conn.wait_until_disconnected()

asyncio.run(main())
```

## Device Discovery

```python
import asyncio
from friend_lite import print_devices

asyncio.run(print_devices())
```

## Links

- [Chronicle Project](https://github.com/SimpleOpenSoftware/chronicle)
- [Original OMI Project](https://github.com/BasedHardware/omi)
