gitwtfhub

wtf is rabbithole?

shlokkhemani/rabbithole — explained in plain English

Analysis updated 2026-05-18

288JavaScriptAudience · vibe coderComplexity · 2/5Setup · easy

TL;DR

An infinite canvas where selecting text and asking a question opens the answer as a new connected document, so you can follow your curiosity as deep as it goes.

Mindmap

mindmap
  root((Rabbithole))
    What it does
      Select text ask a question
      Answer opens as new document
      Branches saved and revisitable
    Tech stack
      JavaScript
      Node 18+
      MCP
      IndexedDB
    Use cases
      Research a topic deeply
      Explore a PDF or URL
      Agent driven Q and A
    Audience
      Vibe coders
      Terminal agent users
      Curious readers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Research a topic by branching off any sentence into a new explained document.

REASON 2

Set up an MCP server so Claude Code or Codex can answer questions inside a visual canvas.

REASON 3

Drop in a PDF or URL and explore it interactively instead of reading top to bottom.

REASON 4

Self-host the static web build to keep documents and API keys fully local.

What's in the stack?

JavaScriptNode.jsMCPIndexedDBCloudflare Workers

How it stacks up

shlokkhemani/rabbitholespupuz/vibenvrnevertoday/zhongguo-traditional-colors
Stars288287285
LanguageJavaScriptJavaScriptJavaScript
Setup difficultyeasymoderateeasy
Complexity2/53/51/5
Audiencevibe codergeneraldesigner

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Needs an OpenRouter API key for the web app, or a local model server like Ollama for the no-key option.

Wtf does this do

Rabbithole is a tool for exploring a topic by following your curiosity. You open a document, select any piece of text, ask a question about it, and the answer opens as a new document connected to the spot you selected. You can keep doing this as many times as you like, going deeper into whatever interests you, and every one of these branches is saved so you can come back to it later. There are two ways to use it. The first is a web app at rabbithole.ing. You bring your own OpenRouter key, or point it at a model running on your own computer through something like Ollama or LM Studio, and everything, including your documents and your API key, stays in your browser. There is no account and no backend server involved. You can start from a PDF, a Markdown file, a URL, or just a question. The second way is as an MCP server, which lets AI coding agents like Claude Code or Codex answer your questions instead of a model you configure yourself. In this mode, the agent runs the server on your own machine and gives itself a canvas in your browser to work in. You install it with a single command, then tell your agent to open a document in Rabbithole, and a browser tab appears where you can select text and ask questions as before. The project ships with a reader mode for fullscreen reading with a sidebar of your branches, answers that stream in as they are written, and support for rich Markdown including math, code, and diagrams. You can also import a PDF directly, with selectable text and the ability to select regions of a page rather than just text. It is built in JavaScript, requires Node 18 or newer to run locally, and can be self-hosted as a static site since the browser build has no backend of its own. The full README is longer than what was shown.

Yoink these prompts

Prompt 1
Set up Rabbithole as an MCP server for Claude Code and open this document in it.
Prompt 2
Explain how Rabbithole keeps my API key and documents inside the browser instead of sending them to a backend.
Prompt 3
Walk me through running the Rabbithole web app locally with npm install and npm run build.
Prompt 4
Show me how to import a PDF into Rabbithole and use text selection to ask questions about it.

Frequently asked questions

wtf is rabbithole?

An infinite canvas where selecting text and asking a question opens the answer as a new connected document, so you can follow your curiosity as deep as it goes.

What language is rabbithole written in?

Mainly JavaScript. The stack also includes JavaScript, Node.js, MCP.

How hard is rabbithole to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is rabbithole for?

Mainly vibe coder.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.