This release is a pre-release and may not be stable for production use.
Python Client for the OHF Matter Server
A PyPI package (matter-python-client) providing Python bindings for the OHF Matter Server. This is a drop-in replacement for the client portion of python-matter-server, with custom cluster definitions updated to match the Matter.js server.
Origin
The client and common modules were copied from python-matter-server v8.1.2 and modified:
- Source:
matter_server/client/andmatter_server/common/from python-matter-server - Modified:
matter_server/common/custom_clusters.py— updated to match the JS server's cluster definitions - Excluded:
matter_server/server/(the JS server replaces it),common/helpers/logger.py(depends oncoloredlogs, a server-only dependency)
Custom Cluster Changes
| Cluster | Change |
|---|---|
| EveCluster | +8 attributes (getConfig, setConfig, loggingMetadata, loggingData, lastEventTime, statusFault, childLock, rloc16), wattAccumulatedControlPoint type fixed |
| HeimanCluster | Attribute IDs shortened to match JS server |
| NeoCluster | Types changed from float32 to uint |
| Polling | Removed (JS server handles polling natively) |
Package
- PyPI name:
matter-python-client - Python module:
matter_server(same import path aspython-matter-server) - Python: >= 3.12
- Dependencies:
aiohttp,orjson,home-assistant-chip-clusters
npm Scripts (from monorepo root)
# First-time setup: create venv and install with test dependencies
npm run python:install
# Run unit + mock server tests (fast, ~1s)
npm run python:test
# Run full integration tests against real Matter.js server + test device (~40s)
npm run python:test-integration
# Run all Python tests
npm run python:test-all
# Build the PyPI package (.tar.gz + .whl)
npm run python:build
Usage
The package provides the same matter_server.client API as python-matter-server:
import aiohttp
from matter_server.client import MatterClient
async with aiohttp.ClientSession() as session:
client = MatterClient("ws://localhost:5580/ws", session)
await client.connect()
init_ready = asyncio.Event()
listen_task = asyncio.create_task(client.start_listening(init_ready))
await init_ready.wait()
nodes = client.get_nodes()
OHF-only extensions
Beyond the python-matter-server API, the client exposes commands the Matter.js server adds:
get_network_topology(refresh=False)— the Thread/Wi-Fi network as a graph (schema 13+)upload_ota_file(image)— store a local.otafirmware image in the server's OTA image store (schema 13+). Takes the raw bytes or a path; reserves an upload id over the WebSocket session, then streams the bytes toPOST /ota-upload/<upload_id>. RaisesOtaUploadError(code 101) for a corrupt image, an expired/spent id, or disabled OTA support.get_icd_state,register_icd,unregister_icd,resync_icd— ICD Check-In registration
version = await client.upload_ota_file("/path/to/firmware.ota")
print(version.vid, version.pid, version.software_version)
To use this package instead of python-matter-server in the Home Assistant Matter integration, change manifest.json:
- "requirements": ["python-matter-server==8.1.2"],
+ "requirements": ["matter-python-client==1.0.0"],
Testing
The test suite has three layers:
- Import smoke tests (8 tests) — verify all HA integration imports resolve
- Mock server tests (4 tests) — Python client against JS MockMatterServer subprocess
- Integration tests (63 tests) — Python client against real Matter.js server + test device, mirroring the JS
IntegrationTest.ts
Metadata
Release files for matter-python-client 1.4.1a4.dev20260912
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| matter_python_client-1.4.1a4.dev20260912.tar.gz | 204.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| matter_python_client-1.4.1a4.dev20260912-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 530.0 kB
Release files / matter_python_client-1.4.1a4.dev20260912.tar.gz
| Download URL | matter_python_client-1.4.1a4.dev20260912.tar.gz |
|---|---|
| Size | 204.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0682b42a77c42fd8fb187209bed30dd903f69859680f1edfc12ef3664769344f
|
|
BLAKE2b-256 checksum How to use checksums |
f0eadbbd39868d91be52c629b0ffd198a9099f277986c2d31e8a5865f04d11c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / matter_python_client-1.4.1a4.dev20260912-py3-none-any.whl
| Download URL | matter_python_client-1.4.1a4.dev20260912-py3-none-any.whl |
|---|---|
| Size | 325.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
564b60ff3ece97e2918de73447aa1843de4983442eb83886ce0e3ff329a8b9ca
|
|
BLAKE2b-256 checksum How to use checksums |
fa97a04b6b3e628091e51f2c269f5cb920cd4380419d203ccc616aec28579493
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log