AI search you can self-host. Web + Wikipedia + your files, with a clean multi-protocol API.
Apache 2.0 — run it yourself, plug in your own LLM key, no subscription.
- Perplexity-style web search agent (bring your own LLM — our gateway, or any OpenAI-compatible/Anthropic key) with streaming answers and inline citations.
- File / audio / video / PDF ingestion via the bundled job processor — uploaded media gets transcribed, parsed, and embedded into a searchable corpus (pgvector; ingest→embed pipeline landing, see issue #291).
- Two distribution surfaces: the chat Web UI and the
rhCLI (@protolabsai/rabbit-hole-cli:search,research,ingest,status) for fleet agents to shell out to. An OpenAI-compatible API is also exposed. - Optional Langfuse tracing.
The full graph / research workspace from earlier versions is being rebuilt. They're not part of the launch surface and are gated out of production builds; set NEXT_PUBLIC_ENABLE_RESEARCH_ATLAS=true if you want to poke at them in dev.
You need Docker with the Compose plugin and an LLM provider key.
git clone https://github.com/protoLabsAI/rabbit-hole.io.git
cd rabbit-hole.io
cp .env.example .env
# edit .env — set ANTHROPIC_API_KEY (or OPENAI_API_KEY)
docker compose up -dOpen http://localhost:3399.
What's running:
rabbit-hole— the Next.js search appjob-processor— file/audio/video ingest pipelinepostgres+postgres-jobs— sessions and the job queueminio+minio-init— object storage for uploaded files
What's not running by default:
- A web search backend. Without
SEARXNG_ENDPOINTset, the agent only has Wikipedia. Run SearXNG on your network and pointSEARXNG_ENDPOINTat it.
All env vars live in .env. The required ones:
ANTHROPIC_API_KEY=... # one of these is required
OPENAI_API_KEY=...
POSTGRES_PASSWORD=... # any string; defaults work for local
POSTGRES_JOB_PASSWORD=...
MINIO_ROOT_PASSWORD=...Recommended additions:
SEARXNG_ENDPOINT=http://searxng:8080 # enables web search beyond Wikipedia
GROQ_API_KEY=... # free Whisper transcription for audio uploadsSee .env.example for the full list.
pnpm install
pnpm run dev:rabbit-holeOpens on http://localhost:3399. You still need a Postgres + MinIO instance reachable; the docker-compose.yml will give you those and you can run the Next.js app on the host.
| Surface | Status |
|---|---|
Web search UI (/) |
shipping |
| Self-host docker-compose | shipping |
rh CLI (@protolabsai/rabbit-hole-cli) |
shipping |
OpenAI-compatible API (/v1/chat/completions) |
in progress |
| Corpus search (pgvector) | in progress (#291) |
| Research / Atlas workspace | rebuilding (dev flag) |
| Stripe-paid hosted tier | in progress |
The HTTP MCP server and standalone A2A endpoint from earlier versions are retired — fleet agents use the
rhCLI instead.
Apache 2.0 — see LICENSE.