Pi Web Access is an extension that adds web search, page extraction, and video understanding to the Pi coding agent. It works with no API key because Exa MCP provides zero-config search, and if Pi already holds Codex authentication, OpenAI search can reuse it. Keys or endpoints in ~/.pi/web-search.json add direct access to providers such as OpenAI, Brave, Parallel, TinyFish, Search1API, Tavily, Firecrawl, Jina, Kagi, Bocha, Ollama, Perplexity, the Gemini API, and Mistral, and a self-hosted SearXNG endpoint keeps search private. Pi v0.37.3 or newer is required.
Every capability has a fallback chain. In the default auto mode, web_search tries a configured SearXNG endpoint, then Codex-backed OpenAI search when the active Pi model is openai-codex, then Exa, and on through the remaining providers, with routing configurable per tool or globally. Batch searches run up to three queries concurrently while routing and fallback within a query stay sequential. Results can pass through a curator UI where you review, add, and select results and approve a summary draft before it reaches the agent, or skip the curator entirely.
fetch_content routes by target. GitHub URLs are cloned locally so the agent gets real file contents and a path to explore, with an API-based view for repositories over 350 MB and specialised rendering for pull requests and issues through the gh CLI. YouTube URLs and local video files go to Gemini for transcripts, visual descriptions, and chapter markers, with ffmpeg and yt-dlp enabling frame extraction at exact timestamps. PDFs convert to Markdown through Datalab, then Gemini, then local text extraction, and are saved to a temporary directory so the agent can read sections instead of loading the whole document.
Network handling is bounded: SSRF validation, hostname domain policy, redirect checks, timeouts, and a 5 MB streamed response limit apply to every fetch; third-party hosted fetchers need an explicit opt-in for remote targets; and browser-cookie authentication is opt-in per profile, restricted to configured HTTPS hosts, with no cookies sent to hosted providers. An optional proxy parameter routes outbound requests through curl, and it applies only to this extension's tools.
Documented limits include headless environments where the curator prints its URL instead of opening a browser, private or age-restricted YouTube videos failing on all paths, Gemini truncating videos beyond about an hour, text-only PDF extraction with no OCR for scanned documents, and GitHub wiki and discussion pages falling back to normal web extraction.
Features
- Zero-config search: Exa MCP works without a key, with optional direct APIs for more than twenty other providers
- Routing and fallback: ordered provider routes per tool or globally, with configurable fallback conditions and an active-model-aware OpenAI step
- Search curator: a browser UI to review, select, and approve a summary before results are injected, toggled with /curator or opened with /websearch
- GitHub handling: repositories cloned locally, pull requests and issues rendered as one priority-ordered markdown document
- Video understanding: transcripts, visual descriptions, and timestamped frame extraction for YouTube URLs and local files
- PDF conversion: Datalab, Gemini, or local engines with page and size caps, written to a temporary directory
- Safety controls: SSRF validation, domain policy, redirect checks, a 5 MB response bound, and opt-in browser-cookie auth
- Activity monitor: a toggleable panel showing live request and response activity
Integrates with
Exa MCP Server
Hosted MCP server giving AI assistants Exa web search, code search, and company research tools
Firecrawl
Web data API that searches, scrapes, and crawls sites into clean markdown or structured JSON for agents
Tavily MCP
MCP server exposing Tavily search, extract, map, and crawl tools, run locally or via a hosted remote endpoint
