@aemonculaba/pi-search
Web search + fetch extension for pi (OpenAI search + Readability extraction)
Package details
Install @aemonculaba/pi-search from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@aemonculaba/pi-search- Package
@aemonculaba/pi-search- Version
0.2.3- Published
- Feb 26, 2026
- Downloads
- 74/mo · 18/wk
- Author
- eysenfalk
- License
- MIT
- Types
- extension
- Size
- 27.5 KB
- Dependencies
- 3 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./index.cjs"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@aemonculaba/pi-search
Web search + fetch extension for pi with an agent-first browse workflow:
web_search(query)→ list of results (title, URL, snippet)web_fetch(url)→ clean Markdown content + links found on page
This avoids DDG scraping/rate limits by using OpenAI/Codex native web search.
Tools
web_search
Uses OpenAI web_search tool (Codex OAuth or OpenAI API key) and returns raw results.
web_fetch
Fetches and extracts page content via:
- Readability + Turndown (default)
- Playwright + Readability fallback for JS-heavy pages
- Raw text fallback for non-HTML responses
Also returns links found on the page for follow-up crawling.
Auth priority
openai-codex(/loginsubscription)openaiAPI keyOPENAI_API_KEYenv var
Local dev (no symlink)
npm install
npx playwright install chromium
pi install /absolute/path/to/pi-search
Then in pi run /reload.
To update while developing, just edit files and run /reload again.
Install from npm in pi
pi install npm:@aemonculaba/pi-search
# or pin a version
pi install npm:@aemonculaba/pi-search@0.2.0
Release / test install flow
- Validate package locally:
npm ci
npm test
npm run pack:check
npm run release:dry-run
- Publish a dev tag (for npm-based testing before latest):
npm version prerelease --preid=dev
npm publish --tag dev
Then test in pi:
pi remove npm:@aemonculaba/pi-search || true
pi install npm:@aemonculaba/pi-search@dev
- Publish stable (tag + push):
git tag v0.2.0
git push origin v0.2.0
GitHub Action will publish to npm via Trusted Publishing (OIDC), no NPM_TOKEN needed.
- Test official install in pi:
pi remove npm:@aemonculaba/pi-search || true
pi install npm:@aemonculaba/pi-search@0.2.0
CI/CD
CIworkflow: install, test, package dry-check on push/PRReleaseworkflow: publish to npm onv*tags (or manual dispatch) using npm Trusted Publishing
Policy (baked into extension)
This package includes a web-tool policy that enforces web_search + web_fetch for web access.
When enabled (default):
- injects guidance into the system prompt each turn
- blocks known alternate web-search/web-fetch tools
- optionally blocks bash-based web fetching (
curl,wget, raw URLs, etc.)
Config
| Variable | Description |
|---|---|
WEBSEARCH_PROVIDER |
Force provider (openai) |
WEBSEARCH_MODEL |
Override model (default gpt-5.2 for codex) |
OPENAI_API_KEY |
API key fallback |
PI_SEARCH_ENFORCE_WEB_POLICY |
Enable/disable embedded policy (true by default) |
PI_SEARCH_BLOCK_BASH_WEB |
Block bash web-fetch patterns (true by default) |
PI_SEARCH_EXTRA_BLOCKED_TOOLS |
CSV list of extra tool names to block |
PI_SEARCH_ALLOWED_WEB_TOOLS |
CSV list of blocked tools to allow |
Managing pi extensions and migrating across servers
See docs/PI_AGENT_OPERATIONS.md for a practical playbook:
- package-based extension management
- version pinning for reproducibility
- project-local
.pi/settings.jsonstrategy - migration checklist for new servers