Open-source native macOS AI reading workspace for PDF, EPUB, and TXT with highlights, notes, inline rewriting, book chat, browser panes, and local-first storage.
Swift
0
9 commits
updated Sep 19, 2026
An open-source, native AI reading workspace for macOS.
Reader keeps the book, your notes, web research, and an AI conversation in one quiet workspace. Import PDF, EPUB, and TXT files; read in a native interface; highlight and annotate passages; simplify difficult writing; ask questions about a selection, the current page, everything up to your position, or the whole book; and open chat, a dictionary, or the web beside the text.
The library and reading experience are local-first. Books, progress, highlights, notes, search, and saved conversations remain usable without an account or backend. Supabase sync and AI features are optional additions.
This monorepo contains the native Reader app and its optional Hono, Supabase, and Vercel backend.
Requires macOS 15 or later and Xcode 16 or later. Open Reader.xcodeproj
in Xcode and run the Reader scheme. Node.js and backend credentials are not
required to build the native app. Cloud and AI features need a backend. The
checked-in backend URL is the local Vercel development address at
http://127.0.0.1:3000; it never sends a fork to maintainer infrastructure.
Follow SETUP.md to create your own Supabase and Vercel projects and
point the app at them.
From Terminal:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild \
-project Reader.xcodeproj \
-scheme Reader \
-destination 'platform=macOS' \
CODE_SIGNING_ALLOWED=NO \
build test
The project is generated with XcodeGen:
xcodegen generate
The generated .xcodeproj is committed so XcodeGen is helpful, not required, for someone opening the app.
Install and check the backend from the same repository root:
make setup
make backend-check
Run the backend locally through Vercel:
make backend-link
make backend-dev
Deploy a preview from the same root:
make backend-preview
Run both native and backend checks:
make check
The backend package has more detail in Backend/README.md.
The complete app-only and cloud setup is in SETUP.md.
I know you're just having your agent run this, so here's a guide made specifically for it lol: AGENT_SETUP.md.
Reader/ Native Swift and SwiftUI source
ReaderTests/ Native tests
Backend/ Hono, Supabase, and Vercel backend
TestCorpus/ Reproducible public-domain format corpus
The app owns a shared Reader Core for search, locators, selections, annotations, progress intent, and capabilities. Format adapters translate those concepts into the rendering primitive that fits:
SwiftUI reading experience
└── Reader Core
├── PDF adapter → PDFKit
└── Reflowable adapter → owned EPUB/TXT parser + hardened WKWebView
Reader uses ZIPFoundation for archive extraction and GRDB for SQLite persistence. Rendering remains owned by Reader through PDFKit and its EPUB/TXT WebKit adapter.
Reader is built natively in Swift, making it easy to bring to iOS and iPadOS; that goal guides technical decisions so one shared codebase can support macOS, iOS, and iPadOS.
See CONTRIBUTING.md for the development workflow and contribution terms.
Reader is open source under the MIT License. You may use, copy, modify, publish, distribute, sublicense, and sell copies of the software subject to the license terms.
9 commits
Swift
75.3%
TypeScript
12.9%
PLpgSQL
7.7%
JavaScript
3.7%
Open-source native macOS AI reading workspace for PDF, EPUB, and TXT with highlights, notes, inline rewriting, book chat, browser panes, and local-first storage.
Swift
0
9 commits
updated Sep 19, 2026
An open-source, native AI reading workspace for macOS.
Reader keeps the book, your notes, web research, and an AI conversation in one quiet workspace. Import PDF, EPUB, and TXT files; read in a native interface; highlight and annotate passages; simplify difficult writing; ask questions about a selection, the current page, everything up to your position, or the whole book; and open chat, a dictionary, or the web beside the text.
The library and reading experience are local-first. Books, progress, highlights, notes, search, and saved conversations remain usable without an account or backend. Supabase sync and AI features are optional additions.
This monorepo contains the native Reader app and its optional Hono, Supabase, and Vercel backend.
Requires macOS 15 or later and Xcode 16 or later. Open Reader.xcodeproj
in Xcode and run the Reader scheme. Node.js and backend credentials are not
required to build the native app. Cloud and AI features need a backend. The
checked-in backend URL is the local Vercel development address at
http://127.0.0.1:3000; it never sends a fork to maintainer infrastructure.
Follow SETUP.md to create your own Supabase and Vercel projects and
point the app at them.
From Terminal:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild \
-project Reader.xcodeproj \
-scheme Reader \
-destination 'platform=macOS' \
CODE_SIGNING_ALLOWED=NO \
build test
The project is generated with XcodeGen:
xcodegen generate
The generated .xcodeproj is committed so XcodeGen is helpful, not required, for someone opening the app.
Install and check the backend from the same repository root:
make setup
make backend-check
Run the backend locally through Vercel:
make backend-link
make backend-dev
Deploy a preview from the same root:
make backend-preview
Run both native and backend checks:
make check
The backend package has more detail in Backend/README.md.
The complete app-only and cloud setup is in SETUP.md.
I know you're just having your agent run this, so here's a guide made specifically for it lol: AGENT_SETUP.md.
Reader/ Native Swift and SwiftUI source
ReaderTests/ Native tests
Backend/ Hono, Supabase, and Vercel backend
TestCorpus/ Reproducible public-domain format corpus
The app owns a shared Reader Core for search, locators, selections, annotations, progress intent, and capabilities. Format adapters translate those concepts into the rendering primitive that fits:
SwiftUI reading experience
└── Reader Core
├── PDF adapter → PDFKit
└── Reflowable adapter → owned EPUB/TXT parser + hardened WKWebView
Reader uses ZIPFoundation for archive extraction and GRDB for SQLite persistence. Rendering remains owned by Reader through PDFKit and its EPUB/TXT WebKit adapter.
Reader is built natively in Swift, making it easy to bring to iOS and iPadOS; that goal guides technical decisions so one shared codebase can support macOS, iOS, and iPadOS.
See CONTRIBUTING.md for the development workflow and contribution terms.
Reader is open source under the MIT License. You may use, copy, modify, publish, distribute, sublicense, and sell copies of the software subject to the license terms.
9 commits
Swift
75.3%
TypeScript
12.9%
PLpgSQL
7.7%
JavaScript
3.7%