Skip to main content
WebRouter never logs or stores your keys, and sends each key only to its own provider. See SECURITY.md for how keys and requests are handled. Keys are read from the environment, or passed explicitly through provider_config={Provider.NIMBLE: {"api_key": "..."}}: A key set once serves every method of a provider that has several. See .env.example. The library reads the environment only; the MCP server is the one place a .env is read for you; see docs/mcp.md. configured_providers() and configured_extract_providers() (and configured_research_providers(), configured_browser_providers() and configured_browse_providers()) report which of these the current environment actually satisfies: a backend needing two variables only when it has both. WebRouter does not log or store keys, and a provider’s __repr__ omits them so a stray log of a provider does not leak one. Provider clients also never follow redirects (httpx would replay the auth header to the redirect target, including one on another host), so a provider sending a credential rejects follow_redirects=True. See SECURITY.md.