A personal knowledge companion for serious readers. Open Citadel helps you collect, organise, and action the insights, highlights, and thoughts that come from the books, blogs, and podcasts you consume — so nothing valuable gets lost.
Built with Expo / React Native. Android-first, iOS coming.
Most reading apps stop at reading. Open Citadel treats the reader as a starting point, not an end point. Every highlight, bookmark, and stray thought you capture while reading feeds into a unified timeline — your personal knowledge base, organised by date and tagged however you like.
Library
- Sync your EPUB library from a local folder on your device (Android Storage Access Framework)
- Automatic metadata enrichment — title, author, cover pulled from the book file
- Organise books into collections, mark favourites, archive finished reads
- Queue and reading progress tracked per book
Reader
- Full EPUB reader powered by the Readium toolkit
- Dark, light, and sepia themes; custom font size and margins
- Highlight text with colour-coded highlights
- Bookmark pages
- Table of contents navigation
- Text-to-Speech — listen to any book with a single tap, follows your reading position
Timeline
- A chronological feed of everything you capture: highlights, bookmarks, and your own thoughts
- Add freeform thoughts at any time, tag them, link them back to a book
- Filter by date with a calendar picker
- Edit or delete any entry
Samwell — AI Reading Companion
- On-device LLM powered by React Native ExecuTorch (offline & private)
- Samwell persona injected at the system level — he knows he's a reading companion
- Pick from a curated list of on-device brains (Gemma 4 E2B, Qwen, LFM, SmolLM2, Hammer) and download it inside the app
- Start a chat from any highlight in the reader — context is carried into the conversation
- Attach a book to a chat session for passage-level context
- Model lifecycle controls: Wake Up / Power Down, status indicator in the chat header
Settings
- Choose your EPUB library folder
- Reader appearance preferences (theme, font, size, margins)
- Samwell AI section: brain picker, offline vs cloud mode
| Layer | Choice |
|---|---|
| Framework | Expo 55 / React Native 0.83 |
| Navigation | Expo Router (file-based) |
| Database | Expo SQLite + Drizzle ORM |
| State | Zustand |
| Reader | @dr33m/react-native-readium (Readium fork) |
| TTS | Readium Navigator Media TTS (Android platform TextToSpeech) |
| Sync | Custom SAF-based sync coordinator |
- Node 20+
- pnpm 10+
- Android: JDK 17, Android SDK with
compileSdkVersion>= 31 - iOS: Xcode 16.2+, iOS deployment target >= 13.4
pnpm installnpx expo start --tunnel --cleareas build --platform android --local --profile development# Preview APK
eas build --profile preview --platform android
# Production
eas build --profile production --platform androidsrc/
app/ # Expo Router screens
(tabs)/ # Tab navigator: Timeline, Library, Settings
reader/[id] # Full-screen reader
collection/[id] # Collection detail
section/[type] # Library section views (queue, favourites, archived)
components/
library/ # Library UI components
reader/ # Reader UI (header, TTS controls, selection bar, highlights)
timeline/ # Timeline entries and thought sheet
ui/ # Shared primitives
db/ # Drizzle schema and migrations
services/ # Sync pipeline (SAF scan → metadata → DB)
stores/ # Zustand stores (books, collections, reader, timeline, settings)
constants/ # Theme tokens
- EPUB library sync from device folder
- Full Readium-powered reader
- Highlights with colour coding
- Bookmarks
- Text-to-Speech
- Thoughts — capture and tag freeform notes linked to books
- Collections and library organisation
- On-device LLM via React Native ExecuTorch — offline and private
- Samwell persona — system prompt gives him identity as your reading companion
- Curated on-device brains — pick one, download it, all in-app
- Highlight-to-chat — start a conversation from any reader selection with full context
- Book context — attach a book to a session so Samwell can reference it
- Export as image — share highlights and thoughts as styled PNG cards with book cover, notes, and Open Citadel branding (dark & light theme)
- Tool calling — let Samwell query your local database to pull in your highlights, thoughts, and notes, and read relevant passages from books in your library, so his answers are grounded in your actual reading
- Add podcast feeds (RSS)
- In-app player with chapter support
- Capture timestamped highlights while listening
- Thoughts and highlights flow into the same timeline
- Add articles by URL or RSS feed
- Distraction-free reader view
- Highlights and thoughts sync to timeline
- Archive for offline reading
Copyright (C) 2026 Thamsanqa Ncube
Open Citadel is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for the full text.