Skip to content

Repository files navigation

UnitCompose

UnitCompose architecture

From monolithic algorithms to composable systems

UnitCompose is an embeddable Rust framework for building performance-critical algorithms from typed, testable, and replaceable Units.

Connect Units through named Resources, compose them into configuration-driven DAGs, and prepare storage before execution. Algorithm teams can evolve implementations and compositions independently, while host applications retain control of lifecycle, communication, threading, and deployment. The same binary can load different algorithm compositions without rewriting the host or hard-coding the graph in source code.

UnitCompose is built on lessons from 1,000 days of engineering across 10+ algorithm teams, 1,000+ engineers, and software shipped at million-product scale. It is designed for autonomous driving and embedded intelligence, and for any system that needs predictable performance without sacrificing a decoupled development experience.

UnitCompose targets the layer inside a larger component. A ROS node, service, simulator, offline tool, or another framework owns the Module and decides when to build, run, replace, and destroy it. UnitCompose does not take over the application lifecycle or communication system.

Inspection at a glance

Prepared Module Measured over 1,000 runs
Prepared navigation Module Resource DAG Navigation Module Resource DAG with Unit timing summaries
Interactive navigation episode
Rerun navigation recording with map, paths, Unit timings, and run metrics

View the latest CI-generated reports for all three demos. Each successful main build publishes fresh Module graphs, measured timings, run metrics, and interactive Rerun recordings. Pull requests retain the same report as a downloadable GitHub Actions artifact.

The prepared graph is available before execution; the measured view adds timing from completed runs. Click the Rerun preview to inspect the recorded episode.

Core model

UnitCompose has three public concepts:

  • Unit: one independently testable computation step with declared ports;
  • Resource: one named, typed value connecting Module inputs and Unit outputs;
  • Module: one validated Resource DAG, prepared once and run by its host.

The host registers available Unit implementations. YAML selects the implementations and connections, while Module construction validates the graph and prepares its storage. Inspection, timing, diagnostics, and visualization remain read-only views of that Module.

Explore

License

This project is licensed under the MIT License.

About

From monolithic algorithms to composable systems. Typed Units, config-driven DAGs, and predictable storage for performance-critical software systems..

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages