Skip to content

Repository files navigation

Marky app icon

Marky

Offline-first Markdown notes with local folders, wiki links, graph navigation, and a polished desktop editor.

Download the latest release · Website · MCP setup

Marky's note graph, showing eight notes connected by twelve wiki links

Marky is an offline-first Markdown notes app built with Tauri, React, and Rust. It is designed for local folder-based note-taking with wiki links, graph navigation, a modern editor, and strong customization.

Your notes are ordinary Markdown files in an ordinary folder. No account, no database — git them, put them in any sync folder, point the built-in S3 sync at your own bucket, or leave them on a USB stick. Native installers stay under 10 MB.

Four views of Marky: a daily note, the appearance settings with theme previews, a note with highlighted Rust code, and the note graph

Download

Download the latest desktop build from the Marky releases page. Installers are attached to each GitHub release after the app is built.

On macOS you can also install with Homebrew:

brew install --cask amiralibg/marky/marky

Current version: v1.8.9.

Highlights

  • Local-first workspace (notes are normal files in your folder)
  • Saves itself as you type — nothing to remember, nothing left unsaved
  • CodeMirror 6 editor with split/preview modes
  • Wiki links ([[Note]]) with backlink tracking
  • Interactive graph view for note connections
  • Global fuzzy search across note titles and content
  • Command palette for quick actions and note switching
  • Templates and scheduled note creation (daily/weekly/monthly)
  • Markdown extensions: Mermaid, KaTeX math, footnotes, code highlighting
  • Themes, accent colors, app-wide text size, customizable keyboard shortcuts, Vim mode
  • AI integration via Model Context Protocol (MCP) Server for Claude Desktop, Cursor, etc.
  • Git sync — back your vault up to any git remote, with real history you can inspect
  • Cloud sync with any S3-compatible storage (AWS S3, MinIO, Backblaze B2, Wasabi, Hetzner…)
  • Auto-sync in the background: on an interval, after you stop typing, or when Marky regains focus
  • Workspace ZIP backup export
  • File watcher sync for external changes (other editors, git pulls, etc.)

Features

Git sync

  • Your vault becomes an ordinary git repository, backed up to any remote — GitHub, GitLab, Gitea, or a bare repo you own
  • Every sync is commit -> fetch -> merge -> push, so you get a real, inspectable history
  • Conflicts never produce markers. A note edited on two devices keeps both versions: yours stays where it is, and the other lands beside it as Note (conflict 2026-08-25 15-42).md
  • Works with the git already on your machine — no bundled binary, nothing extra to configure
  • HTTPS access tokens, SSH agent, or an SSH key file
  • Configure it in Settings -> Git sync

Auto-sync

  • Syncs on an interval, after a pause in your typing, when Marky regains focus, or when you come back online
  • Only one sync ever runs at a time; requests that arrive during one are folded into a single follow-up
  • Offline is not a failure — it waits, then catches up
  • After a real error it retries on a widening delay and stops after five in a row, rather than hammering a remote that is rejecting it
  • Configure it in Settings -> Auto-sync

Cloud sync (S3-compatible)

  • Sync your workspace across devices using your own S3-compatible bucket — your data stays yours
  • Works with AWS S3, MinIO, Backblaze B2, Wasabi, Hetzner, and other providers (path-style URLs)
  • Manual "Sync now" push/pull; last-write-wins per file, and nothing is ever deleted on either side
  • Requests are signed locally (SigV4); credentials live in your workspace settings on your device
  • Configure it in Settings -> Cloud sync

AI & Model Context Protocol (MCP)

  • Built-in MCP Server (@marky-app/mcp-server) connects your notes to Claude Code, Claude Desktop, Cursor, OpenCode / Cline, ChatGPT, Zed, and other AI tools
  • AI tools can fuzzy search notes, read full content, create new notes, append daily logs, inspect backlinks, and query tags
  • In-app 1-click config generator in Settings -> AI & MCP for all major AI clients
  • See the MCP Server Guide for setup instructions

Notes and workspace

  • Open a local folder as your workspace
  • Nested folders and notes tree
  • Multi-tab editing
  • Create, rename, move, and delete notes/folders
  • Drag-and-drop reorganization
  • Recent notes and pinned notes
  • Undo last delete

Editor and preview

The same note shown twice: on the left its raw Markdown source, on the right the reading view with a rendered Mermaid diagram and KaTeX equation

The same note in source view and reading view — Mermaid diagrams and KaTeX maths render inline, and it is still just Markdown on disk.

  • CodeMirror 6 markdown editor
  • Editor-only / split / preview-only layouts
  • Saves as you type — no save step, and no unsaved notes (manual save is still available)
  • In-editor search and replace
  • Wiki-link autocomplete and broken-link note creation flow
  • Table of contents panel for headings
  • Focus mode (distraction-free writing)
  • Automatic BiDi/RTL rendering for mixed-language notes

Discovery and navigation

  • Global search modal (Fuse.js fuzzy search)
  • Command palette (Cmd/Ctrl+K)
  • Backlink counts in the notes tree, and backlink-weighted node sizes in the graph
  • Interactive graph modal: force-directed layout, drag a node to reshape it, cursor-anchored zoom
  • Sidebar search, sorting, and tag filtering

Templates, scheduling, export

  • Built-in templates and custom templates
  • Scheduled note generation (daily/weekly/monthly)
  • Scheduled notes management UI in Settings
  • Export note as Markdown or HTML
  • Print-friendly HTML export for PDF workflow
  • Copy rendered HTML to clipboard
  • Export workspace backup as ZIP (with metadata/settings)

Tech Stack

  • Frontend: React 18 + Vite
  • Desktop runtime: Tauri 2 (Rust backend)
  • State: Zustand
  • Editor: CodeMirror 6 (+ Vim mode via @replit/codemirror-vim)
  • Markdown rendering: marked + extensions
  • Search: Fuse.js
  • Diagrams: Mermaid
  • Math: KaTeX
  • Archive export: JSZip

Getting Started

Prerequisites

  • Node.js (latest LTS recommended)
  • Rust toolchain (rustup)
  • pnpm

Install

pnpm install

Run (desktop app)

pnpm tauri:dev

Run frontend only (optional)

pnpm dev

Build

Build a production desktop app:

pnpm tauri:build

Typical outputs are generated under src-tauri/target/release/bundle/ (platform-specific subfolders such as dmg, msi, deb, etc.).

Common release artifacts:

  • macOS: src-tauri/target/release/bundle/dmg/*.dmg
  • Windows: src-tauri/target/release/bundle/msi/*.msi
  • Linux: src-tauri/target/release/bundle/deb/*.deb and/or src-tauri/target/release/bundle/appimage/*.AppImage

Testing

Run the unit test suite:

pnpm test

For testing strategy, priorities, and examples, see docs/testing.md.

Release

Before publishing a release, make sure the app version is the same in:

  • package.json
  • src-tauri/Cargo.toml
  • src-tauri/tauri.conf.json

The release workflow builds macOS, Windows, and Linux installers automatically and uploads them to a GitHub Release.

Automatic release from a tag

Use this when the code is ready and committed:

git status
git add package.json src-tauri/Cargo.toml src-tauri/tauri.conf.json
git commit -m "chore: release v1.2.4"
git tag v1.2.4
git push origin main --tags

When the v1.2.4 tag is pushed, .github/workflows/release.yml runs on GitHub Actions and creates the GitHub Release for that tag.

Automatic release from the GitHub UI

Use this if you want to release the current commit without creating a local tag:

  1. Open the repository on GitHub.
  2. Go to Actions -> Release -> Run workflow.
  3. Enter a tag such as v1.2.4.
  4. Choose whether it is a prerelease.
  5. Run the workflow.

The workflow uses GITHUB_TOKEN, so no custom token is required for normal GitHub Releases.

Local build only

Use this only when you want to test installers locally:

pnpm install
pnpm tauri:build

Keyboard Shortcuts (defaults)

  • Cmd/Ctrl+K: Command palette
  • Cmd/Ctrl+Shift+F: Search all notes
  • Cmd/Ctrl+N: New note
  • Cmd/Ctrl+Shift+N: New folder
  • Cmd/Ctrl+S: Save note
  • Cmd/Ctrl+B: Toggle sidebar
  • Cmd/Ctrl+W: Close tab
  • Cmd/Ctrl+1/2/3: Editor / Split / Preview views
  • Cmd/Ctrl+Plus / Cmd/Ctrl+Minus: Larger / smaller app text (Cmd/Ctrl+0 resets)

Shortcuts are customizable in Settings.

Project Structure

  • /src - React UI, stores, editor, components
  • /src-tauri - Rust/Tauri backend and desktop config

Roadmap

See TODO.md for the current audit-based roadmap and prioritized next work.

License

MIT. See LICENSE.

About

Offline-first Markdown notes

Resources

Stars

25 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages