god-search
v1.1.1
Published
Free unlimited universal web search — CloakBrowser + 7 engines + MCP
Readme
god-search
Cheap universal web search for AI agents. No required API keys by default. MCP, HTTP, and CLI.
$ god-search "rust async runtime" --limit 3
✓ ddg ✓ brave ✓ bing ✓ google ✓ reddit ✓ github ✓ wiki
⚡ 3/7 fast · 7/7 cached · <10ms
#1 score=28 doc.rust-lang.org
Async in Rust — official async/await guide
#2 score=21 tokio.rs
Tokio — An asynchronous runtime for Rust
#3 score=18 rust-lang.github.io
Asynchronous Programming in Rust — async bookWhy god-search
- No API keys — CloakBrowser stealth scraping + public JSON APIs
- 7 engines available — Google, Bing, DDG, Brave, Reddit, GitHub, Wikipedia
- Fast — API engines return in ~2s; browser engines finish in background, cache hit <10ms
- Smart ranking — cross-engine boost, domain diversity, official-source scoring
- Agent-native — CLI-first, ~80 tokens/call, zero MCP schema tax
- Persistent browser — daemon keeps CloakBrowser warm across all calls
- Honest degradation — challenged engines fail cleanly instead of pretending they worked
Requirements
- Node.js 18+
- Linux / macOS (CloakBrowser headless Chromium)
Install
npm install -g god-search # npm
pnpm add -g god-search # pnpm
bun install --global god-search # bun
# no install needed
npx god-search "your query"
bunx god-search "your query"Quick Start
god-search "rust async runtime"{
"query": "rust async runtime",
"results": [
{
"title": "Tokio",
"url": "https://tokio.rs",
"snippet": "Tokio is an asynchronous runtime for Rust...",
"score": 21,
"engines": ["ddg", "brave", "google"],
"rank": 1
}
],
"total": 10
}# Only the fields you need
god-search "rust async runtime" --limit 5 --fields=title,url,score
# Extract full page text
god-search extract https://tokio.rsHTTP Daemon
Start once — browser stays warm, all searches reuse it:
god-search serve
# ✓ listening on http://127.0.0.1:3847# Search
curl -s http://127.0.0.1:3847/search \
-H 'Content-Type: application/json' \
-d '{"query":"rust async runtime","limit":5}'
# Extract full page text
curl -s http://127.0.0.1:3847/extract \
-H 'Content-Type: application/json' \
-d '{"url":"https://tokio.rs"}'
# Health check
curl -s http://127.0.0.1:3847/health
# OpenAPI contract
curl -s http://127.0.0.1:3847/openapi.jsonAuto-start on login
mkdir -p ~/.config/systemd/user
curl -sO https://raw.githubusercontent.com/crackion-com/god-search/main/god-search.service
mv god-search.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now god-searchCLI Reference
| Command | Description |
|---|---|
| god-search "query" | Search — compact JSON to stdout |
| god-search "query" --limit N | Limit results (default: 10) |
| god-search "query" --fields=title,url,score | Return only specified fields |
| god-search "query" --verbose | Include engine stats + elapsed time |
| god-search extract <url> | Extract clean text from any URL |
| god-search serve | Start HTTP daemon on port 3847 |
| god-search mcp | Start MCP stdio server |
Hermes
Use god-search with Hermes as an MCP server, not as web.backend.
mcp_servers:
god_search:
command: "node"
args: ["/absolute/path/to/god-search-gpt/index.js", "mcp"]
tools:
include: [god_search, god_extract, god_health]Then enable the mcp-god_search toolset in Hermes and reload MCP.
Why this is the right integration:
- Hermes built-in
web.backendonly supportsfirecrawl,parallel,tavily, andexa god-searchalready exposes a clean MCP surface and a simple HTTP JSON contract- this keeps
god-searchas a cheap sidecar instead of forcing Hermes core changes
AI Agents (Codex, Claude Code, Cursor, OpenCode)
god-search is built for agents. There are now three supported integration modes:
- MCP for agents that want typed tools
- HTTP for agents that want a low-friction JSON API
- CLI for shell-driven agents and human debugging
The HTTP daemon gives you a warm browser with zero per-call overhead.
~80 tokens/call vs 1,500+ for equivalent MCP browser tools.
# Search
curl -s http://127.0.0.1:3847/search \
-H 'Content-Type: application/json' \
-d '{"query":"anthropic claude api","limit":5}'
# Extract a page
curl -s http://127.0.0.1:3847/extract \
-H 'Content-Type: application/json' \
-d '{"url":"https://docs.anthropic.com"}'# Add god-search as an agent skill (one-time)
cp node_modules/god-search/SKILL.md .claude/rules/god-search.md
# or
cp node_modules/god-search/SKILL.md .cursor/skills/god-search.mdIf daemon is down: systemctl --user start god-search
MCP
{
"mcpServers": {
"god-search": {
"command": "god-search",
"args": ["mcp"]
}
}
}MCP tools:
god_searchgod_extractgod_health
HTTP
HTTP routes:
GET /healthGET /openapi.jsonPOST /searchPOST /extract
/health returns daemon, cache, browser, and runtime state.
/openapi.json exposes the machine-readable contract for HTTP clients.
Engines
| Engine | Type | Best for | |---|---|---| | DuckDuckGo | CloakBrowser | Fast general results | | Brave | CloakBrowser or Brave Search API | Technical queries. Challenge-prone in scrape mode, disabled by default in merged search | | Bing | CloakBrowser | Broad coverage | | Google | CloakBrowser | Highest quality (CAPTCHA-prone) | | Reddit | JSON API | Community discussions | | GitHub | JSON API | Code & repositories | | Wikipedia | JSON API | Definitions & facts |
Brave is available but not included in the default merged engine set unless you explicitly enable it:
GOD_SEARCH_ENABLE_BRAVE=trueIf you want Brave without bot-detection issues, set a Brave Search API key and let auto mode use the official API:
BRAVE_SEARCH_API_KEY=...
GOD_SEARCH_BRAVE_MODE=auto # auto | api | scrapeWhen BRAVE_SEARCH_API_KEY is present, auto mode prefers:
https://api.search.brave.com/res/v1/web/searchSource:
- Brave Search API docs: https://brave.com/search/api/
How It Works
query → 6 engines fire in parallel (default — Brave disabled unless GOD_SEARCH_ENABLE_BRAVE=true)
├── Reddit ────┐
├── Wikipedia ─┤ fast (~1s): JSON API engines
├── GitHub ────┘ fast-path: quality-aware (intent + confidence + elapsed)
├── DDG ───────── background: CloakBrowser, finish + update cache
├── Bing ───────── background: CloakBrowser, finish + update cache
└── Google ──────── background: CloakBrowser, finish + update cache
[+ Brave] opt-in: GOD_SEARCH_ENABLE_BRAVE=true (scrape) or BRAVE_SEARCH_API_KEY=... (API)
results → cross-engine boost (+4/+8/+12 for shared URLs)
→ domain diversity (max 2 per domain)
→ score sort → return top N- LRU-TTL cache — 256 entries, 10min TTL; 1st request gets API engines (~2s), 2nd gets all active engines (<10ms)
- Browser isolation —
withBrowserPage()throttles to 2 concurrent CloakBrowser pages, prevents crashes - Auto-reconnect — browser restarts automatically on disconnect
MCP (opt-in)
For environments that require typed tool discovery, use the MCP server above.
Runtime Configuration
god-search-gpt can now be tuned without code edits:
GOD_SEARCH_HOST=127.0.0.1
GOD_SEARCH_PORT=3847
GOD_SEARCH_CACHE_TTL_MS=600000
GOD_SEARCH_CACHE_MAX_ENTRIES=256
GOD_SEARCH_FAST_PATH_MS=2000
GOD_SEARCH_FAST_PATH_MAX_MS=4500
GOD_SEARCH_FAST_PATH_POLL_MS=100
GOD_SEARCH_FAST_PATH_MIN_ENGINES=4
GOD_SEARCH_MAX_NAV=2
GOD_SEARCH_PREWARM_BROWSER=false
GOD_SEARCH_SEARCH_TIMEOUT_MS=10000
GOD_SEARCH_API_TIMEOUT_MS=8000
GOD_SEARCH_EXTRACT_TIMEOUT_MS=15000
GOD_SEARCH_MAX_CONTENT_CHARS=50000
GOD_SEARCH_MCP_HEALTH_TOOL=true
GOD_SEARCH_ENABLE_BRAVE=false
GOD_SEARCH_BRAVE_MODE=auto
BRAVE_SEARCH_API_KEY=
GOD_SEARCH_BRAVE_COUNTRY=us
GOD_SEARCH_BRAVE_SEARCH_LANG=enThe sample god-search.service now supports an optional environment file:
~/.config/god-search.envLicense
MIT © crackion
