Accelerated communication library using Zenoh for robotics and AI
Project description
DexComm - High-Performance Communication Library
High-efficiency pub/sub and RPC for robotics and AI. Zero configuration required.
Installation
System Dependencies
Linux (Ubuntu/Debian):
sudo apt-get update
sudo apt-get install ffmpeg libjpeg-turbo8 -y
macOS:
brew install ffmpeg libjpeg-turbo
Install
pip install dexcomm
Platform Support
- Python: 3.10+
- Linux: x86_64, aarch64
- macOS: x86_64, arm64 (Apple Silicon)
Quick Start
Raw API (Simplest)
from dexcomm import Publisher, Subscriber
from dexcomm.codecs import PickleDataCodec
# Publisher
pub = Publisher("sensor/temperature", encoder=PickleDataCodec.encode)
pub.publish({"value": 25.5, "unit": "celsius"})
# Subscriber
sub = Subscriber("sensor/temperature",
decoder=PickleDataCodec.decode,
callback=lambda msg: print(f"Received: {msg}"))
Node Pattern (ROS-like)
from dexcomm import Node
from dexcomm.codecs import PickleDataCodec
class RobotController:
def __init__(self):
self.node = Node("controller", namespace="robot1")
self.cmd_pub = self.node.create_publisher("cmd_vel", encoder=PickleDataCodec.encode)
self.node.create_subscriber("odometry", self.on_odometry, decoder=PickleDataCodec.decode)
def on_odometry(self, msg):
self.cmd_pub.publish({"linear": 0.5, "angular": 0.0})
robot = RobotController()
input("Press Enter to stop...\n")
Manager Pattern (Dynamic Topics)
from dexcomm import SubscriberManager
from dexcomm.codecs import PickleDataCodec
manager = SubscriberManager()
# Add/remove topics at runtime
manager.add("sensors/lidar", callback=lambda msg: print(msg), decoder=PickleDataCodec.decode)
manager.add("sensors/imu", callback=lambda msg: print(msg), decoder=PickleDataCodec.decode)
manager.remove("sensors/lidar")
Services (RPC)
from dexcomm import Service, ServiceClient
from dexcomm.codecs import PickleDataCodec
# Server
service = Service("math/add",
lambda req: {"sum": req["a"] + req["b"]},
request_decoder=PickleDataCodec.decode,
response_encoder=PickleDataCodec.encode)
# Client
client = ServiceClient("math/add",
request_encoder=PickleDataCodec.encode,
response_decoder=PickleDataCodec.decode)
result = client.call({"a": 5, "b": 3})
print(result) # {"sum": 8}
Remote Robot Connection
Connect directly to a remote robot with a single environment variable:
# Port defaults to 7447 if omitted:
export ROBOT_IP=192.168.50.20
# Or with explicit port:
export ROBOT_IP=192.168.50.20:7447
When ROBOT_IP is set, dexcomm switches to client mode and connects directly to the specified address. Port 7447 is used by default if not specified.
License
AGPL-3.0 - see the LICENSE file for details.
Copyright (c) 2026 Dexmate. All rights reserved.
For licensing inquiries: contact@dexmate.ai
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dexcomm_video-0.4.19-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: dexcomm_video-0.4.19-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 6.5 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
108d16fdd65fe4ce574cebaac731823dfb78b1df30be0d0de59e660c7686b997
|
|
| MD5 |
a8ce1bc7b208f16764966ee61d5e4d17
|
|
| BLAKE2b-256 |
a0d29318e86cef50255f7240882c146cf1b552005ca93a8f741710392c429b2c
|
File details
Details for the file dexcomm_video-0.4.19-cp310-abi3-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: dexcomm_video-0.4.19-cp310-abi3-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 21.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb9326beca48c5bfbb055d1f5d72448d209d4551c3568e3302180444365514cc
|
|
| MD5 |
4058d306e91dedbe1876a64c9017dcc0
|
|
| BLAKE2b-256 |
927ef950902071c4eb1c9ef04156073f480b38da55310d173015756ed8004af1
|
File details
Details for the file dexcomm_video-0.4.19-cp310-abi3-manylinux_2_35_aarch64.whl.
File metadata
- Download URL: dexcomm_video-0.4.19-cp310-abi3-manylinux_2_35_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.10+, manylinux: glibc 2.35+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
319bb7f7cfa15ccb7a035b720e516fb5ce7cbb77114eacb29c65a5716e27e1cb
|
|
| MD5 |
79c55639740883986f74595863611117
|
|
| BLAKE2b-256 |
9688891938bc468172ad17229f485eb25ccc7c9b5d575cd99862fc58919ae8f7
|
File details
Details for the file dexcomm_video-0.4.19-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: dexcomm_video-0.4.19-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 16.1 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37375bae1399f571b261f58d3abf072bae42d11b49c8c5bf5c50d34fa466467d
|
|
| MD5 |
5da312ce7c242eddbe25bab179d10aa7
|
|
| BLAKE2b-256 |
3454abd8b09b2dcf5f5cd20b28d3c74676d4a7e945b40bcf83eac44c1ea8aa5b
|