Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time
Jan 28, 2022
Jan 18, 2022
Jan 9, 2022
Jan 25, 2022
Jan 25, 2022
Jan 9, 2022
Jan 14, 2022
Jan 20, 2022
Jan 17, 2022

ELBUS - Rust-native IPC broker

What is ELBUS

ELBUS is a rust-native IPC broker, written in Rust/Tokio, inspired by zeromq and nanomsg. ELBUS is fast, flexible and very easy to use.

The library can be embedded in any Rust project or be used as a standalone server.

NOTE: ELBUS is not officially released yet and SDK can be changed at any time without any backward compatibility. ELBUS (stands actually for "EVA ICS Local Bus") is the key component of EVA ICS v4, which is going to be released in 2022-2023.


Available at

Inter-process communication

The following communication patterns are supported out-of-the-box:

  • one-to-one messages
  • one-to-many messages
  • pub/sub

The following channels are supported:

  • async channels between threads/futures (Rust only)
  • UNIX sockets (local machine)
  • TCP sockets

In addition to Rust, ELBUS has also bindings for the following languages:

Rust crate:

Client registration

A client should register with a name "group.subgroup.client" (subgroups are optional). The client's name can not start with dot (".", reserved for internal broker clients) if registered via IPC.

The client's name must be unique, otherwise the broker refuses the registration.


Broadcast messages are sent to multiple clients at once. Use "?" for any part of the path, "*" as the ending for wildcards. E.g.:

"?.test.*" - the message is be sent to clients "g1.test.client1", "g1.test.subgroup.client2" etc.


Use MQTT-format for topics: "+" for any part of the path, "#" as the ending for wildcards. E.g. a client, subscribed to "+/topic/#" receives publications sent to "x/topic/event", "x/topic/sub/event" etc.

RPC layer

An optional included RPC layer for one-to-one messaging can be used. The layer is similar to JSON RPC but is optimized for byte communications.

Security and reliability model

ELBUS has ZERO security model in favor of simplicity and speed. Also, ELBUS is not designed to work via unstable connections, all clients should be connected either from the local machine or using high-speed reliable local network communications.

If you need a pub/sub server for a wide area network, try PSRT.


See examples folder.

Build a stand-alone server

cargo build --features server,rpc

The "rpc" feature is optional. When enabled for the server, it allows to initialize the default broker RPC API, spawn fifo servers, send broker announcements etc.

Some numbers


CPU: i7-7700HQ

Broker: 4 workers, clients: 8, payload size: 100 bytes, local IPC (single unix socket), totals:

stage iters/s 126_824 64_694
rpc.call0 178_505 1_667_131
send+recv.qos.processed 147_812 2_748_870
send.qos.processed 183_795


According to benchmarks, ELBUS is usually faster than NATS in typical common tasks (with no QoS), but to avoid holy wars we do not provide any numbers. Please do benchmark by yourself.

About the authors

Bohemia Automation / Altertech is a group of companies with 15+ years of experience in the enterprise automation and industrial IoT. Our setups include power plants, factories and urban infrastructure. Largest of them have 1M+ sensors and controlled devices and the bar raises upper and upper every day.


Rust-native IPC broker







No releases published


No packages published