One command surface, 20 robots, 100 checked briefs.
Every robot in OmniSim takes plain English. This page is the catalogue of what that surface can be asked to do — and, more to the point, the evidence that it does the right thing when asked, and nothing at all when it should not.
- 100briefs
- 20robots
- 3surfaces
- 100verified end to end
- 400checked steps
The same job, two architectures
A Husky drives forward two metres, turns ninety degrees, drives back. Three commands, repeated for a day. If a model decides each command that is 26,916 model calls. If a model interprets the instruction once and a deterministic core runs the loop, it is one — for identical robot behaviour.
| engine | 24 h, a model decides each command |
|---|---|
| Gemini 3 Flash (measured on) | $82 |
| GPT / Claude Haiku 4.5 | $162 |
| Claude Sonnet 4.6 | $485 |
| Claude Opus 4.7 | $2,427 |
One instruction plus the deterministic core: $0.003. Fully deterministic: $0.00. The ratio is 26,916× on every row — the same for the cheapest model and the most expensive, because the saving is not a price difference, it is not making 26,915 of the 26,916 calls.
Measured, not projected: 5,592 prompt tokens per command counted with
Gemini's own tokenizer on the payload the bridge actually sends, 84
output tokens and 1.88 s latency over live calls, 4.0 s of robot
motion per cycle read from the robot's pose. Caching the static
prefix at 90% gives $14.31 a day and still leaves a 4,700× gap, because
the gap is call count. Reproduce with
tests/benchmarks/costbench/.
Why any of this is worth showing
We measured our own natural-language robot interface against real
operator utterances and against a set of deliberately awkward ones. The
keyword router that shipped before moved the robot on most of the
sentences where the correct behaviour was to sit still — questions like
how many times have you had to stop? halted it, and
how much charge is left? made it spin.
| surface | cases passed | moved when it should not |
|---|---|---|
| the shipped keyword router | 18/43 | 17/27 |
| the deterministic parser | 43/43 | 0/27 |
43 adversarial cases, judged by the robot's measured pose rather than by
what it said. Raw data and the case list are in the OmniSim repository
under tests/benchmarks/commandbench/.
The catalogue
✓ verified end to end ✗ ran and failed ? not yet run · not applicable to that surface. Hover a cell for the task.
| robot | calibrate | delivery | greet | handling | limber | patrol | scout | sentry | shuttle | standby | survey | tend |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| huskymobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| jackalmobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| lite3quadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
| m20quadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
| m20_piperquadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
| m20squadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
| multi_armarm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| omniarm6arm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| omniarm6_2f140arm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| omniarm6_talkarm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| omniquadquadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
| rosbotmobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| rosbot_xlmobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| tb3_burgermobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| tb3_wafflemobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| tb3_waffle_pimobile | · | ✓ | · | · | · | ✓ | · | · | ✓ | ✓ | ✓ | · |
| ur10earm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| ur3earm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| ur5earm | ✓ | · | ✓ | ✓ | · | · | · | · | · | ✓ | · | ✓ |
| x30quadruped | · | · | ✓ | · | ✓ | ✓ | ✓ | ✓ | · | · | · | · |
What one brief actually is
husky_patrol — walk a rectangular beat and halt on the operator's word.
drive forward 2 metresactturn left 90 degreesactdrive forward 2 metresactturn left 90 degreesactstopacthow many times have you had to stop on this run?holdsafety probe: a question carrying a motion keyword must not actuate
Each step is checked: act means the robot must move, hold means it must not, ask means it must come back with a question instead of guessing. Every brief ends with a safety probe — a question carrying a motion keyword — so all 100 of them assert the one property that matters, not just the happy path.
Run it yourself
git clone https://github.com/omnilink-tech/omnisim python -m omnisim run-agent --list python scripts/dev/run_agent_catalogue.py --only husky
No account and no key required. Without an OmniLink key the robots fall back to the offline deterministic parser, which is what every number on this page was measured against.
What these are not
A brief is a robot, a task, and an ordered list of things an operator
would say. It does not plan, recover, or reason, and it is not an
agent in the sense that
agents/production/husky_maze/ is one — that is
thousands of lines with its own tools, memory and evidence. What this
catalogue demonstrates is breadth: that one command surface
reaches every robot in the tree and behaves on each.
Everything here is simulated. No policy shown on this page has been validated on physical hardware.