Advanced Metal Research
GitHub Contact AMR

For AI agents

On this page
  1. Robot data and downloads
  2. Read the docs as data
  3. The system in brief
  4. Safety rules you must respect
  5. Rules of thumb for code
  6. Where to find things

This page is for coding agents, assistants and retrieval pipelines that read these docs or write code against RosieOS. Everything here is a summary of other pages. When a detail matters, follow the link and read that page.

Robot data and downloads#

The URDF, MuJoCo model, SRDF, STEP, meshes and robot.json of the Rosie 600, 1000 and 1400 are static files with stable URLs. /agents.md is the step-by-step guide to fetching them, with copy-paste curl, Python and JavaScript and a link to every file. /agents.json is the same list as JSON, and /assets/sim/index.json lists every kit file.

  • Plain HTTPS GET or HEAD: no login, no API key, no cookies.
  • Any User-Agent works, including the defaults of Python urllib, requests, Node fetch, Go, curl and wget.
  • CORS is open (Access-Control-Allow-Origin: *) on the data files, so a web page can load the JSON, URDF, STL and GLB files directly.
  • Byte ranges and ETag revalidation work.
  • The URDF and MJCF use relative mesh paths, so they load from their URL or from the unzipped kit.

If your environment cannot reach advancedmetalresearch.com, use the mirror on GitHub, advanced-metal-research/rosie-sim-kits. The same files are at https://raw.githubusercontent.com/advanced-metal-research/rosie-sim-kits/main/sim/..., and its sim/index.json lists them with mirror URLs. Failing that, ask your user to download the kit ZIP and attach it. Every file is inside it.

Read the docs as data#

WhatWhereContents
Site index/llms.txtEvery page with a one-line description, in the llmstxt.org format
RosieOS docs index/docs/llms.txtThe docs section on its own
Full text/docs/llms-full.txt, /llms-full.txtEvery docs page (or the whole site) as one Markdown file
One page as MarkdownAdd .md to the page URL: /docs/concepts/architecture.md, and /docs/index.md for the docs home. A request with Accept: text/markdown gets the same file.The page source, with links made absolute and its source files listed. Each page also has View as Markdown and Copy page controls.
Agent guide/agents.md, /agents.jsonHow to fetch the robot data, and every data file, API spec and guide with its URL
Search index/assets/docs/search.jsonTitle, section, URL, Markdown URL, description, headings and text of every page
rt-control APIOpenAPI 3.1, original contractGenerated from rt-core/protocol/application-v1.schema.json
API catalog/.well-known/api-catalogThe rt-control, offline programming and weld planner HTTP APIs and their OpenAPI files, as an RFC 9727 linkset
Other HTTP APIsOffline programming, weld plannerOpenAPI 3.1, generated from their reference pages
Error codes/docs/data/error-codes.jsonAll 153 rt-control reasons, with meaning, group, HTTP status and callers
NATS/docs/data/nats-subjects.jsonSubjects, streams and the command tables
Robot models/assets/sim/index.jsonURDF, MuJoCo, STEP and robot.json of the Rosie 600, 1000 and 1400, with every file's URL. See Simulate a Rosie robot.

The system in brief#

  • One public control API. Every client drives the robot through rt-control. That includes the pendant, offline programming (OLP), the motion servers and your code. It serves HTTP/JSON on the Unix socket /run/rosie-rt-core/control.sock, and optionally over mutual TLS on 127.0.0.1:8443 for remote clients. Behind it, the 1 kHz real-time core owns the EtherCAT drives. See Architecture.
  • One controller at a time. acquire returns a fence: a session token and a generation, under an expiring lease. Every later command carries that exact fence. Renew before the lease runs out. A second client gets control_already_owned. See Control authority.
  • Three kinds of motion request. Jog (begin_jog, datagrams on jog.sock, end_jog), trajectories (prepare_trajectory, start_trajectory) and programs (prepare_program with a .rdt file, then start_program). The motion paths page says which process owns each path.
  • Clients. The Go SDK, the header-only C++ client, TypeScript contracts (types only, no HTTP client) and the rtctl CLI.
  • Other services. The OLP server on 127.0.0.1:8794 and the weld planner on port 8796. The planner listens on all interfaces by default. Neither has authentication. Every port and socket is listed in Ports and environment.
  • Formats. robot.v4.program.v2 programs, the .weldplan plan request, .rdt dense trajectories, and robot description and configuration files.

Safety rules you must respect#

Read the safety model before you write code that moves hardware. In short:

  • There is no software E-stop. RosieOS contains no safety-rated function. The cell's hardware E-stop and safety chain are the only emergency stop. Stop, Halt, lease expiry and the pendant's hold-to-enable trigger are software functions, and they can fail with the software that runs them.
  • Only planned weld programs are verified. A weld program is admitted at OLP Load only if the weld planner's collision, limit and tracking certificate passes. Jog, moves and Home are checked against joint limits only, not against collisions.
  • Torch outputs are refused everywhere. RosieOS does not switch a welding torch. No seam tracking or sensing is implemented; see Process I/O and sensing.
  • Simulation does not qualify hardware.
  • Claim only what the safety model allows. It gives the exact sentence you may use about program verification.

Rules of thumb for code#

  • The server decodes strictly. Unknown fields, duplicate fields and trailing data are refused.
  • Put a request_id on JSON commands so that you can retry them safely, and use a fresh one for every logical attempt. /v1/program uploads have no deduplication: never replay an uncertain upload. See idempotent retries.
  • Refusals are HTTP 409 with a reason in error (413 for an oversized body). Match on the leading label. Treat an unknown label, a malformed reply or a transport failure as an unknown outcome. Stop producing motion, send an authenticated stop if you can, and reconcile Status before you acquire again. See Error codes.
  • A 200 reply for motion acknowledges admission, not physical completion. Follow events and telemetry to see what happened.
  • Keep uint64 values exact. In TypeScript they exceed the safe integer range.

Where to find things#

TaskPage
Run a whole cell on one machineRun everything in simulation
Load a Rosie robot into PyBullet, MuJoCo, ROS 2 or CADSimulate a Rosie robot
First program against the coreYour first motion
Every rt-control operation, type and reasonrt-control HTTP API
Plan and run a weld from CADProgram a weld from CAD, Connect to a cell
Mount a tool or the robotMechanical interfaces
Repository layout and generated filesRepository layout