SLM Mesh includes a zero-dependency Python client that wraps the broker HTTP API.
pip install slm-meshfrom slm_mesh import SLMMeshClient
client = SLMMeshClient()
# Register as a peer
result = client.register(pid=12345, project_path="/my/project")
my_id = result["peerId"]
# List other peers
peers = client.peers()
for peer in peers:
print(f"{peer.name} ({peer.agent_type}) — {peer.summary}")
# Send a message
client.send(my_id, peers[0].id, "Auth module refactored")
# Read messages
messages = client.inbox(my_id)
for msg in messages:
print(f"From {msg.from_peer}: {msg.payload}")
# Shared state
client.state_set("db_version", "42", my_id)
value = client.state_get("db_version")
# File locking
client.lock("/src/auth.ts", my_id, reason="refactoring")
locks = client.locks()
client.unlock("/src/auth.ts", my_id)
# Unregister when done
client.unregister(my_id)| Parameter | Type | Default | Description |
|---|---|---|---|
host |
str | "127.0.0.1" |
Broker host |
port |
int | 7899 |
Broker port |
token_path |
str | ~/.slm-mesh/broker.token |
Path to auth token |
| Method | Description |
|---|---|
health() |
Check broker health |
status() |
Get broker stats (returns BrokerStatus) |
register(pid, project_path, ...) |
Register as a peer |
unregister(peer_id) |
Deregister |
heartbeat(peer_id) |
Send heartbeat |
set_summary(peer_id, summary) |
Update your summary |
peers(scope) |
List peers (returns list[Peer]) |
send(from_id, to_id, payload) |
Send direct message |
broadcast(from_id, payload) |
Broadcast to all |
inbox(peer_id, msg_filter, limit) |
Read messages (returns list[Message]) |
state_get(key, namespace) |
Get shared state |
state_set(key, value, peer_id) |
Set shared state |
state_list(namespace) |
List all state entries |
state_delete(key, namespace) |
Delete state entry |
lock(file_path, peer_id, reason, ttl) |
Lock a file |
unlock(file_path, peer_id) |
Unlock a file |
locks() |
List all locks |
events(types, since, limit) |
Read events |
All response objects are frozen dataclasses:
Peer— id, name, pid, projectPath, agentType, summary, startedAt, statusMessage— id, fromPeer, toPeer, type, payload, createdAt, readAt, deliveredStateEntry— key, namespace, value, updatedBy, updatedAtLock— filePath, lockedBy, lockedAt, expiresAt, reasonMeshEvent— id, type, payload, emittedBy, createdAtBrokerStatus— status, version, uptime, pid, port, peers, messages, locks, events
- Python 3.10+
- Zero external dependencies (stdlib only)
- The Node.js broker must be running (auto-started by any MCP connection or
slm-mesh start)