Search, fetch, crawl and extract the web locally, with no keys or metered bill.
- Started in our test
- ★ 5.5K GitHub stars
- 1.1K downloads a week
- Last commit 26 Oct 2026
At a glance
Wigolo bundles the web jobs an agent keeps needing into one local server: search across many engines with its own reranking, page fetching that falls back to a headless browser when a site needs one, crawling, structured extraction, a searchable cache of everything it has read, and change tracking for pages you watch. Search, fetch, crawl and extract need no account or key.
The research and agent tools write a finished, cited answer only when you give them a model to use, such as a free Gemini key or a local Ollama model. Without one they hand the evidence back for your own assistant to write up. The first setup downloads a browser engine and small on-device models, about 1.5 GB in all.
- Made by
- KnockOutEZ (Towhid), open source with commercial licences available
- Licence
- AGPL-3.0-only
- Latest version
- 0.3.1 (26 Oct 2026)
- npm package
- wigolo
- GitHub stars
- 5.5K
- Downloads
- 1.1K a week
- Last commit
- 26 Oct 2026
- Tools
- 10
- Runs on
- Your computer
Our check: We ran this exact config on 27 Oct 2026: it started and answered with 10 tools.
What's in the pod: its tools
We found 10 tools when we started it on 27 Oct 2026. 7 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
Changes things3 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
cache | Searches everything already fetched, with no network call, and can clear the cache or check whether a page changed. |
fetch | Turns one URL into clean markdown, switching to a headless browser when a page needs JavaScript or blocks plain requests. Handles PDFs, single sections and simple page actions. |
watch | Keeps an eye on a URL and reports changes, optionally to a webhook. Watches survive restarts. |
Only reads7 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
agent | Plans and runs a whole gathering job from a plain-language request, with a step log and a time budget. |
crawl | Follows links from a starting page, or reads a sitemap, and returns many pages at once while respecting robots.txt and rate limits. |
diff | Shows what changed between two versions of a page or two pieces of markdown. |
extract | Pulls structured data out of a page: tables, metadata, JSON-LD, common schemas or a JSON Schema of your own. |
find_similar | Finds pages related to a URL or an idea, using the local cache plus a live search. |
research | Splits a question into smaller searches, reads the sources and returns a cited report, or the evidence alone if no model is set up. |
search | Searches the web across many engines at once, reranks the results and returns scored excerpts with citations. Takes several queries in parallel, domain filters and date ranges. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
How clearly it describes its tools to your assistant
- Tools with a description
- 10 of 10
- Say if they change things
- 10 of 10
- Context it takes, at least
- ~3,700 tokens
Every tool says whether it only reads or can change things, so a client can ask before the risky ones.
From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.
Set it up
- Run npx wigolo init once. It downloads the browser engine and models and checks each part. Add --agents=claude-code,cursor to write those clients' configs at the same time.
- Add the config below to any other client.
- Optional: set WIGOLO_LLM_PROVIDER and a matching key in env so the research and agent tools can write their own answers.
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"wigolo": {
"command": "npx",
"args": [
"-y",
"wigolo"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json wigolo '{"command":"npx","args":["-y","wigolo"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"wigolo": {
"command": "npx",
"args": [
"-y",
"wigolo"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"wigolo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"wigolo"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"wigolo": {
"command": "npx",
"args": [
"-y",
"wigolo"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
Run npx wigolo doctor if a tool reports a missing component. It names the part and the fix.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
WIGOLO_LLM_PROVIDEREnvironment variable | Which model writes the research and agent answers: gemini, anthropic, openai, groq, or ollama to stay local. Without it those tools return evidence only.gemini |
GEMINI_API_KEYEnvironment variable | The key for the provider you chose. Wigolo suggests a free Gemini key; other providers use their usual key variable. |
init --agentsCommand line flag | Sets up the local engine and writes MCP configs for the listed agents in one go.npx wigolo init --agents=claude-code,cursor |
init --no-warmupCommand line flag | Skips the big downloads until the first call that needs them. |
doctorCommand line flag | Checks each component and names the fix for anything missing.npx wigolo doctor |
What it can touch
It can read
- Public web pages and search engines
- Pages behind a login, if you give it a browser session to use
It can change
- Its own cache and models on your disk
- Webhooks you point watch at
Safer setup: Nothing leaves your machine except the web requests themselves, unless you set an LLM provider, which then sees the gathered text. Use Ollama to keep that local too.
Before you start
- Node.js 22 or newer
- About 1.5 GB of free disk for the browser engine and models
If it does not work
- A tool reports that a component is not ready
- Run npx wigolo doctor. Setup never fails on a bad download; it reports what is missing and how to fix it.
- research returns a brief instead of an answer
- That is the keyless behaviour. Set WIGOLO_LLM_PROVIDER and a key, or let your own assistant write the answer from the brief.
- Setup runs out of disk
- It needs about 1.5 GB for the browser engine and models. Free some space, or run init with --no-warmup to delay the downloads.
- You want to remove it
- npx wigolo config --uninstall --yes removes everything it installed.
Peas in a pod: similar servers
How Wigolo lines up against other browser and web data servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Wigolo | 10 | Your computer | AGPL-3.0-only | 5.5K |
| Perplexity MCP | 4 | Your computer or hosted | MIT | 2.6K |
| Tavily MCP | 5 | Your computer or hosted | MIT | 2.5K |
| Playwright MCP | 25 | Your computer | Apache-2.0 | 38.7K |
| Firecrawl | 28 | Your computer | MIT | 7.7K |
Questions
Is it really free?
Yes. The heavy parts run on your hardware, so there is no metered bill. It is AGPL-3.0; companies building products on it are asked to buy a commercial licence or sponsor the project.
How does it compare with Exa, Tavily or Firecrawl?
Those are hosted services with API keys and per-request pricing. Wigolo does similar jobs locally, at the cost of a large first download and your own CPU.
Does it work outside MCP?
Yes. Every tool also runs from the command line, over a REST API and through SDKs.
Is it stable?
The project calls itself a public beta. Releases come often, so pin a version for anything you depend on.
Something wrong on this page? Tell us.
