One binary, thirteen backends, exit codes your agent can branch on
Wiring an agent to the web usually means a pile of provider SDKs, each with its own auth and response shape — ketch collapses search, code search, docs, and scraping into one stateless binary with a contract machines can parse.

What it does
ketch is a single Go binary exposing three research surfaces — general web search, code search across public repos, and version-aware library docs — plus scraping and crawling that turn HTML pages and text-based PDFs into clean markdown. No daemon, no API server: you call it, it answers, it exits. Every command takes --json, and the whole thing can also run as an MCP server over stdio, turning the same surfaces into agent tools.
The interesting bit
The design splits roles cleanly: an operator picks the backend once in config, and every agent invocation afterward just calls ketch search without knowing or caring which provider answers. Agents get a contract instead of prose — documented exit codes (2 bad input, 3 not found, 4 upstream failure, 5 missing precondition, 6 cancelled) for control flow, plus a single ketch config call that returns the effective configuration and active backends as JSON, so there’s no environment probing or help-text parsing. This is glue code over thirteen providers, and proudly so — the uniform interface is the product.
Key highlights
- Nine web-search backends (Brave, DuckDuckGo, SearXNG, Exa, Firecrawl, Keenable, Tavily, Parallel, SerpBase); several work with zero configuration
ketch codegreps live OSS source via Grep, Sourcegraph, or GitHub Code Search — no setup on the defaults--multifederates every usable backend and fuses rankings with Reciprocal Rank Fusion;--randomtries one and falls back to the rest, sparing rate limits- JS-shell pages (React/Vue/Svelte SPAs) are detected and re-fetched through headless Chrome, same output shape either way
- bbolt page cache (72h default TTL) makes repeat scrapes instant; Netscape
cookies.txtjars handle consent-walled pages on both the HTTP and browser paths
Caveats
- The default search backend (Brave) needs an API key, so web search isn’t zero-config until you switch backends or supply one
- Scanned, image-only PDFs return a precondition error — OCR is out of scope unless you wire up an external converter
- The
localdocs backend is listed as planned, not yet implemented
Verdict If you’re wiring agents into the web and tired of per-provider SDK glue — or you just want a fast terminal replacement for that research browser tab — ketch earns a slot in the toolbox. Skip it if you need a long-running service or heavy extraction pipelines; it’s deliberately a call-and-die tool.
Frequently asked
- What is 1broseidon/ketch?
- Wiring an agent to the web usually means a pile of provider SDKs, each with its own auth and response shape — ketch collapses search, code search, docs, and scraping into one stateless binary with a contract machines can parse.
- Is ketch open source?
- Yes — 1broseidon/ketch is open source, released under the MIT license.
- What language is ketch written in?
- 1broseidon/ketch is primarily written in Go.
- How popular is ketch?
- 1broseidon/ketch has 697 stars on GitHub and is currently accelerating.
- Where can I find ketch?
- 1broseidon/ketch is on GitHub at https://github.com/1broseidon/ketch.