Skip to main content

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/ and matter_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 on coloredlogs, 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 as python-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 .ota firmware 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 to POST /ota-upload/<upload_id>. Raises OtaUploadError (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.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matter-python-client 1.4.0
File Size Uploaded
matter_python_client-1.4.0.tar.gz 203.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for matter-python-client 1.4.0
File Interpreter ABI Platform
matter_python_client-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 528.9 kB

Release files / matter_python_client-1.4.0.tar.gz

Download URL matter_python_client-1.4.0.tar.gz
Size 203.8 kB
Tags Source
SHA-256 checksum
How to use checksums
83c6c671bf52a7f47354324054af78fe9f9b0de636aa6a25fa39a67a3333967c
BLAKE2b-256 checksum
How to use checksums
e7b83890100b41e17375697a3e4d692984b576692669529406c3682a0fd39547
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 Aug 7, 2026.

Transparency log

Release files / matter_python_client-1.4.0-py3-none-any.whl

Download URL matter_python_client-1.4.0-py3-none-any.whl
Size 325.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4faeb4aa31b41e1af7d831cf615e4d20f953c6b2fef8be77aa9ffe3d11748dc8
BLAKE2b-256 checksum
How to use checksums
3dc832e956fc746102f7bb0da95b4a224ff142fbecae5081cf6fb2b79d846c95
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 Aug 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.15

2 release files

0.5.10

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page