A local-first, privacy-focused markdown editor. No accounts, no cloud dependency, no sync fees — just a folder of markdown files you fully own.
Most note-taking apps force a trade-off: either you get polished UX at the cost of cloud lock-in, or you stay local-first but deal with heavy Electron apps that eat your RAM and require constant plugin hunting.
Otterly is built with Tauri and Svelte 5. It's small, fast, and designed to stay out of your way. Your notes are plain markdown files in a folder you control. If you ever want to stop using Otterly, your notes stay exactly where they are, ready to be opened in any other editor.
- Vault-based — A vault is just a folder. No proprietary database. Use your existing tools (git, sync clients, VS Code) alongside Otterly without issues.
- Tab system — Open multiple notes, pin important ones, and restore closed tabs.
- WYSIWYG Markdown — Live rendering as you type via Milkdown/ProseMirror. Headings, tables, task lists, and syntax highlighting included.
- Wiki-links — Simple
[[note]]linking. Otterly tracks backlinks and outlinks automatically to help you navigate your knowledge base. - The Omnibar — One search bar for everything. Search notes by content (SQLite FTS5) or quickly jump to files by name (
Cmd+P/Cmd+O). - Git Integration — Native support for versioning. View status, stage changes, and commit without leaving the app.
- Image Paste — Paste images directly into the editor. They are automatically stored in an assets folder of your choice.
- Custom Hotkeys — Rebindable shortcuts for every action in the app.
- Dark & Light Modes — Matches your system or toggle manually.
- Node.js 20+ and pnpm
- Rust toolchain
- Platform-specific build tools (see Tauri's guide)
pnpm install
pnpm tauri devTo build a production installer for your platform:
pnpm tauri buildWe use a Ports and Adapters (Hexagonal) architecture to keep the business logic testable and decoupled from the platform.
- Business Logic: Check
src/lib/services/ - Architecture Details: See architecture.md
- UI & Design System: See UI.md
Before submitting a PR, please run:
pnpm check # Type checking
pnpm lint # Linting
pnpm test # Vitest unit tests
pnpm format # PrettierMIT - See LICENSE for details.

