The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Vox Pop listing page.
9 platforms • Semantic routing • LLM intelligence layer • Works without API keys
Install • Quick Start • Platforms • How Routing Works • MCP Server • Claude Code Plugin • Roadmap
|
Without vox-pop |
With vox-pop |
That's it. All 9 platforms work with zero API keys. Optional LLM key unlocks smarter routing (see How Routing Works).
CLI — search all 9 platforms in one command:
Perspective mode — see how opinions evolved over time:
The shift tells a story: 2017 was a flame war. 2026 is domain-specific pragmatism.
Standard search — flat results from all platforms:
Python — embed in your own tools:
No tokens, no OAuth, no rate-limit headaches. Status is measured, not aspirational —
vox-pop platforms --check re-runs this against live endpoints.
Reddit and Lobsters are currently blocked. Both sit behind Anubis proof-of-work interstitials that serve a challenge page instead of content. This is not a configuration issue and no header change defeats it. Reddit support is being moved to the official OAuth API; Lobsters now reports the block explicitly rather than returning an empty result.
| Platform | Status | Source | Time Filter | Threads | |
|---|---|---|---|---|---|
| HackerNews | Working | Algolia Search API | Yes | Yes | |
| Blocked | Pullpush + Arctic Shift + Redlib fallback | Yes | — | ||
| 4chan | Working | Official JSON API (since 2012) | — | Yes | |
| Stack Exchange | Working | Official API — 180+ communities | Yes | Yes | |
| Telegram | Recent only | Public channel web preview (t.me/s/) | — | — | |
| Lobsters | Blocked | lobste.rs JSON API + search scraping | Yes | — | |
| Lemmy | Working | Public REST API — federated instances | Yes | Yes | |
| LessWrong | Working | GraphQL API | Yes | Yes | |
| XenForo Forums | Flaky | HTML scraping (Head-Fi, AnandTech, etc.) | — | — |
Queries can be anything — a single word, a paragraph, an essay-length D&D rules question. vox-pop understands them all through a four-tier routing system:
Tier 2 works like Perplexity/ChatGPT Search — the LLM rewrites your conversational query into a clean search string and picks the right communities. Set any of these env vars to enable:
Tier 3 runs entirely locally with zero API keys. A 33MB embedding model understands that "contradictory spell behaviour on a creature" means tabletop RPG rules — zero shared keywords needed. On first run, it fetches all 4chan boards and Stack Exchange sites dynamically, embeds everything, and caches to disk.
| Cold start | Warm start | Singleton | |
|---|---|---|---|
| Tier 3 timing | ~7s | ~1.3s | instant |
No configuration needed. If an LLM key is set, Tier 2 is used. Otherwise Tier 3 handles it. If fastembed isn't installed, Tier 4 (broad search) still works.
| Query | Routes to |
|---|---|
| "best hp laptop for linux" | r/buildapc, r/linux, r/hardware, /g/, SE:hardwarerecs, SE:askubuntu |
| "contradictory spell effects on a creature" | r/dndnext, r/DnD, /tg/, SE:rpg |
| "best mechanical keyboard for programming" | r/MechanicalKeyboards, /g/, SE:hardwarerecs |
| "what are the risks of yield farming" | r/CryptoCurrency, SE:tezos, telegram:ethereum |
| "how to make authentic kimchi jjigae" | r/Cooking, /ck/ |
Works with Claude Code, Cursor, Windsurf, and any MCP-compatible client.
Your LLM gets four tools:
| Tool | What it does |
|---|---|
search_opinions | Search all platforms for opinions on a topic |
search_opinions_perspective | Then vs Now — historical + recent opinions side by side |
get_thread_opinions | Dive into a specific thread's comments |
list_available_platforms | Check what's available and healthy |
The routing_hints parameter lets the calling LLM specify exactly where to search:
When no hints are provided, the routing system handles it automatically.
The skill auto-triggers when your question would benefit from real opinions. Just ask naturally:
Manual search: /vox-search "your query"
Each provider implements automatic fallback — if one source is down, the next is tried. Reddit alone has three fallback sources (Pullpush → Arctic Shift → Redlib).
| Version | Status | What |
|---|---|---|
| v0.1 | Shipped | 5 providers (HN, Reddit, 4chan, SE, Telegram), MCP server, Claude Code plugin |
| v0.2 | Current | 9 providers, 4-tier smart routing, LLM query rewriting, FastEmbed semantic routing, dynamic catalog |
| v0.3 | In progress | Reddit via official OAuth API — replaces the blocked Redlib path |
| v0.4 | Not started | Regional — DC Inside (Korea), Naver, 5ch (Japan) |
| Data access | Public data only — official APIs and public web endpoints. No login-wall scraping. |
| Credentials | Zero stored. Optional LLM keys passed via env vars at runtime, never written to disk. |
| LLM routing | When ANTHROPIC_API_KEY or OPENAI_API_KEY is set, your query text (up to 4000 chars) is sent to the respective LLM API for routing only. No queries are sent externally without an explicit API key. Without keys, routing runs entirely locally via FastEmbed. |
| Rate limits | Respected per-platform. Built-in concurrency guards. |
| User-Agent | Transparent: vox-pop/0.2 in all requests. |
| Caching | API responses (7 days) and embeddings cached locally at ~/.cache/vox-pop/. No data sent to third parties. Embeddings stored as JSON, no serialization dependencies. |
| PII | Author names from public posts included for attribution only. Never stored beyond the response. |
vox populi, vox dei
the voice of the people is the voice of god
MIT License