
Security News
arXiv Is Rate Limiting Authors Following a Flood of AI Slop Submissions
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.
@leing2021/pi-search
Advanced tools
Minimal Secure Evidence Gateway for Pi Coding Agent — search, web_search, web_fetch, research_search. Intent-based provider routing, quota fallback, dual-LLM research, 4-layer abuse prevention.
A minimal, secure evidence gateway for Pi Coding Agent.
pi-search gives agents four focused tools:
search — search the local repo with ripgrepweb_search — find web sources through routed providersweb_fetch — fetch and clean one web page safelyresearch_search — collect web evidence, with optional LLM verificationIt is designed to be simple, auditable, and safe by default.
pi install npm:@leing2021/pi-search
# Restart pi or run /reload
The package exposes its Pi extension through package.json:
{
"pi": {
"extensions": ["extensions/pi-search.ts"]
}
}
search({ query: "registerTool" })
web_search({ query: "React 19 features" })
web_fetch({ url: "https://react.dev/blog" })
research_search({ query: "SSRF protection in Node.js" })
| Tool | Purpose | Default behavior |
|---|---|---|
search | Local repo search | Uses ripgrep; blocks unsafe paths by default |
web_search | Web source discovery | Routes through SearXNG / Brave / Tavily / DuckDuckGo |
web_fetch | Safe page fetch | HTTPS, SSRF checks, redirect checks, HTML cleanup |
research_search | Evidence collection | LLM verification is off unless explicitly enabled |
All configuration is optional. Use only what you need.
# Web search providers
export BRAVE_SEARCH_API_KEY="brave_xxx"
export TAVILY_API_KEY="tvly_xxx"
export FIRECRAWL_API_KEY="fc_xxx"
# Optional private SearXNG provider
export PI_SEARCH_SEARXNG_URL="http://<private-searxng-host>:8888"
export PI_SEARCH_ALLOW_PRIVATE_SEARXNG="always"
# Optional provider override
export PI_SEARCH_WEB_PROVIDER="auto" # auto | brave | tavily | duckduckgo
# Optional research LLM verification
export PI_SEARCH_LLM_ENABLED="always" # never | ask | always
export PI_SEARCH_LLM_PROVIDER="openai" # openai | anthropic | local-openai
export PI_SEARCH_LLM_MODEL="gpt-4o-mini"
export PI_SEARCH_LLM_BASE_URL="https://api.openai.com/v1"
export PI_SEARCH_LLM_API_KEY_ENV="OPENAI_API_KEY"
export OPENAI_API_KEY="<OPENAI_API_KEY>"
# Optional local search boundary override
export PI_SEARCH_ALLOW_OUTSIDE_CWD="always"
pi-search uses intent-based routing instead of broad fan-out.
| Task | Primary path | Fallback |
|---|---|---|
| General web search | SearXNG if explicitly enabled, otherwise Brave | Tavily → DuckDuckGo |
| Page fetch | Local safe fetch | Firecrawl when configured / requested |
| Basic research | Search + safe fetch | Provider fallback |
| Deep research | Tavily-oriented evidence | Search + fetch fallback |
Private SearXNG is allowed only when both variables are set:
export PI_SEARCH_SEARXNG_URL="http://<private-searxng-host>:8888"
export PI_SEARCH_ALLOW_PRIVATE_SEARXNG="always"
pi-search is a process-level safety layer. It is not a Docker, VM, or OS sandbox.
It focuses on practical defaults:
execFile, not shell stringscwd unless explicitly allowed.env, .ssh, and private keys are blockedThe implementation lives in src/security.ts and is covered by the test suite.
Copy this into a new AI agent when you want it to install and configure pi-search:
Install and configure pi-search for Pi Coding Agent.
Installation:
pi install npm:@leing2021/pi-search
Then restart pi or run /reload.
Available tools:
- search({ query, path? })
- web_search({ query, provider?, count? })
- web_fetch({ url })
- research_search({ query, mode?, maxSources? })
Use these environment variables when needed:
WEB_SEARCH:
BRAVE_SEARCH_API_KEY="brave_xxx"
TAVILY_API_KEY="tvly_xxx"
FIRECRAWL_API_KEY="fc_xxx"
PI_SEARCH_WEB_PROVIDER="auto"
PRIVATE_SEARCH:
PI_SEARCH_SEARXNG_URL="http://<private-searxng-host>:8888"
PI_SEARCH_ALLOW_PRIVATE_SEARXNG="always"
RESEARCH_LLM:
PI_SEARCH_LLM_ENABLED="always"
PI_SEARCH_LLM_PROVIDER="openai"
PI_SEARCH_LLM_MODEL="gpt-4o-mini"
PI_SEARCH_LLM_BASE_URL="https://api.openai.com/v1"
PI_SEARCH_LLM_API_KEY_ENV="OPENAI_API_KEY"
OPENAI_API_KEY="<OPENAI_API_KEY>"
LOCAL_SEARCH:
PI_SEARCH_ALLOW_OUTSIDE_CWD="always"
Research LLM notes:
PI_SEARCH_LLM_API_KEY_ENV is the name of the environment variable that stores the API key. It is not the API key itself.PI_SEARCH_LLM_PROVIDER="local-openai"
PI_SEARCH_LLM_MODEL="<local-model-name>"
PI_SEARCH_LLM_BASE_URL="http://<local-llm-host>:11434/v1"
PI_SEARCH_LLM_API_KEY_ENV="LOCAL_LLM_API_KEY"
LOCAL_LLM_API_KEY="<LOCAL_LLM_API_KEY_OR_DUMMY>"
Other OpenAI-compatible provider examples:
# OpenRouter
PI_SEARCH_LLM_PROVIDER="openai"
PI_SEARCH_LLM_MODEL="openai/gpt-4o-mini"
PI_SEARCH_LLM_BASE_URL="https://openrouter.ai/api/v1"
PI_SEARCH_LLM_API_KEY_ENV="OPENROUTER_API_KEY"
OPENROUTER_API_KEY="<OPENROUTER_API_KEY>"
# DeepSeek
PI_SEARCH_LLM_PROVIDER="openai"
PI_SEARCH_LLM_MODEL="deepseek-chat"
PI_SEARCH_LLM_BASE_URL="https://api.deepseek.com/v1"
PI_SEARCH_LLM_API_KEY_ENV="DEEPSEEK_API_KEY"
DEEPSEEK_API_KEY="<DEEPSEEK_API_KEY>"
.
├── extensions/ # Pi extension entry
├── src/ # security, providers, research, text helpers
├── tests/ # node:test suite
├── package.json # package metadata and Pi extension manifest
├── README.md # English README
└── README_CN.md # Chinese README
npm test
It is intentionally small: search, fetch, evidence, safety.
MIT
FAQs
Minimal Secure Evidence Gateway for Pi Coding Agent — search, web_search, web_fetch, research_search. Intent-based provider routing, quota fallback, dual-LLM research, 4-layer abuse prevention.
The npm package @leing2021/pi-search receives a total of 14 weekly downloads. As such, @leing2021/pi-search popularity was classified as not popular.
We found that @leing2021/pi-search demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
arXiv now limits authors to two submissions a month as AI slop overwhelms moderators, delays good papers, and sparks debate over applying the limit to everyone.

Research
/Security News
A new GhostAction wave hits hundreds of GitHub repos, expanding CI/CD secret theft to cloud and AI credentials in source code and git history.

Research
/Security News
Tensorlake npm SDK version 0.5.144 was compromised in a ChainDrop / Shai-Hulud attack, delivering credential-stealing malware.