Type-safe, high-performance, secure RPC over Bluetooth Low Energy.
Documentation: blerpc.net
bleRPC generates client and handler code from .proto files for multiple platforms, enabling type-safe RPC calls over BLE GATT with automatic MTU-aware fragmentation and reassembly.
- Define services once in Protocol Buffers, generate code for each platform
- Up to ~59 KB/s throughput over BLE (Android 59.0, iOS 32.1, Python 30.3 KB/s)
- Runs on devices with as little as 32 KB RAM
- Optional E2E encryption (X25519 + Ed25519 + AES-128-GCM)
bleRPC implements a three-layer protocol stack:
- Command Layer — Wraps Protocol Buffer payloads with metadata
- Encryption Layer — Optional AES-128-GCM encryption following a 4-step key exchange
- Container Layer — Fragments data into MTU-sized containers for BLE transmission
Communication occurs through a single GATT characteristic using Write Without Response and Notify operations.
| Platform | Language |
|---|---|
| macOS | Python |
| iOS | Swift |
| Android | Kotlin |
| iOS / Android | Dart (Flutter) |
| iOS / Android | TypeScript (React Native) |
| nRF54L15 DK | C (Zephyr) |
| Platform | Language |
|---|---|
| nRF54L15 DK | C (Zephyr) |
| EFR32xG22E EK | C (Zephyr) |
| macOS | Python |
| Directory | Description |
|---|---|
proto/ |
Protocol Buffer definitions |
central_py/ |
Python Central client (macOS) |
central_fw/ |
C Central firmware (nRF54L15 DK / Zephyr) |
central_ios/ |
Swift Central app (iOS) |
central_android/ |
Kotlin Central app (Android) |
central_flutter/ |
Dart Central app (Flutter) |
central_rn/ |
TypeScript Central app (React Native) |
peripheral_fw/ |
C Peripheral firmware (nRF54L15 DK, EFR32xG22E / Zephyr) |
peripheral_py/ |
Python Peripheral server (macOS) |
boards/ |
Custom Zephyr board definitions |
tools/ |
Code generation and debugging tools |
docs/ |
Firmware build and flash guide |
See the Getting Started guide.
| Language | Repository |
|---|---|
| Python / C | blerpc-protocol |
| Swift | blerpc-protocol-swift |
| Kotlin | blerpc-protocol-kt |
| Dart | blerpc-protocol-dart |
| TypeScript | blerpc-protocol-rn |
The documentation site source is at tdaira/tdaira.github.io.