pi-terse-web
Lean web fetch + web search for the Pi coding agent: URL to clean markdown, query to results. One fetch, one timeout, no SSRF DNS gymnastics.
Package details
Install pi-terse-web from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-terse-web- Package
pi-terse-web- Version
0.1.3- Published
- Jul 18, 2026
- Downloads
- 603/mo · 603/wk
- Author
- astrohan
- License
- MIT
- Types
- extension
- Size
- 27.1 KB
- Dependencies
- 3 dependencies · 3 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-terse-web
Lean web fetch + web search for the Pi coding agent. Two tools, each one network call:
webfetch— URL → clean markdown (HTML pages) or raw text, byte- and char-capped.websearch— query → Exa/searchresults as{title, url, snippet}.
The chat model synthesizes from what these return. Neither tool curates, summarizes, opens a browser, or runs a fallback cascade.
Why
pi-web-access is powerful but heavy: seven search providers, a headless curator, a YouTube/PDF/video/GitHub extractor chain, and a DNS-resolving SSRF guard that breaks under fake-IP proxies (Clash/Mihomo TUN). pi-terse-web is the lean opposite for people whose web access is mostly docs, articles, and search results:
- No SSRF DNS gymnastics.
guardUrlonly checks the URL scheme and validity — it does not resolve DNS and keeps no host/IP denylist, so the fake-IP-proxy class of failures can't happen by construction. This is deliberate for a local single-user agent: the process already owns the network, and an incomplete denylist is worse than none. Network-policy isolation is the sandbox/runtime's job, not this tool's. - One fetch, one timeout. No Jina → Parallel → Gemini cascade that takes 30s+ and bills multiple API calls.
- Proxy is free under TUN. Clash/Mihomo TUN intercepts at the network layer, so no proxy configuration is needed — the fake-IP SSRF bug class can't happen because there's no DNS guard to begin with. For
HTTP_PROXY/HTTPS_PROXYsetups, run Node 24+ withNODE_USE_ENV_PROXY=1(Node's globalfetchthen follows the env vars). Either way, zero proxy code in the tool. - Bounded output. A byte-capped stream read prevents huge pages exhausting memory; output is char-capped with a truncation marker, so a fetch can't overflow the context window.
Install
pi install npm:pi-terse-web
Or try it for one run:
pi -e npm:pi-terse-web
Configure
websearch needs an Exa API key:
export EXA_API_KEY=...
webfetch needs no configuration.
Coexisting with pi-web-access
The two can coexist — pi-terse-web uses distinct tool names (webfetch, websearch) vs pi-web-access (fetch_content, web_search), so there is no registration conflict. But the model will see overlapping capabilities; if you want a single lean set, disable pi-web-access's tools or uninstall it.
License
MIT.