Skip to main content

World Model Optimizer

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.

World model, runtime agent, and optimizer connected in a continuous improvement loop

🌐 Platform | 📚 Docs | Discord

Getting started

1. Register your providers.

pip install world-model-optimizer
wmo providers set

That verifies the provider and then offers to register its models as routing candidates in .wmo/pool.toml, the roster everything below chooses from. It searches the provider's own catalog (OpenRouter's 338 published models included) and asks only for what that backend needs. Re-run it to add another provider's models beside the ones already registered.

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-endpoint

See 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 distill, serve a single model with no routing via wmo optimize route pin, or build an optimized harness for your agent with wmo optimize harness.

Hosted platform

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

wmo login

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

wmo run <agent-id>

E2B backend

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

Use a world model as an API

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.

Run after platform login

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

Runtime agents and optimizers in E2B sandboxes

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.

Development

Managed with uv; linting/formatting with ruff; type checking with ty; tasks run through just (brew install just / cargo install just). Conventions live in AGENTS.md.

just setup               # first time: .env from the template + uv sync
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

Usage telemetry

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 disable

This 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

world_model_optimizer-0.2.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

world_model_optimizer-0.2.1-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file world_model_optimizer-0.2.1.tar.gz.

File metadata

  • Download URL: world_model_optimizer-0.2.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for world_model_optimizer-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1f113a033497936858e0d830bd3e26b6d9a914199f1a2195af6f6faa0c5f9e5b
MD5 30b6a0b713bca0af5dafc1a766add5e9
BLAKE2b-256 e10b66d89d1d17d28fc3b7716c5ac1176950fde415061931ad2f4b1b4f685dc4

See more details on using hashes here.

File details

Details for the file world_model_optimizer-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: world_model_optimizer-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for world_model_optimizer-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0462b298e3a4df61da7b0f099f0c4ff686086e9cf48902c5728da8c9baffdfe6
MD5 22e34db35818317726879c58c6827085
BLAKE2b-256 e7694ae73429eb00b6d512c7ee4ab9e625d362fd4df40c62331f038f0b6c7223

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.2

2 files

This release

0.2.1 This release

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page