A reading and writing surface on top of GitHub. Every note is a .md file in a repo you own. Delete the app tomorrow — your notes are still there.
No vendor lock-in · Zero database · Your GitHub token never leaves your server
Shipped: Markdown serializer round-trip now handles nested lists and frontmatter correctly. All 47 property tests pass.
Next: Wikilink autocomplete — index the file tree into Orama on first load, then query on [[ trigger.
See [[tree-sync-strategy]] and [[pinn]] for context.
Why Pinn
Notes are real .md files committed to your GitHub repo. Full history, blame, branches — everything git gives you, for free.
Delete Pinn tomorrow. Your notes are still in your repo, readable by any editor, searchable by grep, versionable by git.
All read your notes natively.
A floating, draggable assistant with one-tap Summarize, Rewrite, Polish, and Expand — tuned by your own system prompt. Groq-fast. Output lands as a diff: you accept or reject.
Typeset markdown by default. Double-click to edit in place; Esc snaps back. Dark, light, and sepia themes — plus focus and typewriter modes.
Every action has a shortcut. ⌘K command palette, T today's note, ⌘⇧F global search.
Type [[ to link any note — with live autocomplete and [[target|label]] aliases. Preview and edit render the same styled link.
Every keystroke is saved to IndexedDB first. Sync to GitHub happens in the background. You never lose a character.
Install @pinnapp/mcp and ask Claude to read, write, or search your notes — from the terminal.
Install @pinnapp/mcp and Claude Code can read, write, search, and append to your notes without leaving the terminal. No context switching. Your notes are always in scope.
list_notesbrowse your vaultread_notefetch content + SHAsearch_notesfull-text across all noteswrite_noteSHA-checked commitopen_daily_notetoday's journalGet started in 90 seconds
Your GitHub account is all you need.