Rabbit Holes is a local-first browser companion for learning on the internet.
It keeps the trail behind a research session: searches, pages, jumps, maps, timelines, and summaries. The extension is the product. The website is documentation, onboarding, and a viewer.
Rabbit Holes is not a hosted AI browser-history platform. It is closer to developer tooling like GitLens, Continue, Aider, Browser Use, or MCP Inspector:
- install the extension
- capture research locally
- bring your own AI provider
- keep your data portable
- self-host or hack on the stack if you want
The AI layer is provider-agnostic. The intended configuration shape is:
provider:
type: openrouter
apiKey: sk-or-...
model: anthropic/claude-sonnet-4Supported provider targets:
- OpenAI
- Anthropic
- OpenRouter
- Gemini
- Ollama
- LM Studio
- OpenAI-compatible endpoints
The model is an interchangeable component. Rabbit Holes owns the capture, investigation detection, replay, organization, and UX.
extension/ Chrome extension: capture, popup UI, local event trail.
web/ Next.js app: landing/docs, local settings, dashboard/viewer.
backend/ Legacy FastAPI prototype. Not required for the local-first core path.
Browser Extension
-> Rabbit Hole Core
-> Local Storage
-> AI Provider Adapter
-> Anthropic
-> OpenAI
-> OpenRouter
-> Gemini
-> Ollama
-> LM Studio
-> OpenAI-compatible
-> Optional Cloud Sync later
cd web
npm install
npm run devOpen http://localhost:3000.
- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select the
extension/folder. - Open Rabbit Holes settings and configure your AI provider.
The backend is no longer required for the staging product path. Capture, clustering, summaries, replay, maps, and settings are local-first. Keep the backend only as a legacy prototype or optional future sync/service experiment.
Do not commit API keys. User provider keys should live in local extension/app storage or an explicit self-hosted environment.