Estante

Your Calibre library, everywhere.

Covers, search, shelves and reading lists from your own Calibre library, a reader you can write on, and a daily pick chosen from your taste, without any AI. Your books never leave your computer.

What it does

πŸ“š

Your library, not a copy

Reads Calibre directly and adds through Calibre. Change the library folder in either one and the other follows.

✎

A reader you can write on

EPUB, PDF, MOBI, AZW3, FB2, comics. Highlights, notes, and ink with pen, marker and layers that sticks to the words.

β˜€οΈŽ

Today's pick, without AI

One book a day from your own shelves, with a passage from it, chosen from what you rate, finish and write about.

πŸ—“

Dates that matter to you

Calendars you choose suggest books for what's coming, with daily readings if you follow a learning cycle.

🧩

Twelve ways to see today

Spine wall, bento, almanac, transit map, card deck… pick one, or let Home change every day.

πŸ”Œ

Plays well with others

KOReader sync, OPDS, Kindle, GoodNotes, Obsidian, Zotero, Readwise, Anki, and free libraries like Project Gutenberg.

Set up

  1. Run Estante on the computer with Calibre

    It needs only Python 3.9 or newer. Open the Estante folder and double-click start-estante.command, or run:

    python3 -m estante --port 8484

    Then open localhost:8484 on that computer.

  2. Set a password

    In Sync & settings β†’ Sharing & access. Until there is one, Estante only opens on that computer.

  3. Reach it from anywhere (optional)

    A Cloudflare Tunnel connects your computer to your own Cloudflare address from the inside: no router ports, no fixed IP. Your library address is then https://<name>.<you>.workers.dev. The steps are in cloud/README.md.

  4. Phone and tablet

    Install the Android app (allow installs from your browser when Android asks), or open your library address in any browser and add it to the home screen. Enter your library address and your password once.

At home, without a tunnel, start Estante with --host 0.0.0.0 and use the address it prints, like http://192.168.1.20:8484.