KnockOutEZ/wigolo
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
Wiggle‑on‑the‑Web: What wigolo Does
TL;DR
- wigolo is a local‑first, zero‑key‑cost‑by‑default web‑toolkit for AI‑agents.
- It bundles search, fetch, crawl & extract plus higher‑level research and autonomous‑gather loops that an agent‑orchestrator (Claude 5 Fable …) can call via **MCP JSON‑RPC over stdio ** or REST.
- All search‑engine‑agnostic work‑flows ‑ 18‑engine fusion‑fetched ‑ ML‑reranked ‑ explainable ‑ cached ‑ offline ‑ private **.
- Optional LLM synthesis (Gemini, Anthropic, OpenAI, Groq, Ollama) turns raw evidence into a finished answer.
- Runs on Node ≥ 20 (≈1.5 GB disk) on macOS, Linux or Windows; ships as an npm CLI, Docker image, SDKs (TS/Python) and MCP server.
What It Actually Is
| Aspect | Details |
|---|---|
| Category | Local‑first web‑intelligence layer for AI agents (search, fetch, crawl, extraction, caching, similarity, research, autonomous loops). |
| Primary Interface | MCP (JSON‑RPC over stdio) – the same protocol used by coding‑agents like Claude Code, Cursor, Codex, Gemini CLI, etc. |
| Secondary Interfaces | REST API (wigolo serve), TypeScript & Python SDKs, Docker container, framework wrappers (LangChain, CrewAI, LlamaIndex, Vercel AI SDK). |
| Key Claims | • No API keys required for core tools (search/fetch/crawl/…); • $‑free‑per‑query ‑ all caching is local; • Evidence‑rich results with byte‑exact citations and explainable scoring; • Works offline after the initial download of a head‑less‑browser engine & on‑device models. |
| Supported Agents | Claude Code, Cursor, Codex, Gemini CLI, OpenCode, VS Code, Windsurf, Zed, Antigravity (any MCP client can be added). |
| Installation | npx wigolo init (downloads browser engine & on‑device models), optional --agents to auto‑wire agents, --interactive/--wizard for guided setup, wigolo doctor to verify health. |
| Core Tools | search, fetch, crawl, extract, cache, find_similar, research, agent, diff, watch. |
| Result Shape | JSON containing results (title, url, excerpt, citation_id, source_span, evidence_score), citations, and freshness signals. |
| Privacy | All cache, embeddings, and models live under ~/.wigolo/; nothing is sent to third‑party services unless you enable an LLM provider. |
| Licensing | AGPL‑3.0 (see LICENSING.md). |
| Status | Public beta — actively maintained (CI badge, star history, Discord community). |
How It Works (Simplified)
- Agent → wigolo – An AI‑agent makes an MCP/REST call like
search {query:"…"}. - Tool Layer – wigolo fans‑out the request to many web‑engine adapters (18 engines), merges results, runs an on‑device ML reranker, and attaches a transparent score.
- Fetch Router – For URLs, wigolo first tries a plain HTTP fetch; if a bot‑challenge or SPA is detected it escalates to a headless‑browser pool.
- Cache & Embeddings – Results are stored locally (keyword + vector index) so repeated queries are instant and offline.
- Optional Synthesis – If
WIGOLO_LLM_PROVIDERis set, a chosen LLM rewrites the evidence into a polished answer; otherwise raw evidence is returned. - Response – The agent receives a structured JSON with citations, byte‑exact excerpts, scores, and any degradation flags.
When Would You Use It?
- You have a coding‑assistant (Claude Code, Cursor, etc.) and want it to browse the web without exposing API keys or paying per‑query.
- You need reproducible, auditable evidence – each snippet is pinned to its exact byte offset and scored.
- You run agents on‑premise (self‑hosted LLMs, private data) and require the web‑layer to stay local.
- You want a drop‑in replacement for cloud web‑search APIs in LangChain, CrewAI, LlamaIndex, etc., with zero‑cost queries.
- You need offline capability after the initial engine download (e.g., in CI pipelines or air‑gapped environments).
Quick‑Start Checklist
# 1. Install & initialise (downloads browser & models)
npx wigolo init
# 2. Verify health
npx wigolo doctor
# 3. Try a search from the CLI
wigolo search "local‑first software" --json
# 4. Run the REST server (optional)
wigolo serve # → http://127.0.0.1:3333
# 5. Use the Python SDK (example)
python - <<'PY'
from wigolo import local_client
with local_client() as c:
print(c.search(query='local‑first web search')['results'][0]['title'])
PY
Limitations & Open Questions
| Area | Current State |
|---|---|
| Coverage of web engines | 18 adapters, but some niche or paid APIs may still be missing. |
| LLM synthesis | Optional and still requires an external key (Gemini free tier, OpenAI, etc.). |
| Heavy‑weight crawling | Designed for research‑grade volumes; massive enterprise crawls may need a dedicated crawler. |
| Platform | Node‑based; non‑Node environments must use the REST/SDK bridge. |
| License | AGPL‑3.0 – may affect commercial redistribution. |
Where to Find More
- Docs –
docs/README.md(installation, CLI, tools, REST, SDKs, self‑hosting). - Examples –
examples/README.md(real‑world agent scripts). - Community – Discord link, X @yourtowhid.
- Benchmarks – Section in the README compares wigolo against Firecrawl, Exa, and Tavily.
All statements above are taken directly from the repository’s README; no additional features have been inferred.
Related
- Project
- Project
- Project
- Project