search tool in Lightpanda, the headless browser built for AI agents — and the one engine there that answers without a key.
→ View the change on GitHub
Lightpanda’s agent REPL and its native MCP server share a single search tool. Its default auto mode tries Brave, Tavily and Exa in order, each only when that vendor’s API key is in the environment, and then Keenable — which works with or without one. So a Lightpanda binary in an empty environment still returns real {title, url, snippet} results instead of failing, which is why upstream dropped its DuckDuckGo HTML scrape in favour of this path.
Install
Install Lightpanda
Nothing Keenable-specific to install: the engine ships in core. It is in the nightly builds — the latest tag predates the merge — and nightly is what Homebrew, the AUR package and the:nightly Docker image all track.
lightpanda on your PATH. The direct download leaves it in the working directory instead, so run it as ./lightpanda below.
Search from the agent
The REPL takes tools as slash commands, so searching needs no model key either —--no-llm is enough. Quote a multi-word query: it binds to the tool’s one positional argument.
/searchEngine keenable pins the engine and is remembered in .lp-agent.zon, so later sessions skip the keyed engines entirely. Leave the setting on its auto default instead and Keenable is used whenever no other engine’s key is set.
Or drive it over MCP
tools/call search returns the same numbered markdown to whichever model is driving the browser. The browser does not navigate on a search — pass a result’s URL to the goto tool to open it.
Set
KEENABLE_API_KEY to authenticate — this removes the hourly request cap. Without a key, calls run on the shared public tier at lower rate limits.