Skip to main content
Gym and dm_env standardized the training loop: in-process, lockstep step(action) → (obs, reward, done), reward-centric. AWP standardizes inference-time interaction across a process boundary: self-describing worlds, two time models, action lifecycles, safety, sessions. Gymnasium and dm_env do expose their interfaces at runtime: env.action_space and env.observation_space (or action_spec() / observation_spec()) describe the shapes and bounds a policy must handle, and code routinely introspects them. The differences that matter are elsewhere:
  • Boundary. Spaces are Python objects in the trainer’s process. An AWP manifest is a wire artifact a remote agent reads before binding, and it also carries embodiments, time models, units and frames, and the safety policy, none of which a space describes.
  • Time. step() is the only time model; there is no streaming mode where the world advances while the policy thinks.
  • Actions. A Gym action is applied atomically per step. An AWP action has admission, permission, execution, progress, preemption, and a deadline.
  • Authority and audit. There are no grants, envelopes, approval hooks, or a normative session record; the trainer is trusted by construction.
  • Reward. AWP has no reward in the core; worlds MAY expose reward as an ordinary channel, keeping the protocol reward-agnostic.
They compose: the planned gymnasium-bridge exposes a Gymnasium env as an AWP world, generating the channel and action schemas from the runtime spaces. It can claim the sim profile only for environments whose state can be snapshotted; otherwise it claims Core.