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()

To reach a server that listens on a unix socket (--listen-address /path/to/socket), pass unix:///path/to/socket as the server URL. The client then opens its own session on that socket for the WebSocket and the OTA upload, and the session passed in stays unused.

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.1a10.dev20261006

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.1a10.dev20261006
File Size Uploaded
matter_python_client-1.4.1a10.dev20261006.tar.gz 212.2 kB Details

Built distribution (wheel)

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

Total release size: 543.0 kB

Release files / matter_python_client-1.4.1a10.dev20261006.tar.gz

Download URL matter_python_client-1.4.1a10.dev20261006.tar.gz
Size 212.2 kB
Tags Source
SHA-256 checksum
How to use checksums
43bfe48868fdcfbdb68a6a59c7382a242f1fe0b57611d41e083ff150b63d61cc
BLAKE2b-256 checksum
How to use checksums
068a7282c4db0472c4248431333dedd515c26b66fa9c04ec775f96de8ead0a6e
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 Oct 6, 2026.

Transparency log

Release files / matter_python_client-1.4.1a10.dev20261006-py3-none-any.whl

Download URL matter_python_client-1.4.1a10.dev20261006-py3-none-any.whl
Size 330.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e41c05244492a24bd820f2df74302d8689edf1899bdcc800493934a35dd165b9
BLAKE2b-256 checksum
How to use checksums
779b6275627406baee3f76266a38903c766cb66cbd3e820fe11bef40c92e45b7
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 Oct 6, 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