A desktop book reader for Linux, with an atmosphere for every book.
Quick start · Reading · Atmosphere · AI agents · Docs · Русская версия
vibe-reader shows EPUB, FB2, Markdown, TXT, HTML and PDF with careful typography. Each book can have its own atmosphere: a palette, a pair of fonts, a background, quiet rain or snow, chapter drawings and illustrations.
There is no AI inside the app. The vibe-reader command-line tool and the bundled Skills let the agent you already use (Claude Code, Codex, opencode and others) read your library, discuss the chapter you are on without spoilers, keep notes and set the atmosphere. The reader window shows what the agent does as it happens.
![]() |
![]() |
| noir: The Count of Monte Cristo | storm: Frankenstein |
Requirements: Rust 1.90 or newer and, for the window, WebKitGTK 4.1 (see building).
git clone https://github.com/exec-cmd/vibe-reader
cd vibe-reader
cargo install --path src/cli
cargo install --path src/gui
vibe-reader add ~/Books/crime-and-punishment.epub --shelf Classics
vibe-reader openDrop more files onto the window or press Add books. Release archives and an AppImage are attached to each GitHub release.
- One window holds the library and the book. Recent books stand as spines, the library groups by your shelves or by author, and the reading page has only a thin progress line.
- Prose opens in pages (a spread on wide windows), technical books and Markdown in a scroll. Code is highlighted and copyable, TeX and MathML formulas are typeset, wide tables scroll, images zoom.
- PDF gets spread, one-page and scroll layouts, zoom, the file's own outline, page thumbnails, search, highlights and notes on selected text, and dark pages in dark mode.
- Highlights, notes and bookmarks export to Markdown or JSON. Notes by an agent are marked differently from yours.
- Six bundled fonts with Cyrillic; you set size, line length and spacing, justification and hyphenation, light or dark.
- The translator handles a passage or the whole page with your own DeepL, Google Cloud or OpenRouter key.
- Everything works from the keyboard: the
Ctrl+Shift+Ppalette, single-key commands, optional Vim keys. vibe-reader open notes.md --liteopens one file without the library; Markdown reloads when you save it.
More: getting started, library, reading, PDF, keyboard, translator.
vibe-reader atmosphere set --book 3 --preset rain
vibe-reader atmosphere set --book 3 --chapter 7 --preset storm
vibe-reader art add 3 ./map.png --locator ch:2:4800 --as pageSeven presets come built in: study, terminal, noir, soft, rain, storm and
mountain. Profiles are declarative TOML or JSON with a checked schema: only
bundled fonts, and no profile can make the text hard to read. Everything else in
the interface can be restyled live with ~/.config/vibe-reader/ui/user.css.
See atmosphere.
Each preset has an ambient sound: rain, storm, fire, wind or hum. The sound is
generated in the window, is off by default, and turns on with S. See
sound.
vibe-reader skills install # Claude Code; --dir for other agentsThen ask your agent about your book. The Skills teach it to:
| Skill | Purpose |
|---|---|
reader-cli |
Use the CLI safely: locators, output, authorship, undo. |
reader-analyze |
Analyze a book or your reading: characters, themes, glossary, pace. |
reader-discuss |
Talk about the place you are reading, without spoilers. |
reader-atmosphere |
Pick presets, style chapters and scenes, add illustrations. |
books-helper |
For fiction: retell the story so far, gather critics' views, check your understanding. |
The ✦ button in the reader sends the agent your place, a passage or a message.
Agents read only up to your position unless you ask otherwise, sign everything they write, can undo it, cannot remove books, and see your reading habits only if you allow it. Book text is passed to them as untrusted data. See agents and the CLI reference.
Settings live in ~/.config/vibe-reader/config.toml and the library in one
SQLite file in ~/.local/share/vibe-reader/. Nothing leaves your computer.
See configuration.
Start with CONTRIBUTING.md and architecture. Planned work is in the roadmap.
Rust and Tauri with the system webview. Books are parsed
with zip, quick-xml, pulldown-cmark and pdf-extract and sanitized with
ammonia; the library is SQLite through rusqlite. The window uses
KaTeX, highlight.js and
pdf.js, and fonts under the SIL Open Font
License.
Licensed under the MIT license.


