Skip to content

OPDS

OPDS (Open Publication Distribution System) lets you browse and download books from your Grimmory library using any OPDS-compatible reading app. Point your app at Grimmory’s catalog URL, authenticate, and your full library is available on any device: e-readers, tablets, phones.

Grimmory also provides a Komga-compatible API for apps that speak the Komga protocol (Tachiyomi, Komelia, etc.), which is especially useful for comic/manga readers that support per-page streaming of CBX files. Both APIs share the same user accounts and respect library access permissions.


Go to Settings > OPDS in Grimmory. The top section has two toggles:

Grimmory OPDS Configuration page showing server toggles, endpoint URLs, and OPDS user management

OPDS Server Enabled activates the standard OPDS catalog at /api/v1/opds. This is what most reading apps connect to.

Komga API activates the Komga-compatible API at /komga/api/. Enable this if you use Tachiyomi, Komelia, or other Komga clients. It uses the same OPDS user accounts for authentication.

When the Komga API is enabled, an additional toggle appears:

  • Group Unknown Series: When on, books without a series are grouped under “Unknown Series.” When off, each standalone book appears as its own individual series entry. This controls how Komga clients display books that aren’t part of a series.

Once enabled, the endpoint URLs appear in the Endpoints section with copy buttons. The URLs are auto-generated based on your Grimmory instance.

EndpointURL PatternUsed by
OPDS Cataloghttp://your-server:6060/api/v1/opdsKOReader, Moon+ Reader, Panels, and other OPDS apps
Komga APIhttp://your-server:6060/komga/apiTachiyomi, Komelia, and other Komga clients

OPDS uses its own user accounts, separate from your Grimmory login. Both the OPDS catalog and Komga API authenticate with these same credentials using HTTP Basic Auth.

To create a user:

  1. In the OPDS Users section, click Add User
  2. Enter a username, password, and default sort order
  3. Click Create

Each OPDS user is linked to the Grimmory user who created it, which determines library access: the OPDS user can only see libraries that the parent Grimmory user has access to. Admins can see everything.

Each OPDS user has a configurable sort order that controls how books appear in feeds. You can set it when creating the user or edit it later with the pencil icon. The options are:

Sort OrderDescription
Recently AddedNewest books first (default)
Title (A-Z / Z-A)Alphabetical by title
Author (A-Z / Z-A)Alphabetical by author
Series (A-Z / Z-A)Alphabetical by series name
Rating (Low-High / High-Low)By average rating

In your reading app, add a new OPDS catalog with:

  • URL: Your OPDS Catalog URL
  • Username: Your OPDS username
  • Password: Your OPDS password
AppPlatformNotes
KOReaderAndroid, iOS, Linux, WindowsAlso supports progress sync for books downloaded via OPDS
Moon+ ReaderAndroid
FBReaderMulti-platform
PanelsiOS, macOS
YomuiOS
KyBook 3iOS, macOS
BooxAndroid (e-ink devices)
TachiyomiAndroidUse the Komga API endpoint
KomeliaMulti-platformUse the Komga API endpoint
  1. Open KOReader (with no book open)
  2. Tap the magnifying glass icon in the top menu
  3. Select OPDS catalog
  4. Tap the hamburger menu (top left) and select Add catalog
  5. Enter a name, your OPDS URL, username, and password
  6. Save and browse your library

Most reading apps automatically discover these feeds from the root catalog URL. You don’t need to enter them manually.

FeedPathDescription
Root Catalog/api/v1/opdsMain entry point with navigation links to all feeds below
All Books/api/v1/opds/catalogFull catalog with pagination and search
Recently Added/api/v1/opds/recentBooks sorted by date added
Libraries/api/v1/opds/librariesBrowse by library
Shelves/api/v1/opds/shelvesBrowse by shelf
Magic Shelves/api/v1/opds/magic-shelvesBrowse dynamic magic shelves
Authors/api/v1/opds/authorsBrowse by author
Series/api/v1/opds/seriesBrowse by series
Surprise Me/api/v1/opds/surprise25 random books
Search/api/v1/opds/catalog?q={terms}Search across titles, authors, descriptions, publishers, ISBNs, series, languages, and categories

All acquisition feeds support pagination with page (default 1) and size (default 50, max 100) query parameters.

Books include series metadata (belongs-to-collection) when available, so apps that support EPUB 3 collection grouping can display series information.


The Komga API exposes your library in the format that Komga clients expect. This is particularly useful for CBX files (CBZ, CBR, CB7) because Komga clients can stream individual pages without downloading the full archive.

Key endpoints:

EndpointWhat it does
GET /komga/api/v1/librariesList libraries the user has access to
GET /komga/api/v1/seriesList series (with optional library_id filter)
GET /komga/api/v1/booksList books
GET /komga/api/v1/books/{id}/fileDownload the full book file
GET /komga/api/v1/books/{id}/thumbnailGet the book cover
GET /komga/api/v1/books/{id}/pagesGet page metadata (page count, filenames, media types)
GET /komga/api/v1/books/{id}/pages/{num}Get a single page image (supports ?convert=png)
GET /komga/api/v1/collectionsList collections

Authentication is the same: HTTP Basic Auth with your OPDS user credentials.


ProblemWhat to check
App can’t connectVerify the OPDS server is enabled, the URL is correct, and the OPDS credentials are right. If connecting from another device, make sure localhost is replaced with the server’s IP or hostname.
Books not appearingThe OPDS user inherits library access from the parent Grimmory user. If the Grimmory user doesn’t have access to a library, books from that library won’t appear in OPDS.
Authentication errorsOPDS users are separate from Grimmory accounts. Double-check the OPDS username and password. Passwords can’t be retrieved after creation.
Komga client shows no seriesMake sure the Komga API toggle is enabled in OPDS settings. Try toggling Group Unknown Series if standalone books aren’t showing up.
CBX pages not loadingPer-page streaming only works through the Komga API (/komga/api/), not the standard OPDS endpoint. Make sure your client is pointed at the Komga URL.
Search returns nothingOPDS search queries against title, author, description, publisher, ISBN, series, language, and categories. Make sure the search terms match content in those fields.