CMDV Reader for iPhone and iPad
Your library, on your terms.
A reader for the books you already own, on the server you already run. Point it at Calibre-Web, Komga, Kavita, COPS, or anything that speaks OPDS, and read what it finds there.
- EPUB · PDF · CBZ · FB2
- OPDS 1.2 and 2.0
- No account
- No telemetry
- Open source, MPL-2.0
- iOS 18
Why it exists
It is a client, not a store.
Reading apps come in two kinds. The polished ones want you inside their store and treat the books you already own as an afterthought. The self-hosting ones respect your library but are built by developers for developers, and it shows. CMDV Reader is for the person who already runs Calibre-Web on a machine in a cupboard and wants an app that treats that as the point rather than a workaround.
What makes it different
Built so you never lose what you've done.
Annotations that outlive your files
Delete a download and the highlights stay. Re-download the book, even a different edition or a re-converted file, and they find their way back, matched by identity, then by content, then by the words themselves. A highlight that genuinely cannot be placed is kept and flagged, never quietly deleted.
Statistics that don't flatter you
Idle time is excluded rather than capped, so a book left open on a table contributes nothing. Reading speed is a median across sessions with outliers thrown out. Streaks have a forgiving mode, because a strict one punishes people for having a life.
Sync you own
A small server you run yourself keeps positions, highlights, sessions, and settings in step across devices. Everything is encrypted on the device under a key derived from a passphrase only you hold, so the server cannot read what it stores. Book files and catalogue passwords never sync.
Everything is exportable
Highlights as Markdown, Obsidian-flavoured Markdown, Readwise CSV, or JSON. Everything else as one documented ZIP of plain JSON you can read with any tool, with an import that actually restores it. Backups run weekly by default, to a folder you choose.
It reads aloud
System voices with sentence or word follow-along, a sleep timer, lock-screen controls, background audio, and chapter auto-advance. Nothing being read leaves the device.
Search inside your books
Full text across every book in your library through a local index that can be rebuilt or cleared without touching the library. Search across your annotations too.
A proper reading experience
Paged or scrolling, full typography controls, and four themes (Day, Sepia, Night, True Black) with WCAG AA contrast. Literata, Atkinson Hyperlegible, and OpenDyslexic are bundled, with a one-tap dyslexia-friendly preset. Global defaults with per-book overrides. Comics get left-to-right and right-to-left, double-page spreads, fit modes, pinch zoom, and vertical webtoon mode.
Signs in the way your server does
Username and password, Digest, bearer token, single sign-on through a web view for Authentik, Authelia, or Cloudflare Access, and self-signed certificates you verify by fingerprint and the app then pins. Credentials live in the device keychain and are never exported or synced.
Open source
Licensed under MPL-2.0. If the app ever stops being maintained, the source is there, and so is your data in a format any tool can read.
Features
The full list.
| Formats | EPUB 2 and 3 (reflowable and fixed-layout), PDF, CBZ comics, FB2 |
|---|---|
| Catalogues | OPDS 1.2 and 2.0, multiple servers, search, pagination |
| Sign-in | Username and password, Digest, bearer token, single sign-on through a web view, self-signed certificates verified by fingerprint |
| Reading | Paged or scrolling, typography controls, four themes, bundled Literata, Atkinson Hyperlegible, and OpenDyslexic, global defaults with per-book overrides |
| Comics | Left-to-right and right-to-left, double-page spreads, fit modes, pinch zoom, vertical webtoon |
| Annotations | Highlights, underlines, strikethrough, notes, bookmarks, five renamable colours |
| Search | Full text inside your books, and across your annotations |
| Statistics | Time, words, pages, reading pace, a 30-day chart, streaks, daily goals, per-book finish-by dates |
| Speech | System voices, follow-along highlighting, sleep timer, background audio |
| Portability | Annotation export in four formats, full backup and restore, scheduled |
| Sync | Self-hosted, end-to-end encrypted, per-device tokens, individually revocable |
| Accessibility | VoiceOver, Dynamic Type, WCAG AA contrast in every theme |
What it deliberately does not do
Said plainly.
- No store, no catalogue, no recommendations. It has nothing to sell you.
- No account. There is nothing to sign up for.
- No telemetry. Not "anonymised" telemetry. None.
- No DRM. It cannot open books from Kindle, Apple Books, Kobo, or any library-lending app.
- No MOBI or AZW3. Convert with Calibre. It is one step.
- No PDF reflow. PDFs are fixed pages, because that is what a PDF is.
- No cloud. Sync is a server you run. If you do not run one, nothing leaves the device.
Known limits
Stated rather than hidden.
- Scanned PDFs with no text layer cannot be searched, indexed, or spoken.
- Comics have no text, so no highlights, search, or speech. They do get bookmarks, progress, statistics, and sync.
- Comic page streaming (OPDS-PSE) is not implemented. A comic a server offers only for streaming shows in the catalogue with nothing to do.
- Calibre-Web Automated is the reference server and the only one tested against a live instance. Komga, Kavita, and COPS are built to their published specifications and have not yet been verified against the real thing.
- Books come from your catalogue or from a restored backup. There is no "open from Files" import yet.
- Word counts are estimates, within about a percent on a novel of known length. Reading pace inherits that.
- If you lose every device and your sync passphrase, synced history is unrecoverable. Not through support, not through the server operator. That is the point of the encryption, and the app says so at setup.
Requirements
What you need.
| Device | iPhone or iPad, iOS 18 or later |
|---|---|
| Library | A server that speaks OPDS, which you supply. Calibre-Web, Calibre-Web Automated, Komga, Kavita, or COPS. |
| Sync | Optional. The sync server is a small open-source service you run yourself. |
| Source | github.com/marc2912/CMDV-Reader, MPL-2.0 |
| Help | Support · Privacy policy |