Advanced Metal Research
GitHub Contact AMR

Repository layout

On this page
  1. Current components
  2. Inside rt-core/
  3. Generated code
  4. Legacy folders
  5. Things that are not in this repository

RosieOS is one repository with a folder per component. There is no root build: each component builds and tests on its own with its own tool (make, go, npm, pixi). Many folders are versioned (v1, v4, v5). Only some versions are current. This page tells you which.

git clone https://github.com/advanced-metal-research/RosieOS.git
cd RosieOS

Current components#

FolderLanguageWhat it isDocs
rt-core/C++17, GoThe real-time core (rosie-rt-core, rosie-rt-core-sim), the public control API rt-control, the Go SDK, C++ and TypeScript clients, rtctl, host install scripts and all rt-core configurationReal-time core, rt-control HTTP API
robot_description/data, Go, PythonOne directory per robot model, the Go module rosieos/robotdesc and the manifest toolRobot description
motion-server/v1/C++17The Cartesian motion server robot-v4-cartesiandCartesian motion server
motion-server/joint-trajectory/v1/C++17The dense trajectory daemonDense trajectory daemon
offline-programming/v1/Go; ui/ TypeScriptThe offline programming (OLP) server and browser appOLP HTTP API
weld_planner/v1/Python (pixi)Seam worker, CUDA weld motion planner and verifier, weldplan contractsWeld planner HTTP API
tesseract/v1/, cadquery/v1/Python (pixi)Planning and CAD environments used by the motion server and OLPInstall the toolchain
steamdeck/real/v5/C++/QtThe Steam Deck teach pendant. Not qualified for real motion.Program from the pendant
steamdeck/real/v4/Go, C++The native deploy module (go run .) and the v4 rollback pendant—
steamdeck/virtual/TypeScript, GoThe browser pendant and its bridge, for simulation onlyVirtual pendant
urdf/v1/TypeScriptURDF tooling; sphere_tool/ authors collision spheresAdd a robot model
dev-stack.shBashStarts the local simulated stackRun everything in simulation
quality/NodeLint, format and report runnersCode style and quality
tools/robot-stack-release/, releases/Python, JSONRelease bundling and release recordsReleasing
.github/workflows/YAMLCIBuilding and testing

Also in the tree and installed alongside a cell, but not documented here: daemon/v1 (the mesh daemon and program catalogue), nats/v1, mujoco-sim/v1 (an experimental physics model), preflight/ and coordination/v1 (internal tooling).

Inside rt-core/#

PathHolds
src/main.cpp, engine/, include/The cyclic core. Header-only engine.
cmd/rt-control/, adapters/rosie/control/rt-control and the public API implementation.
ipcclient/The Go side of the private core IPC.
sdk/control/The public Go SDK.
clients/cpp/, clients/ts/Header-only C++ client; TypeScript types and telemetry decoders.
protocol/The two contracts: control.json (private IPC) and application-v1.schema.json (public API).
config/drives/, machines/, cells/, cell-io/ and templates/.
host/Install scripts and systemd units.
tools/rtctl, benchdrive, natspublisher, the generators, packaging and rdtcheck.
tests/, simfixture/C++ policy tests and the Go simulation fixture.

Generated code#

Some files are generated from a contract. Edit the contract and regenerate; never edit the output. make check-protocol and make check-api fail on drift, and both run in make test.

ContractGeneratorOutputs
rt-core/protocol/control.jsonmake -C rt-core generate-protocol (tools/protocolgen)ipcclient/protocol_generated.go, clients/cpp/include/rosie/protocol_generated.hpp (and the include/protocol_generated.hpp shim), clients/ts/rt_protocol_generated.ts
rt-core/protocol/application-v1.schema.jsonmake -C rt-core generate-api (tools/apigen)adapters/rosie/control/api_generated.go, clients/cpp/include/rosie/rt_control_api_generated.hpp, clients/ts/rt_control_api_generated.ts

The generators compare the TypeScript output against goldens using Node 22.13.1. They look for it at ~/.rosie/node-22.13.1/bin/node or in NODE.

Legacy folders#

These are earlier generations. No current code references them. Do not build on them.

FolderWhat it was
robot/v1 to robot/v10Earlier robot CLIs, stacks and third-party arm scaffolds
daemon/v2An earlier mesh daemon
urdf/v2 to urdf/v5Earlier CAD-to-URDF experiments
steamdeck/real/v1 to v3Earlier pendant demos
rt-core/docs/history/, rt-core/docs/evidence/Dated design and run records

The retired v4 real-time core, its NATS command bridge and the OLP's connected-execution path over NATS are also legacy. OLP keeps the last behind flags that are off by default.

Things that are not in this repository#

  • The rosie CLI. Many READMEs show ./rosie.sh …, .\rosie.ps1 … or rosie … v1 …. That tool lives in an internal repository and those commands do not work from a clone. Use the per-component commands in Building and testing.
  • A root go.mod, go.work or build dispatcher. Go modules are per component: rt-core/go.mod (rosieos/rt-core), robot_description/go/go.mod (rosieos/robotdesc), and one each in offline-programming/v1, steamdeck/real/v4 and steamdeck/virtual. rt-core reaches robot_description/go through a replace directive.
  • Toolchain management. Install Go, Node, pixi, uv and a C++17 compiler yourself. See Install the toolchain.