A real-time robotics runtime — a zero-copy nervous system for robots.
If phones have Android, robots deserve HORUS.
HORUS is a runtime for building robots — the layer that moves sensor data, control commands, and telemetry between the many small programs (nodes) that make up a robot. It is written in Rust, with first-class Python and C++ bindings.
Where conventional middleware serializes and copies every message, HORUS passes them through shared memory by pointer. Node-to-node latency is about 87 ns — roughly 575× faster than ROS 2 on the same zero-copy IPC benchmark — with bounded, real-time behaviour rather than best-effort delivery. The programming model is deliberately familiar: nodes, topics, and services, the way roboticists already think.
| IPC latency | 87 ns — node → node, zero-copy shared memory |
|---|---|
| Throughput | 575× faster than ROS 2 — HORUS IPC benchmark |
| Languages | Rust (core) · Python · C++ |
| License | Apache-2.0 |
| Source | github.com/softmata/horus — 388 ★ · 28 forks |
One installer gives you the CLI, the runtime, and a matching source tree — all from the same release tag, so the binary and the libraries it loads can never drift apart. Then follow the quick-start for your language.
# Install, then scaffold and run your first node $ curl -fsSL https://github.com/softmata/horus/raw/main/install.sh | bash $ horus new my_robot && cd my_robot && horus run # Pin a release. The variable must land in bash's environment, not curl's — # on curl's side nothing reads it and you quietly get the latest tag anyway. $ curl -fsSL https://github.com/softmata/horus/raw/main/install.sh \ | HORUS_VERSION=v0.4.0 bash # Python — same runtime underneath. Keep the floor: the newest release on # PyPI is 0.1.9 — it imports fine, then sees none of a 0.4.x CLI's topics. $ pip install "horus-robotics>=0.4.0"
Rust needs no package step — the scaffold above points Cargo at the source tree the installer cached, and there is no crates.io package to add: the name there belongs to an unrelated crate. C++ builds against that same tree — link libhorus_cpp, include one header.
// my_node.cpp — integrate with an existing C++ stack
#include <horus/horus.hpp>
Full walkthrough: Installation · Rust · Python · C++.
The full documentation is organised into fifteen sections. An index follows.
Start
Language guides
Understand