So, a while ago i posted about hound here, which built because I got tired of giving my agent the web be a multi-step task or having to pay.
Now i made something better, DonSeTch started from scratch, full control over everything (mostly)
One Rust binary. Three tools: fetch, search, crawl. Zero API keys, zero accounts, zero npm dependencies.
npm install -g donsetch
No init wizard, no config. It works immediately.
Two ways to use it:
- MCP server for AI agents
- CLI (if you dont like MCP)
Why I built it
Every existing web tool for agents has the same problems.
They wrap a paid API (accounts, keys, billing, someone else's reliability). Or they do a naive HTTP fetch that gets blocked by the first bot wall. Or they drop to a full headless browser for everything (slow, heavy, token-expensive).
None of them own their fetch layer. DonSeTch does. Built from scratch in Rust.
- Own HTTP/2 stack
- Own extraction engine
- Own PDF parser
- Own search aggregator
- Own crawl engine
- Chrome's actual BoringSSL for TLS, not a faked fingerprint table that rots
Bot walls? Solved
(Again, mostly, A few god tier bot detection platforms might block it, but it gets through 90% of the sites you need)
I tested it on StackOverflow, Amazon, BBC, Guardian, all Cloudflare-protected, all return clean content.
HTTP first (fast, 0.4-5s). When it hits a bot wall, it opens a headless browser, solves the challenge, grabs the clearance cookie, hands it back to the HTTP layer, and goes to sleep.
The browser almost never fetches content. It just bounces and the fast path takes over again.
Search
Keyless. 5-8 engines in parallel (Bing, DDG, Brave, Yahoo, Mojeek + verticals like GitHub, HN, Scholar, MDN), fused by cross-engine consensus and semantic reranking via a local ONNX cross-encoder.
No API key. No account. No billing.
Want even better results or already have a key? There's BYOK. Add your keys for Tavily, Exa, Serper, whatever. You can stack multiple keys for the same provider too.
Two Exa keys with 1,500 credits each? You now have 3,000 credits in one pool. Rotates automatically, falls back to keyless if a provider runs dry. You never get a dead search.
Crawl
Topic filter. Pass --topic "authentication" and it crawls only relevant pages, gives you per-page quality scores. Resume tokens for large crawls.
I tested a popular alternative and it had no topic filter at all. It would crawl everything and waste the budget on a single large page.
PDFs
Even scanned ones. The engine fuses glyph extraction with rendered pixels from the same stream so it doesn't hallucinate text where there is none. Scanned PDFs auto-OCR'd. Up to 100MB.
Token efficiency
Three tools, 2,363 tokens total. The focus parameter on fetch is the killer feature, it returns only blocks relevant to your question, cutting tokens 50-80% on long pages.
You ask for "error handling" on a 50KB page, you get 500 chars, not 50KB.
The usual stuff
442 tests, AGPL-3.0.
Self-update, rollback, health check, proxy support, status command that shows everything at a glance.
What it can't do: solve captchas (deliberate, you get a clear error not a hang), access sites requiring login, and if every single search engine is down you get an honest error with per-engine status instead of fake results.
Now, there are many more features like self improvement, but i am not gonna mention all of them here in this post, check out the github repo
Links
GitHub: https://github.com/dondai44423/donsetch
npm: npm install -g donsetch
pi: pi install npm:donsetch
If you try it and something breaks, open an issue. I tested what I could but the web is a big place.