Connect a Server
Choose the server or catalog you use, then expand its guide for the steps. Sutra reads EPUB, PDF, DRM-free MOBI, and CBZ comic archives. CBR is not supported.
Calibre (desktop app)
- Open Calibre and open your library.
- Click Connect/share → Start Content server (or go to Preferences → Sharing → Sharing over the net).
- Turn on Require username and password and set credentials — otherwise anyone on your network can browse your library.
- Note your computer's IP address and the port shown (default 8080).
- In Sutra, tap Add Library, enter
http://<your-computer's-IP>:8080, and enter the username/password if you set one. Sutra detects Calibre automatically.
Calibre-Web
- Install Calibre-Web (the linuxserver/calibre-web Docker image is the most common route) and point it at your Calibre library folder.
- Sign in with the default admin account (admin / admin123) and change the password immediately.
- In Admin → Basic Configuration, you can require login for all access if you want the OPDS feed protected.
- The default port is 8083.
- In Sutra, tap Add Library, enter
http://<server-ip>:8083, and sign in with your Calibre-Web username/password.
Calibre-Web-Automated
- In CWA's admin settings, make sure Enable OPDS is on, and that your user has the Allow OPDS permission.
- The default port is 8084 (Calibre-Web's is 8083).
- In Sutra, tap Add Library, enter an address such as
http://<server-ip>:8084— adding/opdsyourself also works — and sign in with that account's credentials. - Behind a login page? If you reach CWA through a separate sign-in portal (Authelia, Authentik, Cloudflare Access, and the like), Sutra can't authenticate through it. Point Sutra at the server directly, or allow the OPDS path through the portal.
Kavita
- In Kavita, open Settings → 3rd Party Clients (OPDS) and copy your personal OPDS URL — it ends in
/api/opds/<your-key>. - In Sutra, tap Add Library and paste that URL.
- Sutra detects Kavita automatically and turns on page-accurate reading-progress sync with your server — no separate username/password is needed, since your API key is embedded in the URL.
Komga (Pro)
- In Komga, go to Settings → Users and note (or create) an account with access to the libraries you want in Sutra.
- In Sutra, tap Add Library and enter just the server's bare address — for example
http://192.168.1.50:25600, with no/opdspath after it — then sign in with that account's email and password. - Sutra finds Komga's OPDS catalog automatically from there.
- Don't paste a full OPDS URL you copied from elsewhere (one ending in
/opds/v2/catalogor similar). Sutra's address-completion expects to add the catalog path itself, and handing it an already-complete path can produce a “not found” error. If you've hit that, delete the library and re-add it with just the bare address. - Komga libraries (and their CBZ comics) require Sutra Pro.
WebDAV (Synology, Nextcloud, and others)
- Tap Add Library → WebDAV Server.
- Enter the server's address, username, and password. HTTPS is required by default — turn on Allow HTTP Connections in Settings → Network first if your server only supports plain
http://. - If the server uses a self-signed HTTPS certificate, Sutra shows its fingerprint the first time and asks you to confirm you trust it — a one-time check per server.
- Sutra lists every EPUB, PDF, CBZ, and MOBI file it finds in the folder tree. WebDAV is read-only in Sutra: books can be browsed and read, but not uploaded, renamed, or deleted.
- Synology DSM: enable the WebDAV package first — it commonly runs on a non-standard port (5006 by default), e.g.
https://<host>:5006.
Grimmory
- In Grimmory, go to Settings → OPDS and turn it on if it isn't already.
- Create a dedicated OPDS account (username + password) — this is separate from your normal Grimmory login, so you can revoke it later without affecting your main account.
- Note the OPDS endpoint shown (typically ending in
/api/v1/opds). - In Sutra, tap Add Library, enter your Grimmory server's URL, and sign in with the OPDS account's username and password — not your regular Grimmory login.
- Your Grimmory shelves appear automatically under Library's Collections sort — one entry per shelf, kept in sync with your server (read-only here).
Booklore
Grimmory is a community fork of Booklore, so the setup is nearly identical.
- In Booklore, go to Settings → OPDS and turn it on.
- Create a dedicated OPDS account, separate from your main login.
- In Sutra, tap Add Library, enter your Booklore server's URL, and sign in with the OPDS account's credentials.
OPDShelf
- If you're prompted for a username/password, ask whoever runs the server. It is set once, via
ADMIN_USERNAME/ADMIN_PASSWORD, when the server was started — many setups run with no login at all. - In Sutra, tap Add Library and enter the server's address and port (default 3000), e.g.
http://192.168.1.50:3000.
BookOrbit
- In BookOrbit, go to Settings → OPDS, and turn on OPDS Catalog Server if it's off.
- Create an OPDS account (username, password, and a default sort order) — separate from your normal BookOrbit login.
- Give that account the OPDS access permission.
- Copy the endpoint URL shown on that screen.
- In Sutra, tap Add Library, paste that URL, and sign in with the OPDS account's credentials.
Audiobookshelf
Audiobookshelf doesn't have a built-in OPDS feed, so Sutra can't connect to it directly — and Sutra can only ever read ebooks from it (EPUB, PDF, MOBI), never play audiobooks. You'll need a small, separate, community-maintained bridge (not affiliated with Sutra or Audiobookshelf) that turns your Audiobookshelf library into an OPDS feed — one option is abs-opds.
- Set up the bridge (commonly via Docker Compose) alongside your Audiobookshelf server, pointing it at your Audiobookshelf server's URL.
- It serves its own OPDS feed, by default at
http://<bridge-ip>:3010/opds. - Depending on how it's configured, sign in with either your normal Audiobookshelf username/password, or separate credentials the bridge's admin set up for it.
- In Sutra, tap Add Library and enter the bridge's URL — not Audiobookshelf's own address.
Getting Started
How do I connect to a Kavita server?
In Kavita, open Settings → 3rd Party Clients (OPDS) and copy your personal OPDS URL — it ends in /api/opds/<your-key>. In Sutra, tap Add Library, paste that URL, and tap Connect. Sutra detects Kavita automatically and turns on page-accurate progress sync with your server.
How do I connect to a Calibre server?
Sutra works with the Calibre Content Server and calibre-web over OPDS. Start your server, then in Sutra tap Add Library and enter its address (for example http://192.168.1.5:8080). If it asks for a username and password, add them. Sutra finds the /opds feed automatically — you don't need the full path.
How do I add free books from Project Gutenberg?
Tap Add Library → Project Gutenberg — no account needed. The most popular titles appear in your Library, and Search reaches the whole 75,000-book catalog. Downloads are standard EPUBs you can read offline.
How do I add Standard Ebooks?
Tap Add Library → Standard Ebooks. No server address is needed — it's a built-in preset, like Gutenberg. Leave the email field blank for the free public catalog, or enter the email you used to become a Patrons Circle member to unlock the full collection.
How are CBZ files from Kavita and Komga streamed?
CBZ comics from Kavita and Komga are streamed page by page by default when you open them, so Sutra doesn't download the entire comic before you can start reading. To download the complete CBZ for offline reading, open the book's detail page and tap the Download button.
How do I enable CBZ streaming in Komga?
The Komga account you use in Sutra must have the Page Streaming permission enabled. In Komga, open Settings → Users, edit that account, and turn on Page Streaming. The account must also be allowed to access the library containing the comics. Without this permission, Sutra cannot request individual pages and will offer the complete CBZ download instead.
How do I refresh my libraries?
Pull down from the top of the Library screen and release. Sutra re-syncs every connected library at once — watch each server's green status dot on the Settings screen turn into a spinner while it's refreshing.
How do I connect to a WebDAV server?
Tap Add Library → WebDAV Server and enter the server's address, username, and password (for example, a Synology NAS's WebDAV share or Nextcloud). Sutra browses the folder tree and lists EPUB, PDF, CBZ, and MOBI files it finds. If the server uses a self-signed HTTPS certificate, Sutra shows its fingerprint the first time and asks you to confirm you trust it before connecting — this is a one-time check per server. WebDAV is read-only in Sutra: books can be browsed and read, but not uploaded, renamed, or deleted.
Which file formats are supported?
Sutra reads EPUB and PDF for free. CBZ comic archives and DRM-free MOBI need Sutra Pro (a one-time purchase — see below). DRM-protected files can't be opened — only files you're free to read without restriction. Sutra doesn't endorse piracy: it's built for content you already own or have the legal right to read, and takes no responsibility for the files you load. CBR isn't supported.
What does Sutra Pro unlock?
Sutra Pro is a one-time $6.99 purchase — no subscription. It unlocks Komga libraries, CBZ comic archives, and DRM-free MOBI books. Everything else — Calibre, Kavita, Project Gutenberg, Standard Ebooks, and EPUB/PDF reading — stays free forever. Tap Upgrade to Sutra Pro in Settings, or Restore Purchase if you've already bought it on another device.
How does Panel Mode work?
CBZ comics, scanned PDF comics, and fixed-layout comic EPUB/MOBI files always open on the full page — Sutra detects each page's panel layout automatically. Tap the toggle button (▦ ⟷ ▭) to jump to a cropped, one-panel-at-a-time view, and tap it again anytime to zoom back out. Pages where no panels are detected just show as full pages, so nothing is ever hidden.
Why can't I select text spanning more than one page?
In Paginated mode, a drag can either extend a text selection or turn the page — Sutra locks page-turning while you're actively selecting so the two don't fight each other, but that also means a selection can't be dragged past the edge of the current page. If you need to select a longer passage that crosses a page break, open the reader's display options and turn off Paginated (EPUB) or Paged (PDF) to switch to scroll mode, select across as much text as you like, then switch back.
Why does my library appear instantly now, even before it's done syncing?
Sutra now remembers each library's books on your device, so reopening the app shows your shelf immediately instead of waiting on a fresh crawl — especially noticeable on large self-hosted libraries. It still syncs with your server in the background right away; anything that changed (new books, removed ones) updates automatically once that finishes.
How do I browse by author, series, collection, or favorites?
Tap the sort icon on the Library tab (next to the search bar) and choose Author, Series, or Collections — each shows a tappable list of groups (with a book count) instead of the usual grid; tap one to see its books. Favorites shows your hearted books directly, as a flat grid, since there's only ever one Favorites group. This replaces the old separate Shelf tab — everything it had (your collections, Favorites, series grouping, and any server-provided shelves) now lives under Library's sort menu instead.
Can I hide certain libraries from a server, without disconnecting it?
Yes — in Settings → Libraries, tap the server, then check the Libraries section on its detail screen. Every library that server exposes appears there with a checkbox; unchecking one hides just its books from Sutra without disconnecting the server or affecting anyone else who uses it. Selection syncs across your devices via iCloud, the same as reading progress.
Troubleshooting
Sutra can't reach my server.
Make sure your device is on the same network as the server (or connected via VPN / Tailscale for remote access), and double-check the address, port, and any username/password. Opening the same URL in Safari is a quick way to confirm the server is reachable.
Using Tailscale? Enter your server's MagicDNS name (something like myserver.tailnet-name.ts.net) instead of its raw 100.x.x.x address. Sutra can only connect over plain HTTP using that hostname — the numeric Tailscale address needs HTTPS configured on your server to work. This is an iOS restriction (App Transport Security), not a Sutra setting — turning on Allow HTTP Connections in Settings → Network doesn't change it.
Using Headscale, NetBird, ZeroTier, or another mesh VPN? Same rule: a hostname works over plain HTTP if the VPN gives you one (Headscale's MagicDNS, if you've set up your own base domain), but a raw IP from any of these needs HTTPS on your server.
No books show up after connecting.
Sutra syncs every connected library automatically each time you open the app — if you don't want to wait, pull down in the Library to resync all of them, or go to Settings → Libraries, tap the server, and tap Sync to refresh just that one. Confirm the server actually has books Sutra can read — EPUB, PDF, DRM-free MOBI, or CBZ. A library that's entirely CBR comics will show a “not in a format Sutra supports” message. Very large catalogs load in the background — give it a moment.
Online search returns nothing.
Some servers don't support server-side search; Sutra still filters the books it has loaded. Searching Gutenberg or other online catalogs requires an internet connection. If a source fails, the reason now appears under Online Catalogs in the results.
Project Gutenberg books aren't loading.
Gutenberg's free catalog is served by community services (the Gutendex API and gutenberg.org) that sometimes go down for maintenance or get slow. Sutra automatically falls back between them, but if both are unavailable you'll see a “couldn't reach” message — just try again later and pull down to refresh. Your own Kavita/Calibre libraries and any downloaded books are unaffected.
Why am I only seeing a small number of books in the grid when I add Gutenberg?
That's expected — Sutra's Gutenberg Library grid only shows an initial pull of its most popular titles (around 30), not the whole catalog. The rest of Gutenberg's roughly 75,000 books are there — use Search to reach the full catalog by title or author, and download anything you find from the results.
My reading position isn't syncing.
Kavita syncs page-accurate progress with its own server automatically. For every other library, turn on iCloud Progress Sync in Settings and make sure you're signed into iCloud on each device. Reflowable EPUBs sync your overall position; PDFs sync the exact page.
Some covers show a warning triangle and won't open.
That means Sutra couldn't reach that book's library on the most recent sync — the cover still shows (from what was loaded last time) so you know it exists, but there's nothing to actually read until the connection recovers. Tap the book for the option to sync again right away. If a library stays unreachable across two app opens in a row, its books are hidden from the Library grid entirely (already-downloaded books stay available regardless) — nothing is deleted, and they reappear automatically the next time that library syncs successfully.