Crate Overview
| Crate | Type | Description |
|---|---|---|
roz-core | Library | Domain types, channel manifests, error types. No IO. Everything else depends on this. |
roz-agent | Library | Agent runtime: LLM abstraction, tool dispatch, OODA loop, safety guards, constitution. |
roz-copper | Library | Copper-rs runtime integration. On-robot task graph execution at 100Hz. |
roz-local | Library | Local agent loop, WASM compilation, sim container management, MCP client. |
roz-cli | Binary | Interactive TUI and command-line interface. Entry point for roz commands. |
roz-safety | Binary | Safety daemon: heartbeat tracker, e-stop monitoring, watchdog process. |
roz-nats | Library | NATS client wrappers, subject definitions, cloud messaging. |
roz-zenoh | Library | Zenoh client for local peer-to-peer comms between robot processes. |
roz-test | Library | Shared test utilities, fixtures, and helpers used across crate tests. |
roz-db | Library | sqlx migrations, queries, row-level security (RLS) on every table. |
roz-server | Binary | axum API server. REST + gRPC multiplexed on a single port. |
roz-worker | Binary | Edge worker binary. Connects via NATS, runs the OODA loop on-robot. |
Zenoh vs NATS
roz uses two messaging systems for different scopes:- Zenoh handles local, peer-to-peer communication between processes on the same robot or local network. It provides low-latency pub/sub for sensor data, control commands, and state synchronization without requiring a broker.
- NATS handles cloud communication between the API server, edge workers, and the safety daemon. It provides reliable messaging with subject-based routing across network boundaries.
Data Flow
Dependency Graph
The crate dependency structure keepsroz-core at the root with no IO dependencies. All other crates depend on roz-core for shared types.
roz-corehas zero IO dependencies. It defines types only.unsafeis denied workspace-wide. This is a safety-critical robotics platform.roz-localdepends onroz-agentandroz-zenohbut not onroz-serverorroz-db— it runs entirely on the local machine.roz-serverdepends onroz-dbandroz-agentbut not onroz-local— it runs in the cloud.