> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keenable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Lightpanda

> Keenable is the keyless search engine behind the search tool in the Lightpanda headless browser.

*Search engine*

Keenable is the search engine behind the `search` tool in [Lightpanda](https://github.com/lightpanda-io/browser), the headless browser built for AI agents — and the one engine there that answers without a key.

→ [View the change on GitHub](https://github.com/lightpanda-io/browser/pull/3252)

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.

```bash theme={"system"}
brew install lightpanda-io/browser/lightpanda
```

```bash theme={"system"}
# or take the nightly binary directly (aarch64-macos here; Linux builds are published too)
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-aarch64-macos
chmod a+x lightpanda
```

Homebrew puts `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.

```console theme={"system"}
$ lightpanda agent --no-llm
> /searchEngine keenable
searchEngine: keenable
KEENABLE_API_KEY is not set; using the keyless endpoint (rate-limited per client IP)
> /search "zig 0.16 release notes"
1. **0.16.0 Release Notes ⚡ The Zig Programming Language** — https://ziglang.org/download/0.16.0/release-notes.html
   0.16.0 Release Notes  Zig is a general-purpose programming language and toolchain …
```

`/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

```json theme={"system"}
{
  "mcpServers": {
    "lightpanda": {
      "command": "/path/to/lightpanda",
      "args": ["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.

<Note>
  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](/rate-limits).
</Note>
