Building OpenCastor
Declarative robotics
starts with
a manifest.
ROBOT.md is to a robot what CLAUDE.md is to a codebase.
One file — YAML frontmatter + markdown prose — so Claude Code, Claude Desktop, Cursor, Zed, Gemini CLI, or any MCP-aware
agent can safely operate the robot. I'm a one-person team building the spec, the runtimes, the surfaces, and the public
registry — almost entirely with Claude Code.
Try it on your robot
pip install robot-md robot-md-mcp
robot-md init --yes
The Ecosystem
Eleven repos. One stack.
A protocol at the bottom (RCAN), a manifest in the middle (robot-md), MCP and Agent SDK surfaces on top, a public registry on the side. Each layer is its own repo, its own release cadence, its own clear concern.
Method
Built with Claude Code
The point isn't that an LLM helped me write code. The point is that a one-person team — me — was able to ship and maintain a multi-repo ecosystem because Claude Code's long-context behavior made the cascade tractable.
A spec change in rcan-spec ripples through
rcan-py and
rcan-ts; a manifest schema change ripples through
robot-md, every consumer, and the registry. Claude Code holds
the context that would otherwise be split across a team.
The Anthropic-native bias of the surfaces — MCP server, Claude Code plugin marketplace, Agent SDK on the pendant and dispatcher, Claude as the exclusive eval model in autoresearch — is on purpose. Every Anthropic primitive gets a first-class surface.
By the numbers
April 2026 · single-person team
Hardware in the loop: a SO-ARM101 arm called bob, registered as RRN-000000000001.
Every shipped feature is exercised against real servos before merge.
Earlier work
Before robot-md
Computer vision, accessibility, and edge AI projects that informed the choices in OpenCastor.
LiveCaptionsXR
Spatial captions for XR collaboration. On-device speech recognition with anchored transcripts so deaf/HoH participants can follow conversations inside headsets.
Project page →BicycleRadar
Predictive collision avoidance for cyclists. Sensor fusion + ML produced 3.2-second warning windows at 96% prediction accuracy.
Project page →Dronevade
Edge computer-vision platform for drone detection. Custom YOLO models, RF + thermal fusion, designed for wildfire responders and utilities.
Project page →HeatCompass
Personal heat-stress monitoring for outdoor workers and athletes. Edge inference on a wrist-worn device.
Project page →Latest writing
From the build log
OpenCastor: a year of building 'declarative robotics' with Claude Code
An introduction to the OpenCastor ecosystem — a single ROBOT.md manifest, runtimes in Python and TypeScript, an MCP server, a Claude Code plugin marketplace, a public registry with EU AI Act-aligned compliance endpoints, and the consumer-tier UX I've been focused on lately. Built almost entirely with Claude Code, on a SO-ARM101 arm I call bob.
Shipped: robot-md on the Claude Code plugin marketplace
A two-command install that wires your robot's ROBOT.md into any Claude Code session as structured MCP resources. Also: what RCAN and the Robot Registry Foundation do, and why this plugin belongs in Anthropic's hosted MCP catalog.
robot-md-dispatcher: when 'expose MCP remotely' is the wrong answer
External systems need to drive robots too. The obvious move is to put robot-md-mcp behind an HTTPS frontdoor. It works. It's the wrong shape. Here's the right one — a BYOK Claude Agent SDK dispatcher that runs on the robot host.