# panto-web The `web` extension for [pantograph](https://github.com/travisp/pantograph)'s `panto` CLI, backed by a persistent [Lightpanda](https://lightpanda.io/) MCP subprocess. ## Tools - **`web.fetch`** — renders a URL in Lightpanda and returns its DOM-derived CommonMark, including JavaScript-rendered content. - **`web.search`** — searches through Exa's keyless MCP HTTP endpoint by default. If `EXA_API_KEY` is set, it uses Exa's REST Search API instead. Tool output is capped at 100 KB. ## Requirements Install `lightpanda` and ensure it is on `PATH`. The extension does not install or fall back to another browser. See [Lightpanda installation](https://lightpanda.io/docs/run-locally/installation/one-liner), or install the nightly with Lightpanda's Homebrew tap: ```sh brew tap lightpanda-io/browser brew install lightpanda ``` An `EXA_API_KEY` is optional. When set, `web.search` uses the authenticated Exa REST API instead of the rate-limited keyless endpoint: ```sh export EXA_API_KEY=... ``` ## Install Via the rock (once published): ```toml [extensions] rocks = ["panto-web"] ``` Or as a local checkout: ```toml [extensions] paths = ["/path/to/panto-web"] ``` The extension can be disabled with the usual policy globs, e.g. `deny = ["web"]`. ## Development The self-check requires panto's embedded Lua and `luv`, but does not start Lightpanda or access the network: ```sh panto lua _selfcheck.lua ``` The source lives under `panto-web/` so `require` works identically installed and from a checkout; `_selfcheck.lua` is `_`-prefixed so panto's directory scan skips it.