Repositories

bleRPC is organized into a main monorepo and several protocol library packages for each supported language.

Repository Relationships

A single shared set of .proto definitions backs one protocol library per language, consumed by the central apps and firmware.

blerpc.proto
Shared Protocol Buffers definitions
per language

Architecture Overview

tdaira/blerpc

The main monorepo containing firmware, central clients, code generators, and tests.

peripheral_fw/Zephyr peripheral firmware (C) — nRF54L15 & EFR32xG22EC
peripheral_py/Python peripheral (bless) for role-reversal testingPython
central_py/Python central client (bleak) + integration testsPython
central_fw/Zephyr central firmware (C) for device-to-device communicationC
central_android/Android central app (Kotlin) with test runnerKotlin
central_ios/iOS central app (Swift) with test runnerSwift
central_flutter/Flutter central app (Dart) with test runnerDart
central_rn/React Native central app (TypeScript) with test runnerTypeScript
proto/Protocol Buffers definitions (blerpc.proto)
tools/generate-handlers/Code generator (Go) — generates handlers and clients for all languagesGo
boards/Custom board definitions (EFR32xG22E)
docs/Additional documentation (firmware guide)

Protocol Libraries

Platform-independent protocol encoding/decoding libraries, published as separate packages for each language.

blerpc-protocol

Python C

Container splitting/reassembly, command encoding/decoding, and E2E encryption (key exchange + AES-128-GCM). The Python package is installable via pip. The C implementation (c/src/ + c/include/) is for embedded use.

pip install git+https://github.com/tdaira/blerpc-protocol.git

blerpc-protocol-swift

Swift

Swift Package for iOS and macOS. Uses Foundation and CryptoKit (Apple platform frameworks). Supports iOS 16+ and macOS 13+.

// Swift Package Manager
.package(url: "https://github.com/tdaira/blerpc-protocol-swift", from: "0.7.0")

blerpc-protocol-kt

Kotlin

Kotlin library for Android. Published to GitHub Packages (Maven).

implementation("com.blerpc:blerpc-protocol-kt:0.7.0")

blerpc-protocol-dart

Dart

Pure Dart library for Flutter. Published to pub.dev. Uses the cryptography package for encryption.

blerpc_protocol: ^0.7.0

blerpc-protocol-rn

TypeScript

TypeScript library for React Native. Uses @noble/ciphers, @noble/curves, and @noble/hashes for encryption (pure JS, no native dependencies).

"@blerpc/protocol-rn": "github:tdaira/blerpc-protocol-rn"

CI / CD

Each repository has GitHub Actions CI:

RepositoryCI Checks
blerpcPython tests + ruff lint, C lint (clang-format), Go lint + build, iOS build, Android build, Flutter build, React Native build
blerpc-protocolPython tests + lint, C lint + tests
blerpc-protocol-swiftswift build, swift test, SwiftLint
blerpc-protocol-ktGradle test, ktlint
blerpc-protocol-dartdart analyze, dart test, auto-publish to pub.dev
blerpc-protocol-rneslint, prettier check, jest test, npm publish

License

All bleRPC repositories are licensed under the Apache License 2.0, so you can use them freely in open- or closed-source projects, including embedded firmware.