Browser Use Cloud does not serve `browser-use/bu-30b-a3b-preview`. The gateway
still has the route (cloud `backend/llm_use/gateway/pricing.py` MODAL_MODELS,
`service.py` _call_modal), but the Modal app behind it,
`browser-use-llm-prod` in browser-use/deploy-llm, was last deployed on
2025-12-16 and every production call since returns upstream HTTP 503, which the
gateway reports to the caller as a generic 500.
The weights are public and in use: https://huggingface.co/browser-use/bu-30b-a3b-preview
is a public repo with 2.34k downloads in the last month. So instead of dropping
the model, say what it actually is - open weights you host yourself.
- `examples/models/bu_oss.py` now starts from a vLLM server and talks to it
through `ChatOpenAI`, so it needs no BROWSER_USE_API_KEY and does not depend
on the dead Cloud route.
- The `ChatBrowserUse` docstring says Cloud does not serve it.
- The skills model table gains a self-hosting section with the vLLM command
from the model card, and loses the priceless OSS row.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018oComYHNbeV4e21v22Bbdn
AsyncOpenAI falls back to OPENAI_API_KEY when api_key is unset, so
ChatOrcaRouter(model=...) with no key authenticated its requests to
api.orcarouter.ai with the user's OpenAI credentials. The shipped example
hit this path whenever ORCAROUTER_API_KEY was unset, and .env.example
documented a variable that nothing read.
Resolve api_key from the constructor then ORCAROUTER_API_KEY, and raise
ModelProviderError(401) when neither is set, matching ChatMistral.
0.13.8 shipped bu-2-0-mini-preview as the ChatBrowserUse default, which
means Agent(task=...) with no llm - and every bare ChatBrowserUse() -
silently moved onto a preview model on upgrade, with no code change on
the caller's side.
Two problems with that. A preview id can change behaviour or be renamed,
so it is the wrong thing to reach by omission. And per-token price is the
wrong yardstick for an agent: total cost is tokens-per-step times steps,
and steps is a function of model quality, so a cheaper-per-token model
that needs more steps to finish can cost more and take longer. We do not
yet have a per-task benchmark number for mini to say which way that goes.
bu-2-0-mini-preview stays a first-class option: still accepted, still
priced, still what the examples demonstrate. It is just opted into by
name now rather than landed on by default. Revisit once the benchmark
number exists.
Adds bu-2-0-mini-preview as an accepted model id and makes it the
constructor default, so a bare ChatBrowserUse() now routes there.
bu-2-0 is unchanged: still accepted, still documented as the premium
option, and bu-latest still resolves to it. Keeping 'latest' on the
stable line means existing callers pinned to that alias do not silently
move onto a preview model; only the bare-constructor default moves.
Pricing is registered alongside the model so cost tracking does not
silently report $0 for what is now the default. This model has no cache
discount, so cached reads bill at the input rate.
Examples, README and the model reference are updated to the new default.
The model reference also claimed bu-latest resolved to bu-1-0, which has
not been true since bu-2-0 shipped; corrected here.
Registers ChatOrcaRouter (provider='orcarouter'), an OpenAI-compatible
BaseChatModel mirroring the existing ChatOpenRouter wiring, so the model
gateway is usable as a first-class provider:
- browser_use/llm/orcarouter/chat.py + serializer.py
- Registered in browser_use/llm/__init__.py and browser_use/__init__.py
- Token-cost guard: never attribute upstream prices to the gateway
- .env.example ORCAROUTER_API_KEY entry
- tests/ci/test_orcarouter.py and examples/models/orcarouter.py
Co-Authored-By: Claude <noreply@anthropic.com>
ChatBrowserUse now accepts provider-prefixed model ids (anthropic/*,
openai/*, google/*) alongside the bu-* aliases and browser-use/* models,
so a single BROWSER_USE_API_KEY can reach them. bu-* aliases and the
bu-latest -> bu-2-0 normalization are unchanged; bare ids are rejected
with guidance toward the provider/model form.
Also matches provider-prefixed Claude Sonnet ids in the Agent
llm_screenshot_size auto-config, so the screenshot optimization isn't
lost when Claude is reached via ChatBrowserUse.
Adds an example, a README FAQ entry, and tests.
ENG-5060
- add gemini-3-flash-preview-lite to VerifiedGeminiModels and token mappings
- list both gemini-3-flash-preview[-lite] alongside existing -latest aliases in CLOUD.md and api-v2.md SupportedLLMs
- swap example code and recommendations (examples/, AGENTS.md, quickstart.md, bug report placeholder) to gemini-3-flash-preview / -lite
- update Google CI test + evaluate_tasks judge LLM to gemini-3-flash-preview / -lite