Web Search
Nginjen includes a built-in self-contained web search engine. No API keys, no external paid services. Zero cost.
Backends
| Backend | CLI Flag | Source | Notes |
|---|---|---|---|
| DuckDuckGo Lite | --backend lite | HTML scraper | Default. No API key. |
| Bing | --backend bing | HTML scraper | cite-breadcrumb URL extraction |
| Brave | --backend brave | HTML scraper | Clean URLs, no tracking redirects |
| Meta | --backend meta | All 3 concurrently | Interleave + dedupe results |
| SearXNG | --backend searxng | Self-hosted aggregator | Requires SearXNG instance |
CLI Usage
bash
# DuckDuckGo (default)
nginjen search "rust async runtime"
# Meta-search (all backends, interleaved)
nginjen search "rust async" --backend meta --limit 20
# Brave only
nginjen search "best rust crates" --backend brave --limit 5API Usage
bash
curl -X POST http://127.0.0.1:9090/search \
-H 'content-type: application/json' \
-d '{
"query": "rust web scraping",
"limit": 10,
"backend": "meta"
}'Response:
json
{
"results": [
{
"title": "Web Scraping in Rust",
"url": "https://example.com/rust-scraping",
"snippet": "A comprehensive guide to..."
}
],
"total": 10,
"backend": "meta"
}Meta-Search Strategy
When you use --backend meta, Nginjen fans out to DuckDuckGo, Bing, and Brave concurrently, then:
- Collects results from all three
- Interleaves them in round-robin order
- Deduplicates by normalized URL
- Returns up to
limitresults
This gives broader coverage than any single backend.
SearXNG Integration (Optional)
For even broader coverage, connect Nginjen to a self-hosted SearXNG instance:
bash
# Quick SearXNG setup
cd integrations/hermes/searxng-setup
echo "SEARXNG_SECRET=$(openssl rand -hex 32)" > .env
docker compose up -dThen in your config:
toml
[search]
backend = "searxng"
searxng_url = "http://localhost:8080"SearXNG aggregates dozens of search engines, giving you the widest possible coverage through a single API.