v0.4.3 · 46 crates published

Real-time IPC and execution, in Rust.

A zero-copy executor and connector framework built on iceoryx2. EtherCAT, CAN/J1939, Zenoh, and MQTT out of the box.

What is taktora?

A layered Rust framework for building real-time systems on top of iceoryx2. Two pieces: an executor that runs items triggered by IPC, intervals, and request/response activity, and a connector framework that exposes typed channels with the same plugin surface for every fieldbus.

EtherCAT, Zenoh, CAN, J1939, MQTT, and a server-side MVVM UI connector ship as reference connectors — six connectors, one seam. Add your own against the same trait.

Around that core: build-time codegen that turns EtherCAT device descriptions and CAN DBC databases into typed Rust, a no_std motion core for CiA 402 drives, and an SOVD-aligned diagnostics gateway that serves the running system's health and faults over REST.

Three pillars

Zero-copy IPC

Real-time inter-process messaging that never touches the heap on the hot path.

Built on iceoryx2. Payloads ride a typed envelope through shared memory; sender and receiver share the same bytes — no serialization, no allocation, no copy.

→ Deep dive

Deterministic execution

An executor designed for known timing — sequential chains, parallel DAGs, signal/slot, lifecycle observability.

Items triggered by IPC, intervals, or request/response activity. Pin to cores, tune thread attributes, observe every state transition. Built for control loops that have to land within their cycle.

→ Deep dive

Connector framework

One plugin surface, every protocol. EtherCAT, Zenoh, CAN, J1939, and MQTT ship as reference implementations.

Typed channels with codec-pluggable payloads — JSON, MessagePack, or fixed-width binary — plus uniform health and reconnect semantics. Same ChannelWriter / ChannelReader types every connector reuses; protocol-specific connectors plug into an Executor through one well-defined seam. Even the MVVM UI connector rides it.

→ Deep dive

How it fits together

Three layers: the executor owns timing, connectors own protocols, iceoryx2 owns transport.

taktora architecture overview Three horizontal layers. Top: Executor (item scheduling, channels, services, signal/slot). Middle: Connector Host with six protocol connectors — EtherCAT, Zenoh, CAN, J1939, MQTT, and UI. Bottom: iceoryx2 zero-copy transport. Arrows flow downward through every connector to the transport. Executor Items · chains · graphs · signal/slot · observer Connector framework Typed channels · codec · health · reconnect Transport iceoryx2 zero-copy shared memory EtherCAT Zenoh CAN / SocketCAN J1939 MQTT UI (MVVM)
Executor schedules; connectors translate; iceoryx2 carries.

Where we are today

Honest about the maturity bar. Built in the open.

Versionv0.4.3
Crates published46
LicenseMIT / Apache-2.0
ABINot stable

v0.4.3 means the API can move under your feet between minor releases. We're transparent about it; we're not yet a production-ready dependency.

Where it fits

Robotics control loops

Closed-loop control with deterministic IPC between perception, planning, and actuation processes — without paying the cost of ROS-style transport overhead.

Robotics stacks often pay 10×–100× their compute budget in message serialization. taktora moves the data without copying or allocating, so the control loop runs at the rate the hardware demands, not the rate the middleware tolerates.

iceoryx2 ↗

Industrial automation

EtherCAT SubDevice integration plus CAN, J1939, and MQTT connectors out of the box. Same connector seam for all of them.

Drive a SubDevice’s process data through a strongly-typed connector. CAN frames flow through the same ChannelWriter / ChannelReader API, and a J1939 connector layers PGN routing, BAM/RTS-CTS/ETP transport, and address claiming on top of it. Device descriptions compile to typed Rust at build time — EtherCAT ESI XML into device drivers, CAN DBC databases into bit-packed message types — no runtime parsing. A no_std motion core generates cyclic setpoints for CiA 402 servo drives in CSP mode, and the MQTT connector publishes telemetry northbound (QoS 0/1, retained).

ETG (EtherCAT Technology Group) ↗

Distributed real-time systems

Zenoh-backed pub/sub and query/reply for multi-host coordination, with timeout-correct sealed queries and peer-driven health.

When the system spans hosts, the executor still owns the timing — Zenoh handles the wire. Same connector seam, same health model, same observability hooks.

Zenoh by ZettaScale ↗

Runtime diagnostics (SOVD)

An SOVD-aligned diagnostics gateway serves the running system's entities, faults, and health over REST — fed off the control path.

taktora-medkit maps connector health transitions into SOVD components and DTCs with freeze-frames, and watches executor liveness and timing without touching the hot path. Entity tree, fault lists, worst-wins health rollup, operations, exclusive-access locks, and SSE event triggers — served over a ros2_medkit-compatible REST contract.

ASAM SOVD ↗

Partner / Funding

Looking for customers, collaborators, and research partners.

taktora is research-stage open source — technically real (46 crates published, MIT / Apache-2.0), commercially open. We're looking for industrial pilots in real-time robotics or fieldbus integration, EU consortium partners for Horizon-scale projects, and engineers who want to co-shape the architecture. Reach out if you can use what's here today, want to fund what comes next, or want to collaborate on the open-source roadmap.

info@dahlke-engineering.com

Behind taktora

I'm Patrick Dahlke — a principal engineer based in Germany. Middleware and network / transport protocols are where I've put in the hours: I co-maintain the iceoryx2 C# bindings alongside the core iceoryx2 team, and I'm the developer behind Adsify and OpcSharp — the latter with over 20,000 NuGet downloads.

taktora is the next experiment in that lineage: a Rust-native execution and connector framework that replaces the heavyweight middleware automation and robotics teams are stuck with. The goal: break out of the legacy, slow PLC development process — into something software-native. Open-source, built in the open, actively maintained.