abdoufermat5/herbarium

Desktop app that keeps your generated HTML pages in a plain-file vault and resurfaces them for spaced review.

Rust

0

56 commits

updated Oct 4, 2026

See the code

See what people are saying

README

Herbarium

A desktop reader for the HTML pages AI tools generate. Save a page, find it later, open it with its interactivity intact, and schedule it for review so it comes back when you need it.

Your pages stay plain .html files in a folder you own.

Herbarium: search a page, use it in the reader, then run a review session

Install

Linux (x86_64 and arm64):

curl -fsSL https://raw.githubusercontent.com/abdoufermat5/herbarium/main/install.sh | sh

Installs the .deb on Debian/Ubuntu (asks for sudo), the AppImage elsewhere. Pipe to sh -s -- --appimage instead to skip sudo, or sh -s -- --uninstall to remove it.

macOS and Windows: download from the releases page. These builds are not code-signed yet, so on first launch allow it in System Settings → Privacy & Security (macOS) or choose "More info → Run anyway" (Windows).

Features

  • Import by drag and drop, file picker or paste.
  • Search titles, tags, notes and page text.
  • Organize with folders, tags and notes; move or edit many pages at once.
  • Read each page in a sandboxed viewer, scripts included.
  • Edit the HTML in the app or in your own editor.
  • Review pages on a schedule you choose, with reminders and a keyboard-driven review session.
  • Trash with restore and undo.
  • Command palette (Ctrl/⌘ K); press ? for all shortcuts.
  • Light and dark themes, English and French.

Your vault

A vault is an ordinary folder. Each page is an .html file with a .json file next to it for its title, tags, note and review dates. Folders are real directories. Back it up, sync it or edit it with any tool; Herbarium picks up changes when you come back to the window.

Safety

Generated HTML runs code, so every page is treated as untrusted. It runs in a sandbox that cannot reach your files, the app or other pages, and it cannot navigate away; links open in your browser only after you confirm.

Network access is a per-page switch. When on, a page can load scripts and fonts from well-known CDNs and images from any website, which means it can tell its author when you open it. Keep it off for pages you don't trust.

Use with AI agents

Herbarium is also an MCP server, so agents can save, search, organize and schedule pages. In Claude Code:

claude mcp add herbarium -- herbarium mcp

Then ask, for example, "write a short HTML explainer of Cargo workspaces and save it to Herbarium under rust". It uses the vault last opened in the app (or --vault <path>).

Development

Needs Node.js, pnpm, Rust and the Tauri prerequisites.

pnpm install
pnpm tauri dev    # run the app
make ci           # everything CI checks

Built with Tauri 2, Rust, SQLite and Svelte 5.

Releasing

Write the changes under [Unreleased] in CHANGELOG.md, then:

pnpm release patch   # or minor | major | x.y.z
git push --follow-tags

The tag builds every platform and publishes the release. In-app updates need the signing key pair on the repository: the HERBARIUM_UPDATER_PUBLIC_KEY variable and the TAURI_SIGNING_PRIVATE_KEY secret (create them with pnpm tauri signer generate).

License

MIT

desktop-app
html
i18n
knowledge-base
linux
local-first
rust
spaced-repetition
svelte
tauri

abdoufermat5/herbarium

Desktop app that keeps your generated HTML pages in a plain-file vault and resurfaces them for spaced review.

Rust

0

56 commits

updated Oct 4, 2026

See the code

See what people are saying

README

Herbarium

A desktop reader for the HTML pages AI tools generate. Save a page, find it later, open it with its interactivity intact, and schedule it for review so it comes back when you need it.

Your pages stay plain .html files in a folder you own.

Herbarium: search a page, use it in the reader, then run a review session

Install

Linux (x86_64 and arm64):

curl -fsSL https://raw.githubusercontent.com/abdoufermat5/herbarium/main/install.sh | sh

Installs the .deb on Debian/Ubuntu (asks for sudo), the AppImage elsewhere. Pipe to sh -s -- --appimage instead to skip sudo, or sh -s -- --uninstall to remove it.

macOS and Windows: download from the releases page. These builds are not code-signed yet, so on first launch allow it in System Settings → Privacy & Security (macOS) or choose "More info → Run anyway" (Windows).

Features

  • Import by drag and drop, file picker or paste.
  • Search titles, tags, notes and page text.
  • Organize with folders, tags and notes; move or edit many pages at once.
  • Read each page in a sandboxed viewer, scripts included.
  • Edit the HTML in the app or in your own editor.
  • Review pages on a schedule you choose, with reminders and a keyboard-driven review session.
  • Trash with restore and undo.
  • Command palette (Ctrl/⌘ K); press ? for all shortcuts.
  • Light and dark themes, English and French.

Your vault

A vault is an ordinary folder. Each page is an .html file with a .json file next to it for its title, tags, note and review dates. Folders are real directories. Back it up, sync it or edit it with any tool; Herbarium picks up changes when you come back to the window.

Safety

Generated HTML runs code, so every page is treated as untrusted. It runs in a sandbox that cannot reach your files, the app or other pages, and it cannot navigate away; links open in your browser only after you confirm.

Network access is a per-page switch. When on, a page can load scripts and fonts from well-known CDNs and images from any website, which means it can tell its author when you open it. Keep it off for pages you don't trust.

Use with AI agents

Herbarium is also an MCP server, so agents can save, search, organize and schedule pages. In Claude Code:

claude mcp add herbarium -- herbarium mcp

Then ask, for example, "write a short HTML explainer of Cargo workspaces and save it to Herbarium under rust". It uses the vault last opened in the app (or --vault <path>).

Development

Needs Node.js, pnpm, Rust and the Tauri prerequisites.

pnpm install
pnpm tauri dev    # run the app
make ci           # everything CI checks

Built with Tauri 2, Rust, SQLite and Svelte 5.

Releasing

Write the changes under [Unreleased] in CHANGELOG.md, then:

pnpm release patch   # or minor | major | x.y.z
git push --follow-tags

The tag builds every platform and publishes the release. In-app updates need the signing key pair on the repository: the HERBARIUM_UPDATER_PUBLIC_KEY variable and the TAURI_SIGNING_PRIVATE_KEY secret (create them with pnpm tauri signer generate).

License

MIT

desktop-app
html
i18n
knowledge-base
linux
local-first
rust
spaced-repetition
svelte
tauri

Languages

Rust

41.9%

Svelte

35.6%

TypeScript

19.0%

CSS

1.8%