A unified, token-efficient web fetch + search CLI for LLM agents,
built around reference-style URL preservation. One small, fast binary that
works with no API keys and no backend — and takes them when you want better
search.
webtools fetch --url https://docs.example.com/api # page → compact text + refs
webtools search --query "rust async runtime" # web search → results + refsLinks become inline [N] markers with the full URLs collected into a trailing
reference block — the agent sees [1] (≈1 token) but can still recover the
exact URL. --max-tokens caps the whole output, references included.
Every result also says whether it worked: a blocked search, a page that needs JavaScript, and a page that is genuinely empty are three different outcomes, not one silent empty answer.
DuckDuckGo needs no key and is the default. When search reliability matters,
point webtools at Brave, Tavily, or your own SearXNG — keys come from the
environment or ~/.hoocode/settings.json, never from the command line:
webtools search --query "rust async runtime" --provider braveSee Search providers and Configuration.
webtools trusts the OS certificate store (plus SSL_CERT_FILE), so it works
through TLS-intercepting corporate proxies out of the box. Add a custom root CA
with --ca-cert <PATH>, or, as a last resort, skip verification with
--insecure. See TLS, proxies, and custom CAs.
- Product — what it does, features, usage, MCP, architecture
- Install & Development — install, library use, releasing
A small set of offline-first tools for agents:
- hoocode — deterministic terminal coding agent (TypeScript, on npm)
- embeddingsearchtools — semantic + BM25 retrieval, HNSW from scratch (Rust)
- voicetools — offline speech recognition, mic to stdout (Rust)
Built by Sachin Koli.