pi-ketch-web-access

A pi extension that registers ketch CLI commands as first-class tools for web search, scraping, docs, and code search

Packages

Package details

extension

Install pi-ketch-web-access from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-ketch-web-access
Package
pi-ketch-web-access
Version
0.1.1
Published
Jun 17, 2026
Downloads
not available
Author
gbarcelo
License
MIT
Types
extension
Size
13.6 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions/pi-ketch-web-access.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-ketch-web-access

Unlimited web search for your AI agent. No API keys. No rate limits with SearXNG. No MCP server.

Four native tools — web_search, web_scrape, web_docs, web_code — that give your pi agent the web.

pi install npm:pi-ketch-web-access

Why Ketch? Because SearXNG

Ketch supports SearXNG as a search backend — a free, open-source metasearch engine aggregating 269 search services (Google, Bing, DuckDuckGo, Brave, Wikipedia, arXiv, and 264 more). Zero tracking. Zero profiling. No filter bubbles — unpersonalized results, not shaped by ad targeting. SearXNG also strips tracking parameters from result URLs.

Self-host it on your local machine, a $5/month VPS, or a Raspberry Pi running Docker. SearXNG gives you search across general, images, videos, news, maps, music, IT, science, and more.

  • No API keys — no signups, no tokens to rotate, no billing
  • No rate limits — unlimited programmatic access from your own instance. Upstream engines may throttle; results still arrive from the rest
  • No filter bubble — unpersonalized results, not shaped by ad targeting

Ketch also supports Brave, DuckDuckGo, and Exa as alternative search backends (rate-limited; API keys may apply). Note: Brave is ketch's default backend — configure SearXNG to unlock unlimited self-hosted search.


Four tools. Zero friction

Tool What it does When to use it
web_search Search the web. Set scrape: true to find and read pages in one call General queries. Avoids the two-call round-trip that burns rate limits
web_scrape URL → clean markdown. Auto-detects JS-rendered pages, re-fetches via headless Chrome (requires ketch browser install) You already have a URL. Cached results stale? noCache: true
web_docs Context7 version-aware documentation lookup (free tier; API key recommended for heavy use) Library/framework API questions. Stops hallucination from stale training data
web_code grep.app search across 1M+ open-source repos Finding real implementation patterns. Language filtering

Every tool returns structured JSON. Every parameter is typed. Every tool ships with promptGuidelines that route the agent to the right tool without you writing a single line of prompt engineering.


Why an extension, not a skill?

Skills provide instructions; extensions register tools. This extension turns ketch CLI commands into native pi tools with typed parameters and structured output. The LLM calls them directly — no CLI syntax to fumble.


Install

Prerequisites:

  • pi installed
  • ketch CLI on $PATH
  • (Optional) ketch browser install — enables JS-rendered page scraping for web_scrape
  • (Optional) Install and configure SearXNG — unlocks unlimited self-hosted search

Install:

pi install npm:pi-ketch-web-access

Usage

No skill configuration. No prompt engineering. Install it and the four tools are available to your agent immediately.

"What's the latest Node.js LTS release date?"

→ Agent calls web_search

"How do I use the Zod v4 transform API?"

→ Agent calls web_docs — built-in routing tells it to prefer docs over search for library questions

"Show me a real implementation of a Rust async runtime"

→ Agent calls web_code with lang: "rust" — it knows code search beats web search for implementation examples

"Scrape https://example.com and extract the pricing table"

→ Agent calls web_scrape — JS-rendered? Headless Chrome handles it automatically

"Find and summarize the top 3 articles about MCP servers"

→ Agent calls web_search with scrape: true — find and read in one call, not two