Skip to main content
Pre-release

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/ 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.1a2.dev20260830

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.1a2.dev20260830
File Size Uploaded
matter_python_client-1.4.1a2.dev20260830.tar.gz 204.7 kB Details

Built distribution (wheel)

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

Total release size: 530.0 kB

Release files / matter_python_client-1.4.1a2.dev20260830.tar.gz

Download URL matter_python_client-1.4.1a2.dev20260830.tar.gz
Size 204.7 kB
Tags Source
SHA-256 checksum
How to use checksums
77d6c4b4ce2fed98c2b2dc2f26b81dc568a02035a643b85567e6eb297b99d6a2
BLAKE2b-256 checksum
How to use checksums
fe6c1aa60e2de585e60199ce339ef6e967aeeeb9ba08aea59828c5926b964002
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 30, 2026.

Transparency log

Release files / matter_python_client-1.4.1a2.dev20260830-py3-none-any.whl

Download URL matter_python_client-1.4.1a2.dev20260830-py3-none-any.whl
Size 325.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
60046a3aa2ee41514bffe6c9e5088b305fa16847fb9691d8c16c2c085513ea96
BLAKE2b-256 checksum
How to use checksums
964dd6d610984ecfe5bc3300dc6e72ea6dc3c4858afffffe5601b89c4ae2703a
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 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.4.0

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