Bindery
Bindery is Tome's incoming-file pipeline. Drop EPUBs, CBZs, CBRs, or PDFs into the directory
mounted at /bindery (or wherever TOME_INCOMING_DIR points) and Tome
handles metadata extraction, cover fetch, duplicate detection, and library assignment. You
decide whether ingestion is gated on a manual review or runs automatically on a timer.

Two modes
# docker-compose.yml — manual review (default)
services:
tome:
image: ghcr.io/bndct-devops/tome:latest
volumes:
- ./data:/data
- ./books:/books
- ./bindery:/bindery # ← drop files here
# No TOME_AUTO_IMPORT — manual is the defaultManual review
Default behavior, recommended for any library you care about. Files arrive in
/bindery, get parsed, and queue up in Admin → Unreviewed. An
admin opens each entry, eyeballs the detected metadata, edits if necessary, and clicks
Accept — only then does the book move into the canonical library folder and
become visible to non-admin users.
- Copy files into
/bindery(cp, rsync, smb, whatever). - Tome detects them within a few seconds and parses metadata from the file + filename.
- They appear in Admin → Unreviewed with a counter badge in the sidebar.
- Open each, check the detected title / author / series / volume. Use Fetch metadata to populate description and cover.
- Click Accept to publish, or Reject to delete the file from
/bindery.
Auto-import
Set TOME_AUTO_IMPORT=true and Tome scans /bindery on a schedule
(default every 5 minutes). Detected files get accepted automatically — but they still land
marked is_reviewed=false so they show up in the Unreviewed queue for sanity
checking after the fact.
What Tome extracts on ingest
- Title, author, publisher, language, year — from EPUB's OPF, CBZ's ComicInfo.xml, or PDF metadata when present.
- Series + volume index — from filename patterns. See series detection rules.
- Cover — embedded cover from the file. If missing, a placeholder is set and you can fetch a cover later.
- Content hash — sha256 of the file bytes. Used for duplicate detection across re-uploads.
- Book type — guessed from format and metadata (novel, manga, comic, etc.). Determines which auto-library it lands in.
Filename conventions Tome understands
The cleaner your filenames, the less hand-editing you do. Recommended patterns:
- Standalone fiction:
Title - Author (Year).epub - Series volume:
Series Name v01.cbzorSeries Name - Vol. 01.epub - Manga chapter:
Series Name c042.cbz(Tome groups chapters separately from volumes)
Duplicate handling
On ingest, Tome compares the new file's content hash against every existing BookFile.
Exact match → the new file is silently skipped (and removed from /bindery if
auto-import). Near-duplicates (same series + volume, different format) are flagged in the
Admin → Duplicates view; you can attach the new file to the existing book record or keep it
as a separate entry.
Rejecting and cleaning up
Rejecting a book deletes the source file from /bindery. If you only want to keep
the file out of the library but preserve it on disk, move it elsewhere instead of clicking
Reject.
Once accepted, books live in TOME_LIBRARY_DIR under a series or author folder
(see series organisation).
The original drop in /bindery is removed.