Skip to main content

alt text

License Python 3.11+

BabyROS

BabyROS is a mini version of ROS built on top of the Zenoh protocol. It provides a familiar pub/sub/client/server architecture for robotics and distributed systems without the heavy overhead of a full ROS installation.

Features

  • Powered by Zenoh: Ultra-low latency and high-throughput communication.
  • Minimalist: No complex middleware setup; just Python and Zenoh.
  • Familiar API: Designed for developers transitioning from ROS/ROS2.

Getting Started

1. Clone the Repository

git clone https://github.com/telekinesis-ai/babyros

Change directory

cd babyros

2. Environment Setup (Recommended)

We recommend using Miniconda or Anaconda to manage your environment:

conda create -n babyros python=3.11

Activate your environment:

conda activate babyros

You can deactivate your environment:

conda deactivate babyros

3. Installation

Install the package in editable mode for development:

pip install -e .

(For Inter-Device Communication) Installation

Install the Zenoh router. Documentation available in: Zenoh Docs

Usage Example

To see BabyROS in action, you can run the provided example scripts.

Publisher

Open a terminal and run:

python examples/publisher_example.py

When testing is done, kill terminal with Ctrl+C.

Subscriber

In a second terminal (with the babyros environment active), run:

python examples/subscriber_example.py

When testing is done, kill terminal with Ctrl+C.

Open Issues

  • Datatype information
  • Safety checks

Zenoh Config Comparison Between Zenoh, BabyROS, and RMW Zenoh

Key BabyROS Zenoh RMW Zenoh
adminspace.enabled False False True
connect.endpoints [] [] ['tcp/localhost:7447']
connect.exit_on_failure None None —
connect.exit_on_failure.client — — True
connect.exit_on_failure.peer — — False
connect.exit_on_failure.router — — False
connect.retry None None —
connect.retry.period_increase_factor — — 2.0
connect.retry.period_init_ms — — 1000
connect.retry.period_max_ms — — 4000
connect.timeout_ms None None —
connect.timeout_ms.client — — 0
connect.timeout_ms.peer — — -1
connect.timeout_ms.router — — -1
listen.endpoints — — ['tcp/localhost:0']
listen.endpoints.peer ['tcp/[::]:0'] ['tcp/[::]:0'] —
listen.endpoints.router ['tcp/[::]:7447'] ['tcp/[::]:7447'] —
listen.exit_on_failure None None True
listen.retry None None —
listen.retry.period_increase_factor — — 2.0
listen.retry.period_init_ms — — 1000
listen.retry.period_max_ms — — 4000
listen.timeout_ms None None 0
mode None None peer
open.return_conditions.connect_scouted None None True
open.return_conditions.declares None None True
queries_default_timeout None None 600000
routing.interests.timeout None None 10000
routing.peer.mode None None peer_to_peer
routing.router.peers_failover_brokering None None True
scouting.delay None None 500
scouting.gossip.autoconnect None None —
scouting.gossip.autoconnect.peer — — ['router', 'peer']
scouting.gossip.autoconnect.router — — []
scouting.gossip.autoconnect_strategy None None —
scouting.gossip.autoconnect_strategy.peer.to_peer — — greater-zid
scouting.gossip.autoconnect_strategy.peer.to_router — — always
scouting.gossip.enabled None None True
scouting.gossip.multihop None None False
scouting.gossip.target None None —
scouting.gossip.target.peer — — ['router']
scouting.gossip.target.router — — ['router', 'peer']
scouting.multicast.address None None 224.0.0.224:7446
scouting.multicast.autoconnect None None —
scouting.multicast.autoconnect.client — — ['router']
scouting.multicast.autoconnect.peer — — ['router', 'peer']
scouting.multicast.autoconnect.router — — []
scouting.multicast.autoconnect_strategy None None —
scouting.multicast.autoconnect_strategy.peer.to_peer — — greater-zid
scouting.multicast.autoconnect_strategy.peer.to_router — — always
scouting.multicast.enabled None None False
scouting.multicast.interface None None auto
scouting.multicast.listen None None True
scouting.multicast.ttl None None 1
scouting.timeout None None 3000
timestamping.drop_future_timestamp None None False
timestamping.enabled None None —
timestamping.enabled.client — — True
timestamping.enabled.peer — — True
timestamping.enabled.router — — True
transport.link.tls.close_link_on_expiration None None False
transport.link.tls.enable_mtls None None False
transport.link.tls.verify_name_on_connect None None True
transport.link.tx.keep_alive 4 4 2
transport.link.tx.lease 10000 10000 60000
transport.link.tx.queue.congestion_control.block.wait_before_close 5000000 5000000 60000000
transport.shared_memory.enabled True True False
transport.shared_memory.transport_optimization.message_size_threshold 3072 3072 512
transport.shared_memory.transport_optimization.pool_size 16777216 16777216 50331648
transport.unicast.accept_pending 100 100 10000
transport.unicast.accept_timeout 10000 10000 60000
transport.unicast.max_sessions 1000 1000 10000
transport.unicast.open_timeout 10000 10000 60000

License

Distributed under the Apache-2.0 License. See LICENSE for more information.

Metadata

Release files for babyros 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for babyros 0.1.7
File Size Uploaded
babyros-0.1.7.tar.gz 22.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for babyros 0.1.7
File Interpreter ABI Platform
babyros-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 42.3 kB

Release files / babyros-0.1.7.tar.gz

Download URL babyros-0.1.7.tar.gz
Size 22.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0f331ce7cefef1676a2e7e7c02e9f55cf5373d89768b4d58c701f31652d9bcdc
BLAKE2b-256 checksum
How to use checksums
45d102a194c5ba96b049c90053f7d55a82d49678800bc46de4ccde79905f952c
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 Sep 3, 2026.

Transparency log

Release files / babyros-0.1.7-py3-none-any.whl

Download URL babyros-0.1.7-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c51e60d35e5b9a0bccac3f366a2717a7d65b36fddd25d92796501117b9f7d2a9
BLAKE2b-256 checksum
How to use checksums
e1e66b99118d9f72f63355a1bf0131a31ee365268b1a80a6032a80ec222ecaef
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 Sep 3, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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