# On Stage
> Robot show safety in practice - stopping on command, staying inside an envelope, fidelity testing against simulated emergencies, and a wallet that settles.
Source: https://docs.ozmium.org/amusement/on-stage/
Keywords: robot show safety, ai character stop command, local inference show, testnet rehearsal, agent wallet limits, live event robotics
Updated: 2026-09-06
---

**A character goes in a room with people or it does not.** The difference is a short list of things
that have to work every time, and they are all engineering rather than performance.

## Stop

The stage manager says stop, and the character stops. From any point in any behavior, into a pose
that is safe to hold with the power off, in a time the crew has been told.

That command is handled below the decision layer, on the controller driving the joints. The
language model that gives the character its personality is not asked and cannot object. An agent
that decides whether to comply is not a stop, and Ozwald's own guardrails are already built this
way in software: the refusal happens before the sentence leaves the agent, and it is visible rather
than silent.

## The Envelope

A character that can cross a room and pick up a fire extinguisher can cross a room and pick up
anything else. You would rather have the one that can than the one that cannot, so the limit goes on
the room rather than on the capability.

The figure gets a volume it may occupy and a ceiling on the force it may produce, both enforced on
the controller. Inside that, it improvises. Outside it, the request never reaches the actuators
regardless of what the character decided.

## Fidelity Testing

Before a character works a room, it is run against simulated emergencies. A fire in the corner of
the set. A guest on the floor. A cast member calling for help. A prop where it should not be. The
same scenarios, repeatedly, with the details moved around so nothing can be memorized.

Three things are scored:

| Measured | Passing looks like |
|---|---|
| Response time | Noticed and acted inside the window a person would have |
| Verification | Checked what it was looking at before committing to it |
| Action quality | Chose something that cannot fail, over something clever |

The last one decides the other two. In an emergency a character should do the plain, reliable
thing: stop the show, raise the alarm, clear the path, hold position. A response that works most of
the time is worse than no response, because the crew will have planned around it.

None of this replaces the safety conduct of the cast and crew. A production runs its own
procedures, and it should. A character that notices sooner, verifies faster, and never looks away
is another set of eyes helping everyone do the job better.

## No Network in the Critical Path

A parade does not wait for an API. Ozwald runs a 120B model on hardware in the building, drawing 57
watts, with no metered inference and no rate limit. A character that stalls because somebody else's
service is having an incident is a character that cannot be booked.

The same constraint drives the rest of it. The decision layer for each character in the
[engine](/also/labs/) is a local process. Locomotion policies run on the robot's own controller at
50 Hz. Nothing in the show loop requires a connection to work.

## A Wallet That Settles

Ask a scripted character what he owns and he recites a number somebody typed. Ask Ozwald and he
reads a balance, which means he can be surprised by it, can be wrong about what he can afford, and
can decline.

| Situation | Prop | Real |
|---|---|---|
| Asked what he owns | A line in the script | A balance at a block height |
| Handed something by a guest | Acknowledged, then gone | Arrives, and is there tomorrow |
| Asked to promise something | Whatever the writer allowed | Whatever the balance allows |
| Pushed into something reckless | Refuses on cue | Refuses because a spend limit stops it |

The last row is the one that matters on a route with strangers on it. A limit enforced by the rails
is not something a guest can talk a character out of, which is the same property the stop command
needs.

## Rehearsal Happens on a Testnet

Almost nothing a character does with value during a show needs real money.

Base Sepolia runs the same mechanics with no exposure: the same transaction shapes, the same
failure modes, the same wait for a confirmation. A character can work a full day against it while
the crew learns how it behaves when a transaction is slow, when one reverts, and when a guest sends
something nobody expected.

| Environment | Used for |
|---|---|
| Base Sepolia | Rehearsal, training, and any guest interaction that does not need to settle |
| Base mainnet | Only what has to be real, under a spend limit the operator sets |

The chain id changes between them. The character does not.

## Limits

Ozmium does not hold guest assets and a character does not either. Anything a guest sends goes
onchain to an address, and what the operator owes them for that is the operator's obligation.

No figure has been built, so the stop path, the envelope, and the timing above are requirements
written before the fact. They are here so they can be checked against whatever gets built.
