Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Why Copper
| Built for robots | Built to ship |
|---|---|
| Static by design: task graphs are declared in RON and wired at compile time. | Runs anywhere: Linux, macOS, SBCs, and bare-metal microcontrollers. |
| Realtime first: zero-allocation, data-oriented execution on the hot path. | Deterministic replay: record a run, reproduce it, and inspect it offline. |
| Rust-first: ergonomic task APIs with compile-time guarantees. | Interoperable: connect to ROS 2 through Zenoh and migrate progressively. |
Already flying, driving, swimming, spacefaring, and powering humanoids.
See It Run
These are the same Copper applications used on physical robots, recompiled for the browser. The simulator runs beside a live view of the Copper task graph and latency.
Watch more robots built with Copper in the community showcase, or explore the cross-framework benchmarks.
Build Your First Copper App
Install the latest stable Rust toolchain, then:
In about 30 seconds, you have a typed source → task → sink graph that prints its
first messages and records logs/hello-copper.copper. Start with
copperconfig.ron, src/main.rs, and src/tasks.rs; the generated justfile
also provides helpers for logs, CopperLists, topology (just dag), the exact
generated process schedule (just plan), post-execution timing from the default
Copper log (just plan-log), and replay.
How Copper Fits Together
| Stage | What happens |
|---|---|
| Declare | Define the static task graph in copperconfig.ron. |
| Generate | #[copper_runtime] wires the graph at compile time. |
| Run | Execute deterministically with a zero-allocation hot path. |
| Record | Capture messages, timing, and state in a unified .copper log. |
| Inspect | Replay a recorded run, export its data, and inspect its state. |
The robot is a static thing: Copper turns its declared graph into a purpose-built runtime, then records messages, timing, and state into one replayable log.