wmo turns agent traces you already collect into continuous improvement. Start with a model
endpoint at frontier quality with 40%+ lower cost. Keep improving it with world model simulations,
meta-harness optimization, and model distillation.

1. Register your providers.

pip install world-model-optimizer wmo providers set
2. Tune a router on your OTel traces.

```
wmo build --file traces.jsonl --name my-endpoint

Score every registered model on held-out tasks from your traces

wmo optimize route sweep my-endpoint --traces traces.otel.jsonl

Turn those measurements into a routing policy

wmo optimize route fit matrix.json --kind knn \
--out .wmo/models/my-endpoint/policy.json
```
3. Serve it.

wmo serve --name my-endpointSee what it bought you against the model you were using before:

wmo optimize route report matrix.json .wmo/models/my-endpoint/policy.json \ --baseline gpt-5.5
Distill your own small model into the pool with wmo optimize model,
serve a single model with no routing via wmo optimize route pin, or build an optimized harness
for your agent with wmo optimize harness.

Create an account at platform.experientiallabs.ai, then authenticate the CLI:

wmo loginCopy an agent ID from the platform and run its current champion harness:

wmo run <agent-id>Hosted agents already run in platform-managed E2B sandboxes. To evaluate a local optimization in E2B, install the extra and provide an E2B key:

pip install "world-model-optimizer[e2b]" export E2B_API_KEY=... wmo optimize harness my-agent my-environment --tasks tasks.jsonl --backend e2b
world-model-optimizer includes world models that can be used to simulate your agent environment
for testing and optimization.

from wmo import Action, ActionKind from wmo.config.store import WorldModelStore from wmo.engine.loader import load_world_model model_dir = WorldModelStore(".wmo").resolve("airline") wm, _provider = load_world_model(model_dir) session = wm.new_session(task="check out the cart") obs = wm.step(session.id, Action(kind=ActionKind.TOOL_CALL, name="add_to_cart", arguments={"sku": "A1"})) print(obs.content)
Or over HTTP (same code path), namespaced by model name: GET /world_models, then POST /world_models/{name}/sessions and POST /world_models/{name}/sessions/{id}/step.

After wmo login, the same wmo run command can open a hosted world model or run an agent's
current champion harness in E2B. The platform manages model and sandbox credentials, so hosted
runs do not need local API keys.

wmo login wmo run <world-model-or-agent-id> wmo run <agent-id> -u . --task "fix the failing tests"
Workspace upload is opt-in with -u: WMO live-syncs changes and preserves concurrent local edits.
Long-running agents can detach, continue in the platform, and be messaged or reattached later.

wmo run <agent-id> -u . --detach wmo run --send "Now run the full test suite" wmo run --attach wmo run --end
WMO can run the real pi worker inside isolated E2B sandboxes while the world model supplies the environment. Optimization and evaluation rollouts run in parallel, and model credentials stay outside the sandbox.

wmo optimize harness my-agent my-environment --tasks tasks.jsonl --backend e2b wmo eval tasks.jsonl --mode closed-loop --harness my-agent --harness-backend e2b
The optimizer can change prompts, tools, policies, skills, and runtime code. Every candidate is measured against the same simulated tasks, and only changes that pass the evaluation gates become the new versioned champion harness.

Managed with uv; linting/formatting with ruff; type checking with ty. Conventions live in AGENTS.md.

uv sync --extra dev # env + dev tools uv run ruff check . # lint uv run ruff format . # format uv run ty check # type check uv run pytest -q # tests
wmo uses anonymous usage telemetry to track the volume of usage.
Telemetry is strictly metadata. It never includes prompts, traces, actions, observations, file
paths,
model names, provider credentials, or raw user content.

Telemetry is enabled by default. To opt out for a project:

uv run wmo config telemetry disableThis writes .wmo/settings.toml. You can re-enable it with uv run wmo config telemetry enable,
check the current setting with uv run wmo config telemetry status, or disable it for a process
with DO_NOT_TRACK=1 or WMO_TELEMETRY=0.