Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dexcomm-0.4.6-cp310-abi3-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.10+Windows x86-64

dexcomm-0.4.6-cp310-abi3-manylinux_2_34_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ x86-64

dexcomm-0.4.6-cp310-abi3-manylinux_2_34_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ ARM64

dexcomm-0.4.6-cp310-abi3-macosx_11_0_arm64.whl (4.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file dexcomm-0.4.6-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: dexcomm-0.4.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.4 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

Hashes for dexcomm-0.4.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ead9ecb18beeac01b861715e465713be5807a2881d21916899d0a283d7517463
MD5 fcb9ccffbb3939d26e0ab05a135be36c
BLAKE2b-256 8edf77b65c842d5aa2ea377c11dce26a882842c7ba88ae44f8392ab59e36577b

See more details on using hashes here.

File details

Details for the file dexcomm-0.4.6-cp310-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for dexcomm-0.4.6-cp310-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e83b30b48e7c34014a88020413facc4d7e5dae8c6efd987597c2df005d2562de
MD5 fa33144ed0ae8adf0ea0a525bb1b926d
BLAKE2b-256 f13bb4b9bb4337f3b868e657064bbf3e88604b1f5bb251aa088cceb8c609542a

See more details on using hashes here.

File details

Details for the file dexcomm-0.4.6-cp310-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for dexcomm-0.4.6-cp310-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c682dfd8cc95657b37454b03a5263ec80987ff8bf2c911fbe63b1ebb11b09b39
MD5 63d9bf4e6016709a7af791de671c5c99
BLAKE2b-256 67ae0c1f2e3d122abe9e7d96f3eadeca9767e4524add71ec59b43471e1367486

See more details on using hashes here.

File details

Details for the file dexcomm-0.4.6-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexcomm-0.4.6-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9d404c00eedaa243716161a1ba5e5c38b3473f4c313bdc181dbd28b67bede9a
MD5 986bd077a0419161e0b585268ff98413
BLAKE2b-256 d341c7abc1c487a4d9cf306c7feb83eb10aab7964d28c3348322f08e55a6946e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page