{"repo":"KnockOutEZ/wigolo","free":true,"listed":false,"github":"https://github.com/KnockOutEZ/wigolo","clone":"git clone https://github.com/KnockOutEZ/wigolo.git","description":"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.","language":"TypeScript","stars":4563,"topics":["agent","ai","ai-agent","claude","cli","developer-tools","local-first","mcp","mcp-server","metasearch","model-context-protocol","nodejs","privacy","rag","search","search-engine","typescript","web-crawler","web-scraping","web-search"],"license":null,"category":"dev_tool","readme_excerpt":"<div align=\"center\">\n\n<img alt=\"wigolo — the go-to web for your agent\" src=\"assets/brand/wigolo-banner.png\" width=\"640\">\n\nLocal-first web intelligence for AI agents — **no keys, no cloud, no metered bill.**\n\n<sub>works with&nbsp;&nbsp;**Claude Code · Cursor · Codex · Gemini CLI · OpenCode · VS Code · Windsurf · Zed · Antigravity**</sub>\n<br>\n<sub>and beyond&nbsp;&nbsp;**LangChain · CrewAI · LlamaIndex · Vercel AI SDK · n8n & self-hosted agents · any MCP client · plain REST**</sub>\n\n[![npm](https://img.shields.io/npm/v/wigolo?color=cb3837&logo=npm)](https://www.npmjs.com/package/wigolo)\n[![npm downloads](https://img.shields.io/npm/dm/wigolo?color=cb3837&logo=npm&label=downloads)](https://www.npmjs.com/package/wigolo)\n[![GitHub stars](https://img.shields.io/github/stars/KnockOutEZ/wigolo?style=flat&logo=github&color=e3b341)](https://github.com/KnockOutEZ/wigolo/stargazers)\n[![CI](https://img.shields.io/github/actions/workflow/status/KnockOutEZ/wigolo/ci.yml?branch=main&logo=github&label=CI)](https://github.com/KnockOutEZ/wigolo/actions/workflows/ci.yml)\n[![node](https://img.shields.io/badge/node-%E2%89%A520-339933?logo=node.js&logoColor=white)](https://nodejs.org)\n[![MCP](https://img.shields.io/badge/MCP-server-7c3aed)](https://modelcontextprotocol.io)\n[![license](https://img.shields.io/badge/license-AGPL--3.0-2563eb)](#license)\n[![status](https://img.shields.io/badge/status-public%20beta-b7791f)](#beta--feedback)\n[![follow on X](https://img.shields.io/badge/follow-%40yourtowhid-000000?logo=x&logoColor=white)](https://x.com/yourtowhid)\n\n<a href=\"https://trendshift.io/repositories/79424?utm_source=repository-badge&utm_medium=badge&utm_campaign=badge-repository-79424\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/79424\" alt=\"wigolo on Trendshift\" width=\"250\" height=\"55\"/></a>\n<a href=\"https://trendshift.io/repositories/79424?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-79424\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://trendshift.io/api/badge/trendshift/repositories/79424/daily?language=TypeScript\" alt=\"KnockOutEZ%2Fwigolo | Trendshift\" width=\"250\" height=\"55\"/></a>\n\n[Quickstart](#quickstart) · [Tools](#tools) · [Why wigolo](#why-its-different) · [Benchmark](#benchmark) · [Docs](docs/README.md) · [Examples](examples/README.md) · [Feedback](#beta--feedback) · [FAQ](#faq)\n\nNew features and updates ship steadily. Follow <a href=\"https://x.com/yourtowhid\"><b>@yourtowhid on X</b></a> for all of it and new ways to use wigolo, and reach out there for collaborations or feedback · also on <a href=\"https://www.linkedin.com/in/yourtowhid/\">LinkedIn</a>\n\n</div>\n\n---\n\nwigolo gives an AI agent one surface for everything web-related: **search, fetch, crawl, extract, cache, find-similar, research,** and autonomous gather loops. It runs wherever your agent runs — as an MCP server next to your coding agent, as a REST/MCP endpoint on the box where your self-hosted agents live, or embedded through an SDK inside your own app. The core tools need no API keys, nothing it touches leaves `~/.wigolo/`, and no bill grows with how much your agent thinks.\n\n<div align=\"center\">\n\n<img alt=\"wigolo demo — Claude Code answering a live web question through wigolo, no API keys\" src=\"assets/wigolo-demo.gif\" width=\"800\">\n\n</div>\n\n## Quickstart\n\n```bash\nnpx wigolo init                              # set up the local engine — any system\nnpx wigolo init --agents=claude-code,cursor  # …or set up + wire your day-to-day agents in one command\n```\n\nRequires **Node ≥ 20** and ~1.5 GB of free disk on macOS, Linux, or Windows. Bare `init` sets up the local engine: it downloads the browser engine and on-device models, runs a health check, and reports each component. Adding `--agents` wires the named agents in the same run, so a coding agent you use daily is ready in one command.\n\n- **Supported agents** — `--agents` takes any of `claude-code` · `cursor` · `codex` · `gemini-cli` · `opencode` · `vscode` · `windsurf` · `zed` · `antigravity` (comma-separated); wigolo writes the MCP config and, where supported, instructions for each.\n- **Any other setup** — any MCP client, agent framework, or self-hosted agent registers `npx -y wigolo` in its own MCP config. The [installation guide](docs/installation.md) has the exact config block for every client, plus Docker, Homebrew, and single-file-binary channels.\n- **More on the way** — the supported list keeps growing, and a PR to add your agent is welcome; see [CONTRIBUTING.md](CONTRIBUTING.md).\n- **Interactive setup** — `--interactive` is a plain-text flow; `--wizard` is the full terminal TUI.\n- **Defer downloads** — `--no-warmup` waits until first use. A failed component download never fails setup; init reports what's not ready with the exact fix and still completes.\n\n`init` is unattended by default, so it's safe in scripts and CI, and any setup problem surfaces right here in the per-component report, before your agent's first call. **Search, fetch, crawl, extract, cache, and find-similar work with no API key.** Check it's healthy anytime:\n\n```bash\nnpx wigolo doctor\n```\n\nTo remove everything cleanly, run `npx wigolo config --uninstall --yes`. You can also paste the [installation guide](docs/installation.md) into any AI assistant and let it do the setup; it's written to be self-contained.\n\n### Recommended — a free key for `research` & `agent`\n\nSearch, fetch, crawl, extract, cache, and find-similar are **fully keyless**. `research`, `agent`, and `search format=answer` use an LLM to write the synthesized, cited answer. Without one they hand back a raw brief and evidence for your agent to assemble. A free Gemini key turns that into a finished answer:\n\n```bash\nexport WIGOLO_LLM_PROVIDER=gemini\nexport GEMINI_API_KEY=<free-key>      # grab one at aistudio.google.com/apikey — the free tier is plenty\n```\n\nAny provider works (`anthropic` · `openai` · `groq`), or stay fully local and keyless with `WIGOLO_LLM_PROVIDER=ollama` (or any OpenAI-compatible URL). Set it in your shell or your agent's MCP `env` block. Providers, models, and the keyless local-model ladder are in the [configuration guide](docs/configuration.md).\n\n## What your agent gets back\n\nEvery search result is evidence the agent can act on. It carries a verbatim excerpt pinned to its exact position in the source, a citation ID the agent can quote, and a score it can inspect (abridged real shape):\n\n```jsonc\n{\n  \"results\": [{\n    \"title\": \"Logical replication - PostgreSQL docs\",\n    \"url\": \"https://www.postgresql.org/docs/current/logical-replication.html\",\n    \"excerpt\": \"Logical replication is a method of replicating data objects…\",\n    \"citation_id\": \"src-1\",\n    \"source_span\": { \"start\": 1042, \"end\": 1305 },          // byte-exact provenance\n    \"evidence_score\": { \"final\": 0.86, \"semantic\": 0.91, \"lexical\": 0.78, \"engine_consensus\": 3 }\n  }],\n  \"citations\": [{ \"id\": \"src-1\", \"url\": \"…\" }],\n  \"freshness_signal\": { \"published\": \"2026-05-12\", \"confidence\": \"high\" }\n}\n```\n\nWeak results get flagged as junk by wigolo's own scorer. Failed engines are reported and stale cache is labeled, so the agent always knows what it's standing on. Full response contracts per tool are in the [tools reference](docs/tools.md).\n\n## Tools\n\n| Tool | What it does |\n|------|--------------|\n| 🔎 `search` | Multi-engine web search (18 direct adapters) with rank fusion, ML reranking, and an explainable per-result score. Pass a query **array** for parallel breadth. Scope by domain and time range, match an exact phrase, or return image results. |\n| 📄 `fetch` | Load one URL through a tiered router that auto-escalates from plain HTTP to a headless browser engine on anti-bot challenges or SPA shells. Clean markdown + metadata + links. Handles PDFs, a single-heading `section`, authenticated sessions, and page actions (click / type / scroll / screenshot). |\n| 🕸️ `crawl` | Multi-page crawl — BFS, DFS, sitemap, or map-only. Per-domain rate limits, robots.txt respect, boilerplate dedup. |\n| 🧩 `extract` | Structured data from a page: tables, metadata, JSON-LD, brand identity, named schemas (Article / Recipe / Product / …), or any custom JSON Schema. |\n| 💾 `cache` | Query everything already seen — keyword or hybrid semantic. Plus stats, clear, and change detection. |\n| 🧲 `find_similar` | Pages similar to a URL or a concept, via 3-way fusion of keyword + semantic + live web. |\n| 🧠 `research` | Decompose a question → fan out sub-queries → fetch sources → synthesize a cited report (or a structured brief the host LLM writes from). |\n| 🤖 `agent` | Autonomous gather loop: plan → search → fetch → extract → synthesize, with a step log, time budget, and optional output schema. |\n| 🔁 `diff` + ⏱️ `watch` | See exactly what changed on a page since last visit; re-check on demand and deliver changes to a webhook. |\n\nEvery tool also runs from the terminal (`wigolo search \"…\" --json`), from an interactive shell with NDJSON piping (`wigolo shell`), over REST, and through the SDKs — [CLI reference](docs/cli.md). Per-tool guides with the full parameter set are in [docs/tools.md](docs/tools.md); runnable examples are in [examples/](examples/README.md).\n\n## Why it's different\n\nwigolo isn't a free stand-in for the paid tools — it's built to match them. It's a focused web layer for your agents: an MCP and REST surface they call directly, with the search and extraction quality the paid services charge for. What separates it:\n\n- **Built for agents.** One MCP call fans out many queries across many engines in parallel, which a serial host tool-loop can't replicate. Every result carries transparent per-result scoring, and output is budget-aware.\n- **Honest output.** Stale cache, failed fetches, degraded backends, and truncation are surfaced in the result. When a bot-protected page can't be read, you get a labeled `blocked_by_challenge` failure, not a challenge shell returned as content.\n- **$0 per query, free to re-query.** Default search talks to public engines through di","default_branch":"main","files":1658,"tree":[".dockerignore",".gitattributes",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/feature_request.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/workflows/agent-benchmark.yml",".github/workflows/binary-build.yml",".github/workflows/ci.yml",".github/workflows/docker-publish.yml",".github/workflows/extraction-benchmark.yml",".github/workflows/release.yml",".github/workflows/search-benchmark.yml",".github/workflows/site.yml",".github/workflows/star-chart.yml",".gitignore","CHANGELOG.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Dockerfile","LICENSE","Makefile","README.md","SECURITY.md","SKILL.md","TRADEMARK.md","assets/blocks/claude-code/CLAUDE.md.block","assets/blocks/claude-code/wigolo-command.md","assets/blocks/codex/AGENTS.md.block","assets/blocks/cursor/wigolo.mdc","assets/blocks/gemini-cli/GEMINI.md.block","assets/blocks/vscode/copilot-instructions.md.block","assets/blocks/windsurf/mcp_config.json.block","assets/blocks/windsurf/rules-global.md","assets/blocks/windsurf/rules-project.md","assets/blocks/zed/settings.json.block","assets/brand/README.md","assets/brand/generate.cjs","assets/brand/wigolo-400.png","assets/brand/wigolo-banner.png","assets/brand/wigolo-icon.png","assets/brand/wigolo-social.png","assets/brand/wigolo-wordmark-dark.png","assets/brand/wigolo-wordmark-light.png","assets/legacy-skill-hashes.json","assets/promo/anatomy-dark.svg","assets/promo/anatomy.svg","assets/promo/ask-twice-dark.svg","assets/promo/ask-twice.svg","assets/promo/fusion-dark.svg","assets/promo/fusion.svg","assets/promo/ladder-dark.svg","assets/promo/ladder.svg","assets/promo/meter-dark.svg","assets/promo/meter.svg","assets/promo/social/ask-twice.gif","assets/promo/social/ask-twice.mp4","assets/promo/social/meter.gif","assets/promo/social/meter.mp4","assets/promo/social/wigolo-launch-60s.mp4","assets/promo/stars-dark.svg","assets/promo/stars.svg","assets/wigolo-demo-poster.png","assets/wigolo-demo.gif","assets/wigolo-demo.mp4","assets/wigolo-demo.webm","assets/wigolo-vs-poster.png","assets/wigolo-vs.gif","assets/wigolo-vs.mp4","assets/wigolo-vs.webm","benchmarks/agent/evaluator.ts","benchmarks/agent/fixtures/expected.json","benchmarks/agent/fixtures/tasks.json","benchmarks/agent/metrics.ts","benchmarks/agent/report.ts","benchmarks/agent/runner.ts","benchmarks/agent/task-executor.ts","benchmarks/agent/types.ts","benchmarks/baselines/_skip-reasons.md","benchmarks/baselines/extraction-pre-v1.txt","benchmarks/baselines/search-pre-v1.txt","benchmarks/baselines/v1-dependency-checks.json","benchmarks/embedding/runner.ts","benchmarks/extraction/fixtures/golden/api-001.md","benchmarks/extraction/fixtures/golden/article-001.md","benchmarks/extraction/fixtures/golden/article-002.md","benchmarks/extraction/fixtures/golden/article-003.md","benchmarks/extraction/fixtures/golden/blog-001.md","benchmarks/extraction/fixtures/golden/changelog-001.md","benchmarks/extraction/fixtures/golden/code-001.md","benchmarks/extraction/fixtures/golden/docs-001.md","benchmarks/extraction/fixtures/golden/docs-002.md","benchmarks/extraction/fixtures/golden/docs-003.md","benchmarks/extraction/fixtures/golden/example-article.md","benchmarks/extraction/fixtures/golden/github-001.md","benchmarks/extraction/fixtures/golden/github-002.md","benchmarks/extraction/fixtures/golden/github-003.md","benchmarks/extraction/fixtures/golden/reference-001.md","benchmarks/extraction/fixtures/golden/so-001.md","benchmarks/extraction/fixtures/golden/so-002.md","benchmarks/extraction/fixtures/golden/spa-001.md","benchmarks/extraction/fixtures/golden/table-001.md","benchmarks/extraction/fixtures/golden/tutorial-001.md","benchmarks/extraction/fixtures/golden/wiki-001.md","benchmarks/extraction/fixtures/manifest.json","benchmarks/extraction/metrics.ts","benchmarks/extraction/per-category.ts","benchmarks/extraction/report.ts","benchmarks/extraction/runner.ts","benchmarks/extraction/tokenizer.ts","benchmarks/extraction/types.ts","benchmarks/perf/tool-latency.ts","benchmarks/search/fixtures/queries.json","benchmarks/search/fixtures/relevance.json","benchmarks/search/metrics.ts","benchmarks/search/mock-engine.ts","benchmarks/search/report.ts","benchmarks/search/rerank-quality.ts","benchmarks/search/runner.ts","benchmarks/search/types.ts","docs/README.md","docs/cli.md","docs/configuration.md","docs/getting-started.md","docs/installation.md","docs/plugins.md","docs/privacy-security.md","docs/rest-api.md","docs/sdks.md","docs/self-hosting.md","docs/skills.md","docs/tools.md","docs/troubleshooting.md","examples/README.md","examples/n8n-remote-mcp/README.md","examples/n8n-remote-mcp/workflow.json","examples/one-shot-cli/README.md","examples/one-shot-cli/demo.gif","examples/one-shot-cli/demo.tape","examples/one-shot-cli/run.sh","examples/plugin-search-engine/README.md","examples/plugin-search-engine/index.mjs","examples/plugin-search-engine/package.json","examples/quickstart-claude-code/README.md","examples/quickstart-claude-code/demo.gif","examples/quickstart-claude-code/demo.tape","examples/rest-curl/README.md","examples/rest-curl/demo.sh","examples/sdk-python-agent/README.md","examples/sdk-python-agent/gather.py","examples/sdk-typescript-research/README.md","examples/sdk-typescript-research/package-lock.json","examples/sdk-typescript-research/package.json","examples/sdk-typescript-research/research.mjs","examples/shell-ndjson-pipeline/README.md","examples/shell-ndjson-pipeline/demo.gif","examples/shell-ndjson-pipeline/demo.tape","examples/shell-ndjson-pipeline/pipeline.sh","examples/vercel-ai-sdk-tools/README.md","examples/vercel-ai-sdk-tools/package-lock.json","examples/vercel-ai-sdk-tools/package.json","examples/vercel-ai-sdk-tools/tools.ts","examples/vercel-ai-sdk-tools/tsconfig.json","examples/watch-changelog-webhook/README.md","examples/watch-changelog-webhook/watch.sh","glama.json","llms.txt","mcp.json","mcpb/manifest.json","mcpb/server/index.cjs","package-lock.json","package.json","packages/wigolo-crewai/README.md","packages/wigolo-crewai/pyproject.toml","packages/wigolo-crewai/tests/__init__.py","packages/wigolo-crewai/tests/conftest.py","packages/wigolo-crewai/tests/test_core.py","packages/wigolo-crewai/tests/test_tools.py","packages/wigolo-crewai/wigolo_crewai/__init__.py","packages/wigolo-crewai/wigolo_crewai/_core.py","packages/wigolo-crewai/wigolo_crewai/tools.py","packages/wigolo-crewai/wigolo_crewai/types.py","packages/wigolo-langchain/README.md","packages/wigolo-langchain/pyproject.toml","packages/wigolo-langchain/tests/__init__.py","packages/wigolo-langchain/tests/conftest.py","packages/wigolo-langchain/tests/test_client.py","packages/wigolo-langchain/tests/test_retrievers.py","packages/wigolo-langchain/tests/test_tools.py","packages/wigolo-langchain/wigolo_langchain/__init__.py","packages/wigolo-langchain/wigolo_langchain/client.py","packages/wigolo-langchain/wigolo_langchain/retrievers.py","packages/wigolo-langchain/wigolo_langchain/tools.py","packages/wigolo-langchain/wigolo_langchain/types.py","packages/wigolo-llamaindex/README.md","packages/wigolo-llamaindex/pyproject.toml","packages/wigolo-llamaindex/tests/__init__.py","packages/wigolo-llamaindex/tests/conftest.py","packages/wigolo-llamaindex/tests/test_client.py","packages/wigolo-llamaindex/tests/test_reader.py","packages/wigolo-llamaindex/wigolo_llamaindex/__init__.py","packages/wigolo-llamaindex/wigolo_llamaindex/client.py","packages/wigolo-llamaindex/wigolo_llamaindex/reader.py","packages/wigolo-llamaindex/wigolo_llamaindex/types.py","packages/wigolo-vercel-ai-sdk/README.md","packages/wigolo-vercel-ai-sdk/package-lock.json","packages/wigolo-vercel-ai-sdk/package.json","packages/wigolo-vercel-ai-sdk/src/client.ts","packages/wigolo-vercel-ai-sdk/src/index.ts","packages/wigolo-vercel-ai-sdk/src/tools.ts","packages/wigolo-vercel-ai-sdk/src/types.ts","packages/wigolo-vercel-ai-sdk/tests/client.test.ts","packages/wigolo-vercel-ai-sdk/tests/tools.test.ts","packages/wigolo-vercel-ai-sdk/tsconfig.json","packages/wigolo-vercel-ai-sdk/vitest.config.ts","packaging/RELEASE-RUNBOOK.md","packaging/binary/bundle.mjs","packaging/binary/pack.sh","packaging/binary/pkg.config.json","packaging/binary/react-devtools-core-stub.mjs","packaging/compose.serve.yml","packaging/homebrew/wigolo.rb","packaging/install.sh","packaging/verification/binary.md","packaging/verification/brew.md","packaging/verification/docker.md","packaging/verification/npm.md","packaging/verification/sh.md","scripts/gen-legacy-skill-hashes.mjs","scripts/run-sdk-py-tests.mjs","scripts/star-chart.mjs","scripts/verify-channel-binary.sh","scripts/verify-channel-brew.sh","scripts/verify-channel-docker.sh","scripts/verify-channel-npm.sh","scripts/verify-channel-rest.sh","scripts/verify-channel-sh.sh","scripts/verify-sdks.sh","sdks/python/.gitignore","sdks/python/LICENSE","sdks/python/README.md","sdks/python/conftest.py","sdks/python/pyproject.toml","sdks/python/src/wigolo/__init__.py","sdks/python/src/wigolo/_aio.py","sdks/python/src/wigolo/_client.py","sdks/python/src/wigolo/_errors.py","sdks/python/src/wigolo/_local.py","sdks/python/src/wigolo/_manifest.py","sdks/python/src/wigolo/py.typed","sdks/python/tests/_fake_serve.py","sdks/python/tests/conftest.py","sdks/python/tests/test_integration.py","sdks/python/tests/test_integration_local.py","sdks/python/tests/test_package_build.py","sdks/python/tests/test_runtime_drift.py","sdks/python/tests/test_unit_async.py","sdks/python/tests/test_unit_env_and_surface.py","sdks/python/tests/test_unit_local.py","sdks/python/tests/test_unit_transport.py","sdks/typescript/.gitignore","sdks/typescript/LICENSE","sdks/typescript/README.md","sdks/typescript/package-lock.json","sdks/typescript/package.json","sdks/typescript/src/client.ts","sdks/typescript/src/errors.ts","sdks/typescript/src/index.ts","sdks/typescript/src/local.ts","sdks/typescript/src/manifest.ts","sdks/typescript/src/node-shims.d.ts","sdks/typescript/src/types.ts","sdks/typescript/tests/client.unit.test.ts","sdks/typescript/tests/drift.type-test.ts","sdks/typescript/tests/embedded.test.ts","sdks/typescript/tests/helpers.ts","sdks/typescript/tests/integration.test.ts","sdks/typescript/tests/local.unit.test.ts","sdks/typescript/tests/runtime-drift.test.ts","sdks/typescript/tests/serve-harness.ts","sdks/typescript/tsconfig.base.json","sdks/typescript/tsconfig.json","sdks/typescript/tsconfig.test.json","sdks/typescript/vitest.config.ts","site/.gitignore","site/AGENTS.md","site/README.md","site/eslint.config.mjs","site/next.config.ts","site/package-lock.json","site/package.json","site/public/googlecee3369f8bd7780f.html","site/public/llms.txt","site/public/promo/anatomy-dark.svg","site/public/promo/anatomy.svg","site/public/promo/ask-twice-dark.svg","site/public/promo/ask-twice.svg","site/public/promo/fusion-dark.svg","site/public/promo/fusion.svg","site/public/promo/ladder-dark.svg","site/public/promo/ladder.svg","site/public/promo/meter-dark.svg","site/public/promo/meter.svg","site/public/robots.txt","site/public/sitemap.xml","site/public/wigolo/wigolo-demo-poster.png","site/public/wigolo/wigolo-demo.mp4","site/public/wigolo/wigolo-demo.webm","site/public/wigolo/wigolo-icon.png","site/public/wigolo/wigolo-social.png","site/public/wigolo/wigolo-wordmark-dark.png","site/public/wigolo/wigolo-wordmark-light.png","site/src/app/docs/[slug]/page.tsx","site/src/app/docs/page.tsx","site/src/app/favicon.ico","site/src/app/globals.css","site/src/app/layout.tsx","site/src/app/page.tsx","site/src/components/AnnouncementBar.module.css","site/src/components/AnnouncementBar.tsx","site/src/components/FeatureMarquee.module.css","site/src/components/FeatureMarquee.tsx","site/src/components/Feedback.module.css","site/src/components/Feedback.tsx","site/src/components/Footer.module.css","site/src/components/Footer.tsx","site/src/components/Hero.module.css","site/src/components/Hero.tsx","site/src/components/HowItWorks.module.css","site/src/components/HowItWorks.tsx","site/src/components/Nav.module.css","site/src/components/Nav.tsx","site/src/components/OpenSource.module.css","site/src/components/OpenSource.tsx","site/src/components/Parity.module.css","site/src/components/Parity.tsx","site/src/components/Quickstart.module.css","site/src/components/Quickstart.tsx","site/src/components/Reveal.tsx","site/src/components/StartShipping.module.css","site/src/components/StartShipping.tsx","site/src/components/Stats.module.css","site/src/components/Stats.tsx","site/src/components/Testimonials.module.css","site/src/components/Testimonials.tsx","site/src/components/Tools.module.css","site/src/components/Tools.tsx","site/src/components/TrustedBy.module.css","site/src/components/TrustedBy.tsx","site/src/components/docs/DocMarkdown.module.css","site/src/components/docs/DocMarkdown.tsx","site/src/components/docs/DocShell.module.css","site/src/components/docs/DocShell.tsx","site/src/components/docs/DocsSidebar.module.css","site/src/components/docs/DocsSidebar.tsx","site/src/lib/docs.ts","site/src/lib/site.ts","site/tsconfig.json","skills/wigolo-agent/SKILL.md","skills/wigolo-cache/SKILL.md","skills/wigolo-crawl/SKILL.md","skills/wigolo-diff/SKILL.md","skills/wigolo-extract/SKILL.md","skills/wigolo-fetch/SKILL.md","skills/wigolo-find-similar/SKILL.md","skills/wigolo-research/SKILL.md","skills/wigolo-search/SKILL.md","skills/wigolo-watch/SKILL.md","skills/wigolo/SKILL.md","skills/wigolo/rules/cache-first.md","skills/wigolo/rules/synthesis.md","smithery.yaml","src/agent/executor.ts","src/agent/pipeline.ts","src/agent/planner.ts","src/agent/rank.ts","src/agent/relevance.ts","src/cache/backfill-embeddings.ts","src/cache/change-detector.ts","src/cache/db.ts","src/cache/diff-engine.ts","src/cache/diff-summary.ts","src/cache/lcs.ts","src/cache/migrations/001-sqlite-vec.sql","src/cache/migrations/002-feed-items.sql","src/cache/migrations/003-crawl-etags.sql","src/cache/migrations/004-watch-jobs.sql","src/cache/migrations/005-tls-routing.sql","src/cache/migrations/006-url-cache-http-status.sql","src/cache/migrations/007-drop-lp-routing.sql","src/cache/migrations/008-antibot-clearance.sql","src/cache/migrations/010-clearance-route.sql","src/cache/migrations/runner.ts","src/cache/sqlite-vec-store.ts","src/cache/store.ts","src/cli/agents/antigravity.ts","src/cli/agents/claude-code.ts"],"storefront":"/r/KnockOutEZ","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/KnockOutEZ/wigolo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}