Multiplatform Bluetooth® Mesh Library

The multiplatform Bluetooth® Mesh API for iOS, Android, Web, Windows, Linux and Mac.

As app developers, we worked with every Bluetooth® Mesh library available in 2025. None of them fulfilled our requirements regarding features, ease of use, and documentation. We found it difficult to get started, debug issues, and create apps that run on multiple platforms. For each platform, we had to learn new concepts, APIs, and corner cases. Finally, there was not a single well maintained library in existence that could be used for web projects or on servers and gateways running Linux.

After completing two large projects using existing technology, we decided to develop our own library. The BluKo Mesh Library focuses on ease of use for developers who want to create mobile apps for iOS and Android, or who need to develop for Linux-based systems like gateways, wall panels, and more.

A unique feature is the ability to include this library in a browser-based application using Web Bluetooth. This allows you to create web apps that interact directly with Bluetooth® Mesh networks.

Target Platforms

  • Android using Kotlin
  • iOS and iPadOS using Swift
  • Web Browsers using TypeScript or JavaScript
  • Linux/Windows/Mac using Node.js or Java

This library is not made for embedded systems. It is made for mobile and desktop apps, powerful gateways or even server systems.

Key Features

  • Single codebase and single API across all supported platforms.
  • Supports native, modern async APIs - no need to manage callbacks.
  • Integrates with native platform features for bearer, storage, and logging.
  • Created by app developers for app developers - no cryptic, low-level APIs.
  • Supports all Bluetooth® Mesh 1.0.1 features like Provisioning, GATT Proxy, Groups, and various models.
  • Includes extensive documentation and sample code to get you started in hours instead of weeks.

Compatibility

Spec Version Level of Support
Mesh Protocol 1.0.1 full
Mesh Protocol 1.1.1 partial
Mesh Model 1.0.1 full
Mesh Model 1.1.1 partial
Device Properties 2026-02-04 full
Mesh Configuration Database Profile 1.0.1 full
Ambient Light Sensor NLC Profile 1.0.1 full
Basic Lightness Controller NLC Profile 1.0.1 full
Basic Scene Selector NLC Profile 1.0.1 full
Dimming Control NLC Profile 1.0.1 full
Energy Monitor NLC Profile 1.0.1 full
Occupancy Sensor NLC Profile 1.0.1 full

Mesh Features

  • Provisioning with and without OOB (input, output, static) for increased security
  • Configuration (manage keys, setup publish/subscribe, heartbeats, relay, proxy, friend, etc.)
  • Send and receive client and server messages
  • All address types like unicast addresses, groups and virtual labels
  • Scenes with store and recall
  • Proxy filter setup
  • IV Index update and secure network beacons (SNB)
  • Import and export networks using the Mesh Configuration Database Profile
  • Custom native implementations for Bearer, Storage and Logging possible

Will be added on demand:

  • Key Refresh Procedure

Architecture

What many developers don’t know is that Bluetooth® Mesh itself is “just software” sitting on top of Bluetooth® LE. While Bluetooth® LE needs an actual hardware chip plus native APIs, Bluetooth® Mesh just sits on top using BLE as a bearer (transport layer).

We’ve used this to our advantage by writing all the platform-agnostic code in a way that the same code can be used from various programming languages on various operating systems.

But since the Bluetooth® Mesh code somehow needs to interact with your platform code there are a couple of native pieces to fill the gaps. Those pieces are decoupled by strict and stable interfaces making it easy for you to implement your own. Or just use one that we ship together with the core library.

The BluKo Mesh Library core as a single block holding everything platform
              agnostic - API, core, logic, crypto and messages. Three ports are carved
              out of its edge, one each for the bearer, storage and logging interfaces.
              Attached to those ports sit the interchangeable native implementations:
              a BLE bearer, SQLite storage and a console logger.
The multiplatform core talks to your platform through three interfaces. Use the implementations we ship, or plug in your own.

Pluggable Bearer

The bearer needs to create a point-to-point GATT connection to connect to unprovisioned devices and proxy nodes. We ship implementations for Core Bluetooth (iOS, iPadOS, macOS), Android, Web Bluetooth (Chrome, Chromium) and Java (Linux, Windows, macOS).

Pluggable Storage

During the provisioning process a lot of data about the network and its nodes gets generated. That data is stored in the central device database (CDB) and needs to be available to your application code.

The data may be stored in plain text files, in an local database, on a remote server or in any other way. For that you can implement the storage interface in any way you need. Or use a ready-made implementation that we ship with the library.

Pluggable Logging

Integrate your app’s own logging with the logging generated by the library. For that implement the logging interface in any way that suits you best.

Supported Bluetooth® Mesh Models

All models of the model spec 1.0.1 are supported and some models of the model spec 1.1.1 are supported as well. This includes (but is not limited to):

  • All generic models like on/off, level, power, battery, location and their setup servers.
  • All time and scenes models like time, scene, scheduler and their setup servers.
  • All sensor models including setup server and all device property IDs.
  • All lighting models like lightness, CTL, HSL, xyL, LC and their setup servers.

Availability

This library is still under development with a first public version planned to be released in 2026. Let us know if you are interested and we will schedule a demo and talk you through the current state of development.


Funded by EFRE and ESF