Skip to main content

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
Sacramento, CA · deaf engineer · accessibility-first by default
Craig Merry — Robotics & AI Engineer

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

1,083
Commits across the ecosystem this month
67
GitHub releases shipped in 30 days
~1.98k
Tests across robot-md, rcan-py, rcan-ts (1,100 + 288 + 593)
11
Active ecosystem repos · 5 EU AI Act endpoints live

Hardware in the loop: a SO-ARM101 arm called bob, registered as RRN-000000000001. Every shipped feature is exercised against real servos before merge.

Read the build log →

Earlier work

Before robot-md

Computer vision, accessibility, and edge AI projects that informed the choices in OpenCastor.

Accessibility · XR

LiveCaptionsXR

Spatial captions for XR collaboration. On-device speech recognition with anchored transcripts so deaf/HoH participants can follow conversations inside headsets.

Project page →
Computer Vision

BicycleRadar

Predictive collision avoidance for cyclists. Sensor fusion + ML produced 3.2-second warning windows at 96% prediction accuracy.

Project page →
Edge AI

Dronevade

Edge computer-vision platform for drone detection. Custom YOLO models, RF + thermal fusion, designed for wildfire responders and utilities.

Project page →
Safety · Wearable

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

2026-05-25

Heat Protein Lab is live — what eight Antigravity sessions taught me about scientific UI

Heat Protein Lab is now public — eight chapters of scrollytelling about what heat does to human proteins, each anchored on a real protein with a real structure file, citations back-linked to PubMed, tissue claims sourced from the Human Protein Atlas, no analytics, no medical claims. This is the full ship retrospective: the chapters table, the phase-by-phase build log, what shipped vs what was cut, page weight, the Celsius/Fahrenheit toggle that landed two hours before publish, and what I would do differently if I started over.

2026-05-25

Three Google products, one project — what worked, what didn't, what I'd change

Heat Protein Lab was a deliberate composability test — build a citation-grounded scientific explainer using Antigravity 2.0, Google DeepMind's Science Skills bundle, and Stitch in concert, by one indie developer at a kitchen table, in a small number of sessions. This is the post-mortem on the tools: what worked, what didn't, the agy --print CLI stall, the API-key-in-scratch hazard, three upstream science-skills bugs filed, and two docs-PRs I would open next if I had the time.

2026-05-25

Visualizing what heat does to a protein, without running molecular dynamics

Chapter 4 of heat-protein-lab is the visual centerpiece — a real human enzyme (aldolase A, PDB 6XMH) that falls apart on the page as the reader scrolls. It is also the chapter most likely to mislead. This post is about how I drew the line in code between educational visualization and fake science: three discrete 3Dmol style stages (cartoon → ribbon → wireframe), atoms that never move, a VISUALIZATION-NOT-MOLECULAR-DYNAMICS badge pinned above the heading, and a readout panel with deliberately fuzzy quantities.