Show HN: An Open-Source E-Book Reader for Conversational Reading with an LLM

9 takigon 2 8/6/2025, 1:01:36 PM github.com ↗
Hi HN! I've been working on BookWith, an open-source e-book reader that integrates AI as your reading companion.

The problem: Traditional e-readers are passive. When you encounter something unclear, you have to context-switch to search for it. Your highlights and notes remain isolated, and you can't easily connect ideas across different books.

My solution: BookWith embeds an AI that maintains full context of what you're reading. It features:

- Context-aware AI chat: Ask questions about the current page/chapter and get instant answers

- AI podcast generation: Automatically converts book content into conversational podcasts using Google Cloud TTS

- Multi-layer memory system: Short-term (last 5 conversations), mid-term (summarized every 20), and long-term (vector search) memory that maintains continuity across reading sessions

- Smart annotations: 5-color highlighting system that AI can reference and analyze

Technical stack: Built as a fork of Flow (epub reader), with added LLM integration and vector database for semantic search. Supports multiple LLMs and languages (EN/JA/ZH).

Comments (2)

Finnucane · 1h ago
"By conversing with an AI that fully understands the book's content in real time,"

That seems like a maybe a wee bit of an overstatement of possibilities.

takigon · 22m ago
You're right to call that out, that's a fair point. "Fully understands" is indeed a bit of an overstatement for the current state of AI.

What I meant from a technical perspective is that the system uses a Retrieval-Augmented Generation (RAG) approach. It has the entire book's content available in a vector database, and when you ask a question, it performs a semantic search to pull the most relevant passages in real-time to use as context for the LLM's answer.

So, from a user's perspective, the experience is designed to feel like you're conversing with an expert who can instantly recall any part of the book. I should have used more precise language. Thanks for keeping me honest!