Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

matter-ble-proxy

Python client library for the OHF Matter Server BLE proxy WebSocket protocol.

The matter-server can run on a host with no BLE adapter and delegate every BLE operation to a separate process or device. This library implements the client side of that protocol so that any Python process with access to a BLE adapter (via Bleak, Home Assistant's bluetooth component, an ESPHome BLE proxy, ...) can act as the BLE bridge.

The protocol is documented in docs/ble-proxy-protocol.md.

Install

pip install matter-ble-proxy

Python 3.12+ required.

Standalone CLI

The package ships a reference CLI mirroring the JS noble-ble-proxy example. Useful for testing the matter-server's /ble endpoint without Home Assistant in the loop.

# Start the matter-server with --ble-proxy in one terminal, then:
matter-ble-proxy --server ws://localhost:5580/ble

The CLI uses Bleak directly against the local OS bluetooth adapter.

Library API

For integrators (Home Assistant, custom add-ons, etc.) wire your own BLE source in by implementing two ABCs:

from matter_ble_proxy import (
    AdvertisementData,
    BleDeviceResolver,
    BleScanSource,
    MatterBleProxy,
)

class MyScanSource(BleScanSource):
    async def start(self, callback): ...    # call `callback(AdvertisementData(...))`
    async def stop(self): ...

class MyDeviceResolver(BleDeviceResolver):
    async def resolve(self, address): ...   # return a bleak.BLEDevice / address / None

proxy = MatterBleProxy(
    ws_url="ws://localhost:5580/ble",
    scan_source=MyScanSource(),
    device_resolver=MyDeviceResolver(),
)
await proxy.connect()
await proxy.run_until_closed()
await proxy.disconnect()

The default Bleak-backed implementations (BleakScanSource, BleakDeviceResolver) live in matter_ble_proxy.bleak_backend.

Reconnection

MatterBleProxy does not reconnect on its own. When the WebSocket closes — server restart, network blip, or the caller calling disconnect()run_until_closed() returns after the library releases all BLE resources (active scan stopped, every peripheral disconnected). The caller decides whether to reconnect:

  • The bundled CLI exits on disconnect; restart it manually.
  • Home Assistant ties the BLE proxy lifecycle to the matter-server WebSocket: when HA reconnects to the matter-server it constructs and connects a fresh MatterBleProxy for the new session.
  • A custom integration can wrap connect() + run_until_closed() in a retry loop with whatever backoff and cancellation policy fits its supervisor.

The library deliberately stays out of this decision so it can plug into hosts that already own reconnect logic (HA, systemd, etc.) without fighting them.

Development

This package lives inside the matter-js/matterjs-server repo and shares its release pipeline. From the repo root:

npm run python-ble-proxy:install      # create venv + install editable + test deps
npm run python-ble-proxy:lint         # ruff
npm run python-ble-proxy:typecheck    # mypy
npm run python-ble-proxy:test         # pytest
npm run python-ble-proxy:build        # build sdist+wheel

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matter_ble_proxy-1.3.2a0.dev20260724.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matter_ble_proxy-1.3.2a0.dev20260724-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file matter_ble_proxy-1.3.2a0.dev20260724.tar.gz.

File metadata

File hashes

Hashes for matter_ble_proxy-1.3.2a0.dev20260724.tar.gz
Algorithm Hash digest
SHA256 7f557a0ffd1c9300ef97d1cc55eddb5bf7f44d9d77343cfa694b5f7ece3a70a0
MD5 052646c4df41e05d842a20d5bd9aa4d6
BLAKE2b-256 c1a7cb09ff7d6a6a063872c5b9364264d9527c1bd73c28381516d2d917acae05

See more details on using hashes here.

Provenance

The following attestation bundles were made for matter_ble_proxy-1.3.2a0.dev20260724.tar.gz:

Publisher: release-npm.yml on matter-js/matterjs-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file matter_ble_proxy-1.3.2a0.dev20260724-py3-none-any.whl.

File metadata

File hashes

Hashes for matter_ble_proxy-1.3.2a0.dev20260724-py3-none-any.whl
Algorithm Hash digest
SHA256 3d3ece19fb122e4f5904c1b8df0e2a5a30306e449b267c456f961cb9ad7c99ed
MD5 b8d956436fe0ed87f1ff960e9ff6327e
BLAKE2b-256 05d3d6dc6ba11ea7a493203bf69a226697c4729a35f934a0d3d51d378f13f317

See more details on using hashes here.

Provenance

The following attestation bundles were made for matter_ble_proxy-1.3.2a0.dev20260724-py3-none-any.whl:

Publisher: release-npm.yml on matter-js/matterjs-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.4.0

2 files

1.3.3

2 files

1.3.2

2 files

This release

1.3.2a0.dev20260724 This release

2 files

1.3.1

2 files

1.3.0

2 files

1.2.8

2 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

0.8.0

2 files

0.7.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page