Stronger model (optional)
The fast path covers routine steps; a stronger model is asked only when Jev escalates, for planning, or for text that must be written.
Overview#
The fast path covers routine steps. A stronger model is used only when it is genuinely needed — and Jev decides that: when a provider is configured the action space gains an ESCALATE operation, and choosing it makes the runtime ask that provider for a decision from the very same candidate list, validated the same way. The same provider also plans long-horizon goals and writes field values that cannot be reused from the goal.
Providers#
| Provider | Base URL | Key | Example models |
|---|---|---|---|
| openrouter | https://openrouter.ai/api/v1 | OPENROUTER_API_KEY | deepseek/deepseek-v4.1-flash, openai/gpt-5.6-luna |
| openai | https://api.openai.com/v1 | OPENAI_API_KEY | gpt-5.6-luna (or any model on your account) |
| custom | MLOLA_LLM_BASE_URL | MLOLA_LLM_API_KEY | anything OpenAI-compatible |
export OPENROUTER_API_KEY="sk-or-..."
export MLOLA_LLM_MODEL="deepseek/deepseek-v4.1-flash" # or openai/gpt-5.6-luna
mlola browser doctor --check-llm # verify the key, the model and the round trip
mlola browser run --goal "…" --url https://…
export OPENAI_API_KEY="sk-..."
export MLOLA_LLM_PROVIDER=openai
export MLOLA_LLM_MODEL="gpt-5.6-luna"
# endpoint internal
export MLOLA_LLM_PROVIDER=custom
export MLOLA_LLM_BASE_URL="https://llm.internal.example/v1"
export MLOLA_LLM_API_KEY="…"
Economics you can see#
Escalation is charged to the planner role and recorded as fallback events, so the run summary separates cheap decisions from expensive ones: planner calls, fast-path share, and the provider-reported cost. The recovery ladder also caps strong-model consultations (two per run) so a model that cannot fix a problem cannot be consulted forever.
mlola browser run --llm none --goal "…" --url … # no escalation, no planning, no text model
mlola browser trace summary <runId> # planner calls, fast-path share, cost