↑ resurface

Open Source · NOV 02, 2026 · 6 MIN READ

bionic: The AI-Native IDE for Robotic Engineering


bionic is a browser IDE where you build robots with natural language. Four panels: a file tree of scripts, a drillable robot component tree, a central 3D simulation that responds exactly as your scripts dictate, and an AI engineering agent that edits the files, runs the simulation, and reads the telemetry to check its own work. The differentiator is determinism: same script + same seed = a bit-identical run on every machine, reproducible from a small artifact and verifiable in CI with a hash.

Animated tour of bionic: the four-panel IDE, the AI agent editing and verifying a control script, and the SO-ARM100 simulation running deterministically
fig. 01 — Four panels, one source of truth: scripts, components, simulation, and the agent.
View on GitHub ↗
Apache-2.0 — runs in the browser, no install beyond npm

Everything Is a File

The file tree, component tree, and 3D viewport are three views of one source of truth — a directory of human-diffable text files. The robot is plain MJCF (robot.xml): the file you edit is the file the physics executes, with no lossy conversion in between. Vendor metadata — part numbers, prices, recommendations — lives in a sidecar, robot.manifest.json, never in the physics file. The agent edits files; the panels render them.

Determinism, Engineered

Physics is Google DeepMind's official @mujoco/mujoco WebAssembly build, single-threaded for deterministic stepping. Scripts run in a QuickJS-WASM sandbox that sees only sim time and a seeded PRNG, and physics and sandbox share one Web Worker in lockstep: the sim does not step until your callback returns, and vice versa. The control API is one function, control(t, obs), called at a fixed 50 Hz of simulated time. A Node harness runs the identical engine headless and compares a chained FNV-1a hash of the full physics state against a golden file — browser and Node runs are bit-identical.

An Agent That Checks Its Own Work

The chat panel is a real engineering agent. Bring your own Anthropic API key — stored in your browser, with requests going browser-direct to the API — and it works through a small set of tools. Every turn gets a one-click undo checkpoint that captures the sim moment too, so restoring a turn rebuilds the sim, fast-forwards to that tick, and verifies the hash reproduces.

ToolWhat It Does
edit_fileEdits the control script and project files
edit_robot_modelPatches the MJCF, validated by compiling in MuJoCo before the change is committed
run_simRuns a deterministic simulation, fast-forwarded in the worker
read_telemetryQueries the recorded trace of the last run
query_robotIntrospects components, interfaces, limits, and part assignments

Components Bound to Real Parts

The component tree maps actuators, compute, power, and gripper slots to records in a git-native parts catalog — one JSON file per part, validated against a schema, with a cited source on every spec. Sparse records beat plausible guesses. The catalog grows three ways: structured importers (the whole Dynamixel X-series is generated from ROBOTIS's own e-Manual data file), the agent researching parts on demand with web search and a validated save_part tool, and hand-curated records. Each part gets a detail card, one-click alternatives, and a live BOM total.

The repo's history records further phases since: exportable replay artifacts that npm run replay verifies headlessly; LeRobot-style Obs/Action feature dicts derived from the robot model; the SO-ARM100 arm imported from MuJoCo Menagerie with real mesh geometry; and a Python script tier under Pyodide that runs in the same lockstep worker and reproduces the JavaScript template's checksum exactly.

Quickstart

bash
npm install
npm run dev            # open the printed URL (Chromium recommended)
npm run determinism    # headless Node run, verifies the golden state hash
npm run e2e            # browser end-to-end suite (the agent API is mocked)

Why We Built It

We procure and deploy robots for clients, and the gap we keep hitting is between "describe what the robot should do" and "prove it does it". Chat interfaces can generate a control script; they cannot tell you whether it runs the same way twice. bionic puts the agent inside a loop where every claim is checkable — compiled before it's committed, simulated deterministically, and verified by hash — and keeps everything as plain files you own.

View bionic on GitHub ↗
Apache-2.0 — contributions welcome under DCO

this note evidences a capability — Robot Procurement ↓