RepoDaily · 2026-07-19 · Infrastructure / Runtime

wigolo: Local-First Web Intelligence for AI Coding Agents, No API Keys

#13 Infrastructure / Runtime TypeScript +192 KnockOutEZ/wigolo Open repository

An MCP server that gives Claude Code, Cursor, Codex, and other agents durable search, fetch, crawl, and research tools — all on your machine, no cloud bill.

Repo typeInfrastructure / Runtime
Best forDevelopers who want a single keyless web-intelligence layer behind their coding agent or self-hosted agent stack.
Risk levelMedium — public beta with a 0.2.x version number; license and scale need review before production.
Time to evaluate30–60 minutes for `npx wigolo init`, wire one agent, run a search and fetch.

Primary question: Do you want to stop paying per-query search and scraping fees while keeping web tools inside your MCP-connected agent?

91/100

RepoDaily adoption score

RepoDaily rates this as 91/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.

Directional score from RepoDaily sources and adoption notes, not a benchmark.Risk: Medium
100Evidence quality

5 source(s) across 3 source category/categories, plus a RepoDaily-specific evidence module when available.

100Installability

5 workflow step(s), 6 next-action step(s), and 7 command/install signal(s) were detected.

60Maintenance confidence

Trending momentum is +192 stars, with maintenance/release/issue signals counted when present.

96Production readiness

Risk is marked medium, with 6 security note(s) and 4 explicit skip condition(s).

100Differentiation

3 opportunity lens item(s), 4 alternative(s), and 3 type-specific section(s) support differentiation.

68License clarity

License source or license wording is present.

90Agent / AI fit

9 AI/agent-related signal(s) were detected in the article text and metadata.

Project overview

wigolo is a TypeScript MCP server that bundles ten web-intelligence tools — search, fetch, crawl, extract, cache, find_similar, research, agent, diff, and watch — into a single local runtime. It runs as an MCP server over stdio next to coding agents like Claude Code, Cursor, Codex, Gemini CLI, VS Code, Windsurf, Zed, and Antigravity, as a REST/MCP daemon for self-hosted agents such as n8n or VPS automations, and as an embeddable SDK inside custom applications.

The core pitch is simple: search, fetch, crawl, extract, cache, and find-similar work with no API keys and no metered cloud. Everything the server touches stays inside `~/.wigolo/` on your disk. The optional `research` and `agent` tools can call an LLM to synthesize cited answers, but without a configured LLM provider they hand back raw briefs and evidence instead.

The project shipped v0.2.0 on 2026-07-17, which introduced zero-config onboarding, an HTTP/REST surface, TypeScript and Python SDKs, an 11-pack skill installer, framework wrappers for LangChain, CrewAI, LlamaIndex, and Vercel AI SDK, and a hardened anti-bot fetch ladder. It is labeled public beta, AGPL-3.0 licensed, and distributed primarily through npm with Docker, Homebrew, and single-file-binary channels documented.

Problem it solves

  • AI coding agents need durable web access, but hosted search and scraping APIs charge per query and require API keys.
  • Cloud-based agent web tools expose query content and results to third-party services, which is a blocker for sensitive codebases.
  • Self-assembled browser-crawler setups are fragile — anti-bot challenges, TLS fingerprinting, and interstitial walls break naive fetchers.
  • Wiring web tools into multiple coding agents means repeating MCP config, instructions, and skill files across Claude Code, Cursor, VS Code, and others.

How it works

  1. `npx wigolo init --agents=claude-code` downloads the browser engine and on-device ranking and embedding models, runs a health check, and writes the MCP config and agent instructions. Init is unattended by default and safe in CI.
  2. The agent now sees ten MCP tools. When the agent needs the web, it calls `search`, `fetch`, `crawl`, `extract`, `cache`, `find_similar`, `research`, `agent`, `diff`, or `watch` through the stdio MCP transport.
  3. Search queries hit the default direct-engine backend (Bing, DuckDuckGo, and optional keyed engines) with no external process or port. Fetch and crawl use a hardened ladder that rotates request identity, impersonates browser TLS fingerprints, and waits out JS challenges to capture and reuse clearance cookies per domain.
  4. Results are cached in `~/.wigolo/` on disk with per-result evidence scores, per-engine telemetry, and labeled failures. `doctor` and `verify` commands report component status and run end-to-end smoke tests.
  5. For remote agents, `wigolo serve` exposes `POST /v1/{tool}` for all ten tools, `GET /openapi.json`, and `GET /v1/tools`, with optional bearer auth and a fail-closed policy on non-loopback binds.

Product demo and interface preview

wigolo demo — Claude Code answering a live web question through wigolo, no API keys
wigolo demo — Claude Code answering a live web question through wigolo, no API keys — Official README visual asset that helps readers understand the project interface, architecture, workflow, or output. README.md image

Command Surface — What You Actually Type

  • `npx wigolo init --agents=claude-code,cursor` — full unattended setup, wires multiple agents, downloads browser engine and on-device models.
  • `npx wigolo init --no-warmup` — defer all downloads to first use; failed component download never aborts setup.
  • `npx wigolo doctor` — reports data directory, browser engine, on-device models, configured LLM providers, and per-engine status including which engines want an API key and which env var enables them.
  • `npx wigolo doctor --fix` — re-downloads a missing model, installs the browser engine, clears stale sidecar state, resets stuck engine breakers, even on a running daemon.
  • `npx wigolo verify` — end-to-end capability smoke test over real network; exit code 0 means pass, 1 means failure.
  • `npx wigolo search "css container queries" --limit=2` — one-shot CLI search with formatted output.
  • `npx wigolo fetch https://example.com --max-content-chars=400` — fetch a page as clean markdown.
  • `npx wigolo config --uninstall --yes` — removes MCP config, instructions, skills, and slash command; does not remove `~/.wigolo/`.
  • `wigolo serve` — HTTP daemon with REST (`POST /v1/{tool}`), MCP-over-HTTP at `http://127.0.0.1:3333/mcp`, and OpenAPI 3.1 at `GET /openapi.json`.

Integration Surface — Where It Connects

wigolo's primary transport is MCP over stdio, which is why it slots directly into coding agents. The auto-wire matrix covers Claude Code (`claude-code`), Cursor (`cursor`), VS Code (`vscode`), Gemini CLI (`gemini-cli`), Zed (`zed`), Windsurf (`windsurf`), Codex (`codex`), and Antigravity (`antigravity`). Init writes the MCP server entry and, where the host supports them, instructions and skill packs.

For any other MCP client, the config block ships as `mcp.json` at the repo root: `{"mcpServers":{"wigolo":{"command":"npx","args":["-y","wigolo"]}}}`. For HTTP-speaking hosts, `wigolo serve` exposes `http://127.0.0.1:3333/mcp`. Framework wrappers live under `packages/` for LangChain, CrewAI, LlamaIndex, and Vercel AI SDK, and thin TypeScript and Python SDKs are in `sdks/typescript` and `sdks/python`. Cline is not an `--agents` target but can be wired by hand and still receives skill packs through `wigolo skills add`.

Deployment Notes — Docker and Self-Host

The published Docker image is `ghcr.io/knockoutez/wigolo`, slim variant. The browser engine binary and on-device models download on first use into the `/data` volume. For MCP over stdio with one local client: `docker run -i --rm -v wigolo-data:/data ghcr.io/knockoutez/wigolo`. For a multi-client HTTP daemon, the compose file at `packaging/compose.serve.yml` binds `0.0.0.0` inside the container — a non-loopback bind that fails closed until you set `WIGOLO_API_TOKEN` or explicitly opt into open access.

The repo's `Dockerfile` has a `full` build target with the browser engine preinstalled at build time, useful for `--rm`/no-volume runs where first-use downloads would repeat. The named volume persists the local cache, on-device models, the browser engine binary, and encrypted keys across restarts.

Who should pay attention?

Good fit if

  • You use Claude Code, Cursor, Codex, or Gemini CLI and want web tools without per-query fees.
  • You run self-hosted agents on a VPS or in n8n and need a local MCP/REST endpoint.
  • You build agent frameworks on LangChain, CrewAI, LlamaIndex, or Vercel AI SDK and want a thin typed client.
  • You want the anti-bot fetch ladder, on-device models, and disk cache without standing up your own crawler stack.

Skip for now if

  • You cannot run Node.js 20+ or allocate roughly 1.5 GB of free disk for the browser engine and models.
  • You need managed IP-rotation proxying and the target sites use IP-reputation challenge networks — wigolo labels those as `blocked_by_challenge` and does not solve them by default.
  • Your policy forbids AGPL-3.0 dependencies in shipped products.
  • You need a production-grade SLA — this is a public beta at v0.2.0.

Risks and cautions

Medium

Public beta at v0.2.0, AGPL-3.0 licensed, with honest anti-bot ceilings and pending SDK package publication.

  • Project version is 0.2.0 and labeled public beta — APIs and tool surfaces may shift.
  • AGPL-3.0 license creates obligations for derivative or network-served uses that teams must review.
  • Anti-bot fetch has a documented ceiling: managed-challenge networks with IP-reputation scoring will not issue clearance to datacenter or fresh residential addresses, returning `blocked_by_challenge` instead.
  • TypeScript and Python SDK package names are pending and not yet published per the v0.2.0 changelog.
  • Homebrew formula, single-file binary, and `.mcpb` artifacts are documented but noted as shipping with an upcoming release.
  • Everything the server stores stays in `~/.wigolo/` on your local disk; core tools send no data to wigolo-controlled cloud.
  • `wigolo serve` fails closed on non-loopback binds until `WIGOLO_API_TOKEN` is set or open access is explicitly opted into.
  • Redirect-following is SSRF-re-guarded on every fetch tier; the MCP-over-HTTP transport rejects cross-origin DNS-rebinding requests.
  • REST surface has transport-level body caps, per-route deadlines, and a concurrency limiter.
  • `uninstall` deliberately does not remove `~/.wigolo/`; full cleanup requires a separate step.
  • Security reports go through the privacy-and-security responsible-disclosure channel, not public issues.

Alternatives to compare

ApproachWhen to useTrade-off
Tavily
You want a hosted search API optimized for LLM agents and are fine paying per query.Metered API with a free tier
Brave Search API
You only need search results and prefer a commercial key-based endpoint.Metered API with a free tier
Firecrawl
Your primary need is large-scale crawl and markdown conversion and you want a self-hostable option.Open source, self-hostable, with a hosted paid tier
Jina Reader
You want a simple reader-API that returns clean markdown from a URL.Hosted API with free tier

What this trend reveals

Replace metered web-tool spend for power-user agents

Teams running coding agents all day on Claude Code or Cursor can point those agents at wigolo's keyless search and fetch to cut recurring per-query costs.

Run `npx wigolo init --agents=claude-code`, then compare a week of agent web-tool calls against the previous API bill.

Add a local research layer to self-hosted automation

VPS and n8n automations can call `POST /v1/{tool}` through `wigolo serve` to get search, crawl, and research without a third-party key.

Stand up the compose file at `packaging/compose.serve.yml`, set `WIGOLO_API_TOKEN`, and run a curl smoke test against `GET /v1/tools`.

Ship framework-native agent features on a thin SDK

LangChain, CrewAI, LlamaIndex, and Vercel AI SDK wrappers under `packages/` let framework-first teams add web tools without a new runtime dependency.

Import the wrapper, wire one tool, and confirm it returns the same evidence-scored payload as the CLI.

Best next action

Wire wigolo into one coding agent and run a real search

Pick the agent you already use, run init with auto-wire, confirm health with doctor, and issue a search through the agent so you see the keyless path end to end.

  1. Confirm Node.js 20+ and roughly 1.5 GB free disk.
  2. Run `npx wigolo init --agents=claude-code` (or your agent id from the matrix).
  3. Run `npx wigolo doctor` and review the per-component report.
  4. Run `npx wigolo verify` for an end-to-end network smoke test.
  5. Ask your agent a question that needs the web and confirm it calls a wigolo tool.
  6. If not for you, run `npx wigolo config --uninstall --yes` for a clean removal.

RepoDaily verdict

wigolo is a credible public-beta attempt to collapse the metered web-tool stack into a single keyless MCP server. The v0.2.0 release covers the critical surface — ten tools, auto-wire for eight coding agents, REST/SDK distribution, and an honest anti-bot ceiling. The medium risk is real: it is a 0.2.x AGPL-3.0 beta with pending SDK publication. For individual developers and small self-hosted setups, it is worth a 30-minute trial today.

Sources