Skip to content

KarthikSriramGit/Vermilion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vermilion

Vermilion is an open-source Rust robotics middleware project. The goal is a graph-driven runtime with zero-copy local communication, automatic network routing, deterministic scheduling, typed messages, and CLI-first workflows.

This repository now contains the core runtime foundation:

  • vermilion-core: graph definitions, deterministic trigger metadata, a topic registry, and an in-memory transport used for tests and early development.
  • vermilion-cli: command-line entry point for workspace, node, graph, topic, and TUI workflows.
  • vermilion-graph: .vrml/.crln-style graph parsing, validation, and deterministic local execution planning.
  • vermilion-macros: initial #[node] and #[out] procedural macro entry points.
  • vermilion-msg: ROS2-compatible .msg parsing, schema hashing, fixed-size detection, and Rust code generation scaffolding.
  • vermilion-transport: local-first hybrid transport with latest-message network semantics.
  • vermilion-transport-iox2: iceoryx2-facing adapter boundary for local shared-memory transport.
  • vermilion-transport-zenoh: zenoh-facing adapter boundary for network transport.
  • vermilion-log: zero-copy log records, replay cursors, topic metrics, and JSON observability helpers.

Future milestones replace the deterministic adapter internals with production iceoryx2/zenoh sessions, expand macro code generation, add a richer scheduler, and build visualization.

Quick Start

cargo test --workspace
cargo run -p vermilion-cli -- --help
cargo run -p vermilion-cli -- workspace create demo
cargo run -p vermilion-transport --example topic_manager

Run the sample graph:

mkdir graphs
copy examples\perception.vrml graphs\perception.vrml
cargo run -p vermilion-cli -- graph run perception

Design Target

The intended developer model is:

  1. Create a workspace.
  2. Create Rust node crates.
  3. Declare typed inputs and outputs.
  4. Wire nodes in graph files.
  5. Run the graph.
  6. Inspect topics, logs, and replay behavior from the CLI.

The transport model is local-first. Local subscribers read Vermilion wire-format bytes from a shared sample. When the topic manager discovers a remote topic request, it also publishes a Protobuf envelope over the network path. Production backend crates expose feature-gated iceoryx2 and zenoh integrations.

Release Checks

$env:LIBCLANG_PATH = "C:\Program Files\LLVM\bin"
$env:Path = "C:\Program Files\LLVM\bin;$env:USERPROFILE\.cargo\bin;$env:Path"
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo check --workspace --all-features
cargo build --workspace --release

About

Versatile Middleware for Lightweight I/O Networks (Name in the works)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages