EPUB reader with coding agent integration. Uses your existing CLI subscription (Copilot, Claude Code, Codex, Gemini).
pnpm install
cp server/.env.example server/.env
cp client/.env.example client/.env
pnpm dev
Client runs on http://localhost:5173
, server on http://localhost:3002
.
Study Modeβ Three-panel layout: chapter sidebar on the left, raw XHTML content in the center, AI chat / notes / highlights on the right. Panels are resizable and collapsible.
Reader Modeβ Paginated EPUB rendering viaepub.js. Single-column view with page turns, three themes (light, sepia, dark), adjustable font size. AI and highlights accessible via slide-over panel on text selection.
Chat with an AI agent about what you're reading. The agent has read-only access to the book's content and can reference any chapter.
- Works with any provider: Anthropic, GitHub Copilot, Google Gemini, OpenAI Codex
- Authenticate through existing CLI subscriptions β no extra API keys needed
The AI agent can search the web via Exa for information beyond the book's content. Set EXA_API_KEY
in server/.env
and VITE_WEB_SEARCH=true
in client/.env
(see setup above). A globe icon appears next to the chat input to toggle it.
-
Select text to highlight it (visually marked in reader mode)
-
Take markdown notes per chapter
-
All highlights and notes persist locally
-
Import any
.epub
file
Everything lives in ~/.readingisfun/
~/.readingisfun/
βββ auth.json # OAuth tokens
βββ uploads/ # Original EPUB files
βββ books/{bookId}/
βββ manifest.json # Book metadata & chapter index
βββ progress.json # Reading percentage & last CFI position
βββ images/ # Extracted images
βββ chapters/{N}/
βββ raw.html # Chapter content (EPUB XHTML body)
βββ metadata.json # Title, word count, image refs
βββ notes.md # Your notes
βββ highlights.json # Your highlights
βββ chats/ # AI chat sessions