CWA is and always will be free and open source. If it makes your library life easier and you're able to support development, contributions go directly to:
Calibre, while a fantastic tool for its age, has several problems when containerised, including its reliance on a KasmVNC server instance for the UI, which is near impossible to use on mobile and is relatively resource-heavy if you're running a small, lower power server like I am.
For many, Calibre-Web has really swooped in to save the day, offering an alternative to a containerised Calibre instance that's resource-light and with a much more modern UI to boot.
However, when compared to full-fat Calibre, it unfortunately lacks a few core features leading many to run both services in parallel, each serving to fill in where the other lacks, resulting in an often clunky, imperfect solution.
Calibre-Web Automated aims to be an all-in-one solution, combining the modern lightweight web UI from Calibre-Web with the robust, versatile feature set of Calibre, with a slew of extra features and automations thrown in on top.
CWA allows you to keep your ebook library accessible & organised and looks good while doing it ๐๐ฆ
An intuitive web interface for searching and requesting book downloads, designed to work seamlessly with Calibre-Web-Automated. This project streamlines the process of downloading books and preparing them for integration into your Calibre library
Important
CWA does not approve of or support piracy of copyrighted materials and is not responsible for user behaviour
Built with Flutter and using Material You, Calibre Web Companionโ is an unofficial companion application for Calibre Web & Calibre Web Automated that allows you to browse your book collection and download books directly on your device, providing a much more modern, mobile-friendly UX than either service can currently provide on its own
I want to say a big thanks ๐ to all the members of this community that have taken the time to participate in the testing and development of this project and we encourage anyone who would like to to contribute in some way. Anyone of any level is welcome and every little helps!
For anyone that wish to contribute to this project in some way, please reach out on our Discord Server and see how you can best get involved:
Or alternatively make your own companion project, come hang out and or come get help if you're facing issues :)
โ ๐จ Deploying on Network Shares (NFS/SMB) ๐จ
CWA now supports network-share deployments via NETWORK_SHARE_MODE=true
This disables SQLite WAL on metadata.db and app.db to prevent locking issues
Skips recursive ownership changes that often fail on NFS/SMB
Switches ingest/metadata watchers to a polling-based watcher for reliability
Network shares are still slower than local disks, but are now fully supported with this mode enabled
CWA optimizes SQLite concurrency by enabling Write-Ahead Logging (WAL) on local disks.
Some network filesystems (NFS/SMB) do not fully support WAL or reliable file locking, which can cause intermittent "database is locked" errors or corruption risks.
If you are deploying on a network share, set the following environment variable to disable WAL:
NETWORK_SHARE_MODE=true
This tells CWA to avoid enabling WAL on the Calibre metadata.db and the app.db settings database. It also disables recursive ownership changes (chown) performed by init/maintenance scripts to avoid permission issues on network filesystems. Default is false (WAL enabled) for better performance on local disks.
By default, CWA uses Linux inotify (via inotifywait) to detect new files in the ingest folder with minimal latency and overhead.
On network shares (NFS/SMB), filesystem events can be unreliable or unavailable. When NETWORK_SHARE_MODE=true is set, CWA switches the ingest and metadata watcher services to a polling-based watcher that periodically scans for changes. This improves reliability on NAS/network mounts at the cost of slightly higher I/O and up to a few seconds of latency.
On Docker Desktop (Windows/macOS), the container runs on a LinuxKit/WSL2 VM and host-mounted paths may not propagate inotify events reliably. CWA auto-detects Docker Desktop at startup and prefers the same polling watcher for reliability.
Advanced: You can also force polling regardless of share mode by setting CWA_WATCH_MODE=poll.
CWA uses Werkzeug's ProxyFix middleware to properly handle X-Forwarded-For, X-Forwarded-Proto, and other proxy headers.
By default, it trusts 1 proxy in the chain. If you have multiple proxies (e.g., Cloudflare Tunnel โ nginx โ CWA), set:
TRUSTED_PROXY_COUNT=2 (or the total number of proxies in your chain)
Why this matters: Session protection validates requests based on the client's IP address. If ProxyFix doesn't trust enough proxies, it may see different IPs between requests, causing "Session protection triggered" warnings and forcing re-login.
Troubleshooting: If you see frequent session protection warnings in logs, check your proxy chain depth and adjust this variable accordingly.
On by default though can be toggled off in the CWA Settings page, with EPUB as the default target format
Available target formats include:EPUB, MOBI, AZW3, KEPUB & PDF
Upon detecting new files in the Ingest Directory, if any of the files are in formats the user has configured CWA to auto-convert to the current target format,
The following 28 file types are currently supported:
โ Automatic Enforcement of Changes made to Covers & Metadata through the Calibre-Web UI! ๐๐
In stock Calibre-Web, any changes made to a book's Cover and/or Metadata are only applied to how the book appears in the Calibre-Web UI, changing nothing in the ebook's files like you would expect
This results in a frustrating situation for many CW users who utilise CW's Send-To-Kindle function, and are disappointed to find that the High-Quality Covers they picked out and carefully chosen Metadata they sourced are completely absent on all their other devices! UGH!
CWA's Automatic Cover & Metadata Enforcement Feature makes it so that WHATEVER you changes you make to YOUR books, are made to the books themselves, as well as in the Web UI, making what you see, what you get.
Ever had it where you're super excited to start reading your next book but for some reason, Amazon's Send-to-Kindle service just keeps rejecting it? Well no more!
Originally developed by innocenatโ , this tool corrects the following potential issues for every EPUB processed by CWA:
Fixes UTF-8 encoding problem by adding UTF-8 declaration if no encoding is specified
Fixes hyperlink problem (result in Amazon rejecting the EPUB) when NCX table of content link to <body> with ID hash.
Detect invalid and/or missing language tag in metadata, and prompt user to select new language.
Remove stray <img> tags with no source field.
Resolves several EPUB compatibility issues, such as UTF-8 encoding, hyperlink problems, invalid/missing language tags, and stray image tags.
Repairs malformed language tags, XML declarations, and UTF-8 headers
Cleans invalid NCX links, broken CSS/fonts, and stray image tags
This ensures maximum comparability for each EPUB file with the Amazon Send-to-Kindle service and for those who don't use Amazon devices, has the side benefit of cleaning up your lower quality files!
Enabled by default, with per-run backups in /config/processed_books
Bulk processing of whole library with progress tracking available in the Admin Panel
โ Simple to use Multi-Format Conversion Service ๐
This utility gives the user the option to either keep a copy of the original of all converted files in /config/processed_books or to trust the process and have CWA simply convert and replace those files (not recommended)
Auto-Discovery: Automatic endpoint configuration via OIDC metadata URLs for seamless setup with providers like Keycloak, Authentik, Google, and Azure AD
Manual Override: Full manual control over OAuth endpoints when auto-discovery isn't available
Field Mapping: Configurable JWT field extraction for usernames and emails to work with any provider's token structure
Group-Based Roles: Automatic admin role assignment based on OAuth provider groups
Testing Tools: Built-in connection testing and validation to ensure your configuration works before going live
Enterprise Ready: Support for custom scopes, multiple authentication methods, and comprehensive troubleshooting
Made to MASSIVELY simplify the setup process for both new and existing users alike
New Users without existing Libraries: ๐
No library? No problem!
New users without existing Calibre Libraries no longer need to copy and paste metadata.db files and point to their location in the Web UI, CWA will now automatically detect the lack of Library in your given bind and automatically create a new one for you! It will even automatically register it with the Web UI so you can really hit the ground running
New or Existing Users with Existing Libraries:
Simply bind a directory containing your Calibre Library (search is done recursively so it doesn't matter how deep in the directory it is) and CWA will now automatically find it and mount it to the Web UI
Should you bind a directory with more than 1 Calibre Library in it, CWA will intelligently compare the disk sizes of all discovered libraries and mount the largest one
CWA supports only one library per instance though support for multiple libraries is being investigated for future releases
In the meantime, users with multiple libraries who don't want to consolidate them are advised to run multiple, parallel instances