Skip to content

Repository files navigation

Muse Library

Muse Library

A fast, beautiful, local-first library for your AI prompts.

Capture, organize, search and reuse prompts for ChatGPT, Claude, Gemini and any other assistant — in seconds, fully offline.

Platform Tauri React License

Русская версия · Publishing guide · Contributing · Changelog


Why Muse Library

Prompts are the new snippets. They live in chat histories, text files and sticky notes — and they get lost. Muse Library is a purpose-built notebook for prompts, designed around one goal: open the app, save a prompt, find any old prompt by meaning and copy it — in under 10 seconds.

  • Local-first. No account, no cloud, no network required. Your prompts never leave your device.
  • Native feel. A minimal, monochrome interface with a liquid-glass finish, light and dark themes, a configurable accent color, subtle motion and full Reduced Motion support.
  • Built for speed. Instant startup, instant search, autosave, keyboard-first navigation.

Features

Organize

  • Workspaces to separate contexts (work, personal, clients)
  • Nested folders with a tree view and drag and drop
  • Unlimited tags with one-click automatic suggestions based on prompt content
  • Favorites and Smart Collections on a dedicated icon rail: All prompts, Recent, Favorites, Untagged, plus custom saved-search collections

Write

  • Instant note creation with Cmd/Ctrl+N
  • Autosave — there is no Save button
  • Markdown editing with a rendered preview (headings, lists, tables, code blocks, GFM)
  • Character, word and variable counts, creation and modification dates

Reuse

  • Variables in {{variable}} syntax are detected automatically
  • Variable values are shared across the whole library: set {{tone}} once and every prompt uses it
  • A dedicated Variables tab lists every variable in the workspace; the editor drawer shows a live preview with substituted values highlighted in your accent color
  • Copy Filled Prompt puts the finished prompt on your clipboard in one click or with Cmd/Ctrl+Shift+C

Find

  • Full-text search powered by SQLite FTS5 with prefix matching
  • Semantic search by meaning, using local embeddings — no cloud, no API keys
  • Quick Switcher (Cmd/Ctrl+P) to jump to any prompt
  • Command Palette (Cmd/Ctrl+K) for every action in the app

Protect

  • Automatic daily backups of the local database with configurable retention
  • Optional AES-256 encryption for backups with a local passphrase
  • One-click restore from any backup
  • Undo after deletion; deleted prompts are purged after 30 days

Move data freely

  • Export a single prompt or a whole workspace to Markdown, JSON or YAML
  • Import from the same formats

Speak your language

  • Fully localized UI in English and Russian out of the box
  • Automatic system-language detection with manual override
  • Add your own language by dropping a JSON file into the app data folder — no code changes required

Keyboard shortcuts

Action macOS Windows
New prompt ⌘N Ctrl+N
Command palette ⌘K Ctrl+K
Quick switcher ⌘P Ctrl+P
Focus search ⌘F Ctrl+F
Toggle Markdown preview ⌘E Ctrl+E
Toggle favorite ⌘D Ctrl+D
Copy filled prompt ⌘⇧C Ctrl+Shift+C
Toggle sidebar ⌘B Ctrl+B
Settings ⌘, Ctrl+,

Tech stack

Layer Technology
Shell Tauri v2 (Rust)
UI React 19, TypeScript, Vite
Styling Tailwind CSS v4, shadcn/ui-style components, liquid-glass surface system, Motion, Lucide icons, Onest typeface
Markdown react-markdown + remark-gfm
Data SQLite (FTS5) via tauri-plugin-sql, Drizzle ORM
State Zustand
Security AES-256-GCM + Argon2 (Rust) for encrypted backups

Project structure

muse-library/
├── src/                        # React application
│   ├── app/                    # Shell, init, theming, global hotkeys
│   ├── components/
│   │   ├── ui/                 # Design-system primitives (button, dialog, menus...)
│   │   └── dialogs/            # Shared confirm / input dialogs
│   ├── features/
│   │   ├── sidebar/            # Workspaces, collections, folders, tags
│   │   ├── notes/              # Note list and search
│   │   ├── editor/             # Editor, tags, variables, Markdown preview
│   │   ├── command/            # Command palette and quick switcher
│   │   ├── settings/           # Settings dialog
│   │   └── data/               # Import / export
│   ├── lib/
│   │   ├── db/                 # Drizzle schema and SQLite client
│   │   ├── repositories/       # Data access layer
│   │   ├── analysis/           # Embeddings and tag suggestions
│   │   ├── prompt/             # Variable parsing
│   │   └── i18n/               # Localization runtime
│   ├── locales/                # en.json, ru.json
│   ├── stores/                 # Zustand stores
│   └── styles/                 # Global styles and liquid-glass tokens
├── src-tauri/                  # Rust backend
│   ├── src/
│   │   ├── commands/           # Backups, crypto, files, locales
│   │   └── migrations.rs       # SQLite schema and FTS5 triggers
│   ├── capabilities/           # Permission manifests
│   └── icons/
├── scripts/                    # Icon generation
└── docs/                       # Publishing and maintenance guides

Getting started

Prerequisites

See the Tauri prerequisites guide for details.

Development

npm install
npm run tauri dev

The first run compiles the Rust backend and takes a few minutes; subsequent runs are incremental.

Quality checks

npm run typecheck      # TypeScript check
npm run lint           # ESLint
npm run format:check   # Prettier (verify)
npm run format         # Prettier (write)

Production build

npm run tauri build

Installers are produced in src-tauri/target/release/bundle (.dmg/.app on macOS, .msi/.exe on Windows).

Other scripts

npm run icons          # Regenerate application icons

Deployment

Muse Library is a desktop application — deployment means shipping installers:

  1. Bump the version in package.json, src-tauri/tauri.conf.json and src-tauri/Cargo.toml (keep them in sync).
  2. Add a section to CHANGELOG.md.
  3. Run npm run tauri build on each target platform (macOS builds on macOS, Windows builds on Windows).
  4. Attach the artifacts from src-tauri/target/release/bundle to a GitHub Release.

For a step-by-step guide to publishing the repository and creating releases, see docs/PUBLISHING.md.

Code signing (Apple notarization, Windows Authenticode) is recommended for public distribution — see the Tauri distribution docs.

Architecture notes

  • Repositories over raw queries. All data access goes through typed repository modules built on Drizzle ORM; FTS5 and vector queries use a thin raw-SQL escape hatch in the same layer.
  • Soft deletion. Deleting a prompt sets deleted_at, enabling instant Undo; a purge job removes prompts older than 30 days on startup.
  • Search index maintenance is transparent. FTS5 stays in sync through SQLite triggers; embeddings are recomputed on save and backfilled on startup.
  • Pluggable embeddings. Semantic search is defined by a small EmbeddingProvider interface. The default provider is a deterministic hashed n-gram model that runs instantly and fully offline; a heavier neural model can be swapped in without touching the rest of the app.
  • Sync-ready. All entities use UUID keys and millisecond timestamps, so a future sync layer can be added without schema changes.
  • Deferred Markdown. The Markdown renderer is code-split and lazy-loaded, keeping cold start instant.

Custom languages

Create locales/<code>.json inside the app data directory (~/Library/Application Support/com.muselibrary.app on macOS, %APPDATA%\com.muselibrary.app on Windows), copying the structure of src/locales/en.json. Add a meta.name key with the display name of your language and restart the app. The language appears in Settings automatically.

Growing the project

Ideas that fit the architecture without breaking local-first guarantees:

  • Prompt version history — the soft-delete pattern and UUID keys make snapshots straightforward.
  • Neural embeddings — implement EmbeddingProvider with an ONNX/ggml model as an optional download.
  • End-to-end encrypted sync — entities are already UUID-keyed and timestamped.
  • Template gallery — the export format is a stable, versioned JSON document.
  • Global quick-capture hotkey — Tauri's global-shortcut plugin plus a small always-on-top window.
  • Linux builds — Tauri supports them; add a CI matrix entry and test the WebKitGTK rendering.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md first.

License

MIT


Developed by Liwidale

About

A fast, beautiful, local-first library for your AI prompts.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages