Environment · v0.5 · gox-fleet-ops · private, NDA gated

One image. Six hours to first eval.

Reproducible from (scenario_id, seed). 47 tasks. 6 families. 7 calibration cards. HUD v6 integration in progress, OpenEnv adapter in progress. Access under NDA — request access.

$ gh repo clone midas/gox-opsgym  # private, invite-only
→ clone · ok · access granted under NDA
 
$ make env  # build the resettable gym image
→ 47 tasks · 6 families · 7 calibration cards · registered
 
$ gox_sim eval tasks.py --agent agent-a --seeds 1,2,3,4,5
→ f3-fault-triage-0217 · seed 42 · pass · reward 0.87
→ f3-fault-triage-0217 · seed 43 · pass · reward 0.72
→ f4-impound-recovery-1103 · seed 42 · fail · reward 0.38 · SLA missed
→ f4-impound-recovery-1103 · seed 43 · pass · reward 0.82
→ ... 44 more traces · dollar impact carried as subscore
 
$ pytest -q
............................
10 passed in 3.42s

What ships

Environment namegox-fleet-ops
Versionv0.5 · Sept 2 2026
HUD integrationv6 target
OpenEnv adapterin progress
Task count47 seeded · 6 families
Calibration cards7 anchor cards
Reward scale0–1 · dollars in subscore
Continuing scenario30-day · 5 seeds
CitiesHonolulu seed · 2 validation
MCP tool groups12
Test coverage10 · determinism, no-op, monotonicity
Distributionprivate repo · email→NDA→invite
Source of truth · what's real, what's coming

Every claim carries a tag.

The archive is real — eight years of live operations, invoice-linked. The gym is under active build, calibrated against that archive. Nothing on this site is claimed as shipped unless it is.

● What's real today shipped

  • Live scooter fleet · 15+ cities under Go X operation
    5,249
  • Rides, lifetime · real invoice-linked ledger
    1,111,327
  • Unique riders · 8 years
    699,996
  • Venues under contract · hotels, resorts, campuses
    548
  • Contractors hired · operators, dispatch, support
    160+
  • Real revenue · since 2018, 15 cities
    $15M
  • Honolulu monthly P&L · real ledger range
    $100–200K

● What's coming next in build

  • Deterministic gym image · reproducible from (scenario_id, seed)
    v0.5
  • Sim/real fidelity gate · P&L within ±10% of real
    week 4
  • HUD v6 integration · protocol alignment
    in progress
  • OpenEnv adapter · protocol shim
    in progress
  • A+H labeling loop · accept / edit / reject splits
    design phase
  • Link acquisition fleet · top-of-line hardware, ~$300M raised
    +20K units
  • Full 30-city rollout · flagship + growth + seed tiers
    12-mo target
MCP tool surface · 12 capability groups

Twelve groups. One receipt per write.

Every write returns an idempotent receipt. Reads are cheap. Cause and symptom live in different tools by design.

fleet.*
unit lookup, telemetry, per-unit history
venues.*
list, capacity, per-venue demand curves
dispatch.*
crew schedules, routes, availability
moves.*
propose, validate, commit unit relocations
maintenance.*
repair history, parts inventory, decide (repair / retire / monitor)
impound.*
notices, permit records, file release, pay
ledger.*
balance, transactions, forecasts
support.*
tickets, reply, escalate, playbooks
pricing.*
list current, set new, elasticity notes
inbox.*
venue emails, HPD notices, supplier offers
memory.*
agent scratchpad, decision journal
sim.*
clock, forward-sim, replay from seed
Repository layout

Runnable in one pip install.

opsgym/repo/ 2,992 py + docs ├── README.md install + 5-min quickstart ├── DATA_CARD.md provenance + de-id method ├── RIGHTS.md PII policy · counsel gate ├── Dockerfile.hud HUD v6 shape ├── pyproject.toml ├── env.py 6 templates · 30d scenario ├── tasks.py 47 task rows ├── gox_sim/ entities · policies · world · mcp ├── tests/ │ ├── test_determinism.py │ ├── test_no_op_scores_zero.py │ └── test_grader_monotonicity.py └── calibration_cards/ 7 JSON · group=16
// python quickstart
from gox_sim import World, Env
 
w = World.build("honolulu_pattern", seed=42)
→ fleet from real Honolulu seed · venues, dropoff points, ridership distributions · calibrated to 8-year archive
 
env = Env(world=w, task="f3-fault-triage-0217")
obs = env.reset()
done = False
while not done:
    action = agent.act(obs)
    obs, reward, done, info = env.step(action)
 
print(info["subscores"])
→ {'decision_recorded': 1.0, 'action_matches_policy': 1.0, ...}
Ten acceptance criteria · built to them from day one

HUD-QA can review every trace.

01
Cheapest path scores 0
No constant, echo, or shape-only passes. No-op rollout = 0.
02
Non-degenerate spread at group=16
Seven calibration cards span weak-to-strong anchors. Each task maps to a card; multiple tasks share a card.
03
Calibrated 5–30% on strong anchor
Retire anything above ~70%. A few at 0% with documented human blind-solve.
04
Multi-step by construction
Minimum 5 tool calls across ≥ 2 data sources. Cause and symptom in different tools.
05
No leakage
Prompts written in ops's voice. Seeded data never labels the answer.
06
Prompt and grader aligned
Better work never scores lower. Composed graders with visible subscores.
07
Substrate not memorized
World is Go X's, generated from Go X's distributions. Not on the internet.
08
Diverse taskset
Six families with different deliverable shapes plus a continuing task.
09
Deterministic, isolated
Sim state rebuilt from (scenario_id, seed). No shared mutable state.
10
Clean rights
No PII, no third-party UI, no privileged material. Data card ships with the environment.
Rights & provenance

Grounded in real records.
Clean of real people.

What's in

  • Agent proposals, human decisions, seven-day outcomes
  • Fleet snapshots · venue tables · fault catalogs · impound history
  • Weather + event overlays (public)
  • Distributional summaries that seed the sim

What's out

  • Rider names, plates, payment data
  • Venue legal names — pseudonymized
  • Personally identifying free-text
  • Anything privileged or confidential · counsel review before any external showing

De-id pipeline: deterministic pattern matching plus a model pass, irreversible tokens. Fourteen identifier classes masked. Full method in DATA_CARD.md.

For design partners

Talk to us.
Ship a run this week.

Environment is available under NDA. Six-hour setup. First run this week. Two design partners, non-exclusive.