# Privacy and costs

> What is sent where, what costs money and where your files are kept.

## What leaves your machine

| Where | When | What is sent |
|---|---|---|
| Your Calibre Content Server | Always; by default it is on your own computer (`http://localhost:8080`) | Requests for your library, book files and covers; the changes you accept; new books you bring in |
| Open Library (`openlibrary.org`, `covers.openlibrary.org`) | Looking for covers, unless you turn **Look online** off; **Look up metadata**, when you run it; checking the books **Grow a shelf** suggests | The book's ISBN, title and author |
| Google Books (`www.googleapis.com`, and cover images on `books.google.com`) | The same, only if you add an API key | The book's ISBN, title and author, and your key |
| An image address you paste | **Replace cover**, when you paste an address | One request for the image |
| The providers you set up in Model Hub | Anything that uses a model | For summaries and chapter notes, the book's text. For lookups, its first pages. For shelves, titles, authors and a sample of each book's text. For **Grow a shelf**, the shelf's titles and authors. For **Publish a book**, its public facts and the summary already in its note. Research and publishing may have the model search the web |
| The buy links on a published book page | **Publish a book** | One request to each link, to check it answers |
| Web addresses inside a book | When you read a book whose pages point to images or fonts on the web (most books carry everything inside them) | The reader loads them as a browser would. Scripts in a book never run |
| Readwise (`readwise.io`) | Only if you turn it on | Your access token, asking for your highlights |
| Hardcover (`api.hardcover.app`) | Only if you turn it on | Your API token, asking for your books, statuses, ratings and dates |
| Your OPDS catalog | Only if you turn it on | Requests to the address you give, with your login or the key in it; a book's file is downloaded when you open it |
| Your Audiobookshelf server | Only if you turn it on | Requests to the address you give, with your API key |
| Audible (`api.audible.com`, or your marketplace's `api.audible.*`) | Only in builds made with Audible (released copies leave it out), and only if you turn it on | Requests signed with the login you imported, listing your library |

Model calls go through Model Hub. With a local provider there, a book's text never leaves your computer.

Readwise, Hardcover, OPDS, Audiobookshelf and Audible are read-only, and nothing from your vault is sent to them. Audible has no public API, so reading it is unofficial and Audible's terms may not allow it. Sharing shelves sends nothing: it writes files in your vault for you to publish.

There is no telemetry and there are no ads.

## Files outside your vault

Library Hub reads these and never writes them.

| What | When |
|---|---|
| Your Calibre library folder: `metadata.db`, each book's `cover.jpg`, book files | Only if you set **Library folder** in Calibre's **Connect…**. `metadata.db` is read, read-only, when the server doesn't answer; covers when there's no server; a book's files when the server can't supply them |
| Your folder for new books | Only if you choose one. It is listed every minute while Obsidian is open, and a book file is read when you bring it in. The file goes only to your Calibre server |
| The login file audible-cli made (usually `~/.audible/audible.json`) | When you pick it in **Import login…**, in builds with Audible. Three fields of it are kept |

## Other programs

Library Hub starts no program. It needs Calibre's Content Server, which you run, and the Model Hub plugin. Audible needs a login made once with [audible-cli](https://github.com/mkb79/audible-cli), an outside program you install and run yourself.

## What costs money

Library Hub is free. Syncing notes and finding covers cost nothing. The providers you set up in Model Hub may bill you for the rest:

- **Summaries** are the large cost: a whole book's text is read. A summary of one book starts at once and shows its cost as it runs, with **Cancel**; a shelf's summaries and chapter notes show an estimate first.
- **A shelf from a description** reads the books that share its words, a few dozen at a time. It shows an estimate first.
- **Lookups** read a few pages per book. With Model Hub 0.13 or later, the window shows what the model calls may cost.
- **Find duplicate author names** asks one small decision per pair of similar names. With Model Hub 0.13 or later, the window shows what they may cost.
- **Grow a shelf** is one small call per run: the shelf's titles in, a short list out. It shows an estimate first.

An estimate with Model Hub 0.13 or later is Model Hub's own, as a range: "about $0.02–$0.09" runs from every call getting a short reply to every call getting a full one. With an older Model Hub, it is the text going in at the model's listed price. Publishing searches the web, so its price says the provider's web search fee isn't counted: Model Hub can't know it.

A call billed well above its listed price stops a run. Model Hub's limits and budgets apply, and its usage view shows what Library Hub has spent.

## Where things are kept

| What | Where |
|---|---|
| Book notes | `Books/Library` by default |
| Shelf notes | `Books/Collections` by default |
| Review notes | `Books/Review` by default |
| Cover images | `Books/Covers` by default |
| The reading queue | `Books/Up Next.md` by default |
| The wishlist | `Books/Wishlist` by default |
| Author, series and highlight notes | `Books/Authors`, `Books/Series` and `Books/Highlights` by default |
| Year in review and library health | `Books/Reading` by default |
| Chapter notes, and your private reading notes (`_Reading notes.md`) | A folder beside the book's note, named after it |
| A book's page | The summaries folder of your share template, or `Book Summaries` beside the notes folder |
| Shared shelves and share templates | The folders your share template names (`Shelf exports` for JSON-LD by default), and `Share templates` |
| The library Base and shelf Bases | `Library.base` and `Shelf Members.base`, when you ask for them |
| Settings, and the days you read (dates and page-turn counts only) | `data.json` in the plugin's folder, inside your vault's configuration folder |
| The write queue, its logs, and each Calibre cover saved before it is replaced | `queue/intents.json`, `queue/runs/*.jsonl` and `queue/covers/` in the plugin's folder |
| Each note run, for Undo | `notes/runs/*.jsonl` in the plugin's folder |
| What it last wrote in refreshed fields | `provenance.json` in the plugin's folder |
| New books seen and shelves offered | `arrivals.json` in the plugin's folder |
| Shelf proposals | `shelf-proposals.json` in the plugin's folder |
| Book vectors from an earlier version | `vectors/` in the plugin's folder: no longer read, left as it is; you can delete it |
| Logins and keys: Calibre, Google Books, Readwise, Hardcover, OPDS, Audiobookshelf and, in builds with Audible, the Audible device login | Obsidian's keychain |

## Your Calibre library

It changes only through the write queue, after you accept a change or bring in new books, and when you agree to an EPUB conversion that another plugin asked for.

## Other plugins and agents

Another plugin in your vault can read your book list, shelves and book files through this plugin's API, and ask it to change shelves or write a summary, as any plugin can read your vault.

Library Hub's tools are registered with Model Hub. An agent you connect there can read your books and shelves, and make changes as Model Hub's tool settings allow, asking you first by default.
