The batteries-included developer-experience layer for agent-driven robotics.
Project description
Declarative robotics. Describe a robot, its sensors, its world, and the behaviours you want to verify in YAML — Robotbase compiles that into a running, headless ROS 2 + Gazebo simulation and gives you machine-readable evidence. Local-first and open-core: no cloud, no accounts in the core.
What it is
Robotbase is the layer over the simulator, not a simulator. It's all YAML: robot.yaml (the
robot + its sensors), world.yaml (the world), and one or more scenario files under
simulation/scenarios/*.yaml. A scenario is the test — its assertions: block declares what
"working" means:
# simulation/scenarios/drive-forward.yaml
assertions:
- {type: robot_moved_minimum_distance, minimum_distance_metres: 1.0}
- {type: required_topic_messages, topic: /scan, minimum_count: 5}
Robotbase compiles all of it into a complete ROS 2 + Gazebo project (URDF, world SDF, launch, ROS↔gz bridges, control config) and runs it headless in Docker. You never hand-write the XML — the way you never click through a cloud console with Terraform.
How it works
edit robot.yaml / world.yaml / a scenario → robotbase up → robotbase test
▲ │
└────────── read the structured result / episode ──────────┘
Prerequisites: Docker, Python 3.12, and Linux (on Windows: WSL2 + Docker Desktop).
pip install robotbase-kit
robotbase create my-bot # scaffold a project (differential-drive by default)
cd my-bot
robotbase up # start the container + build (first run builds the image)
robotbase test drive-forward # run a scenario; prints a structured pass/fail result
Every run is an objective result (metrics + assertions) plus a recorded MCAP episode (Foxglove/Rerun-openable). Every action is a verb with a structured result, so a human and a coding agent drive it the same way.
Build your own robot and world
The scaffold is only a starting point — the robot, its sensors, the world, and the tests are all yours to edit. Author declaratively and let the tool keep you honest:
robotbase schema # the full robot.yaml / world.yaml / scenario authoring reference
# …edit robot.yaml and world.yaml…
robotbase validate # static physics checks (mass, inertia, joint limits) before you launch
robotbase explain # which links / joints / topics each line of your spec produced
robotbase describe # structured ground truth for the robot, world, and scenarios
robotbase up # recompile the specs, (re)build, and run
Define what "working" means as scenarios — each is a simulation/scenarios/*.yaml whose
assertions: block is the test:
robotbase scenario add reach-the-shelf
robotbase test reach-the-shelf
Start from a template or an existing URDF
robotbase templates # list the built-in templates
robotbase create my-arm --template arm # differential-drive | camera-bot | arm | drone
robotbase create my-bot --from-urdf my_robot.urdf # import an existing URDF verbatim
The knowledge layer (built for agents)
Robotbase is meant to be operated by a coding agent, so the tool teaches the agent how to use it — there are no external docs to keep in sync.
- One surface, CLI + MCP. The full
robotbaseCLI is mirrored by a 19-tool MCP server (describe,explain,validate,build,test,diagnose,episode …). A human types the commands; an agent calls the tools — same verbs, same structured results. - A built-in authoring reference.
robotbase schema(and theauthoring_schemaMCP tool) returns the fullrobot.yaml/world.yaml/ scenario format — every field, the sensor/archetype vocabulary, the assertion types, and the common mistakes — as prose or JSON Schema. It's generated from the code, so it can't drift from what the compiler actually accepts. - Ground truth, not files to parse.
describe/explain/validateand theepisodequery verbs hand back structured facts about the compiled robot, world, topics, and recorded runs. - Every project is agent-ready.
robotbase createdrops anAGENTS.md(project-specific instructions) and a.mcp.jsoninto the new project.
Setup for the MCP server: none beyond pip install robotbase-kit — it ships in the core install. An
MCP-aware agent (e.g. Claude Code) opened in a project picks up the bundled .mcp.json
automatically. To run it by hand:
ROBOTBASE_PROJECT_DIR=. python -m robotbase.mcp_server # stdio; ROBOTBASE_GUI=foxglove to watch runs
Why it exists
Standing up ROS 2 + Gazebo by hand is a tax paid in opaque C++ tracebacks and terminal scraping — and it's especially brutal for a coding agent. Robotbase removes it and replaces it with what agents are good at:
- Declarative, not fiddly. A few lines of YAML; the compiler owns every sim gotcha (collision lumping, bridge wiring, inertia, control config) and, when the spec is wrong, returns an error that names the field instead of a crash.
- Structured state, not log-scraping.
describe/explain/validateand the episode query verbs hand back ground truth, not console output to parse. - Evidence, not vibes. A scenario is an objective pass/fail; you can't claim a robot works and be believed — you make the assertions pass. That closes the gap the project exists to close: a coding agent can write robot code; on its own it can't tell whether the robot actually works.
Benchmark data — coding agents with vs. without Robotbase — coming soon.
Status
Alpha, proven end-to-end. The full local loop works — create → author the specs → build → run → read the evidence — across four robot templates (differential-drive, camera-bot, arm, drone), a growing scenario/assertion/metric vocabulary, MCAP episode recording + query, auto-diagnosis, a domain-randomized eval layer, and a proven sim-agnostic runner (Gazebo + an in-process MuJoCo backend). Local-first, MIT-licensed.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robotbase_kit-0.1.0.tar.gz.
File metadata
- Download URL: robotbase_kit-0.1.0.tar.gz
- Upload date:
- Size: 177.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95903295ca34eee4b774e8da0eafb60a7eb11934c5cbb2fc39fd53ba23b9f776
|
|
| MD5 |
a5c79aa9c646aab267d2b2c421c42e05
|
|
| BLAKE2b-256 |
894ddc80ff11749f578fc5359ab28607078cafe57662a54c4cd3fb06d5d01593
|
File details
Details for the file robotbase_kit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: robotbase_kit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 181.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
404d2160b247bd5dd908041b738c45d1b9992fc0d59cfd4b5f07ad89172e7389
|
|
| MD5 |
fbdb9e5e5977aff9c3ec66d0c94ba78c
|
|
| BLAKE2b-256 |
abb92949a523df9a8c83c04022c66457bc91a51d8a7bfd16bece86c798d9355d
|