Lettuce app icon

Lettuce

The notes app for humans and AI

One Markdown note, used two ways:

Download for macOS

macOS 14 or later · Universal · Notarized · free forever, no account

Notarized by Apple, so it opens with a normal double-click. Install help · SHA-256

iPhone & iPad app — coming to the App Store

Lettuce showing a rendered Markdown note with callouts and code alongside an interactive knowledge graph

Everything in one fast, native app

No web wrapper, no database, no lock-in. Just your Markdown, beautifully rendered.

📝

Read & edit

Live-preview Markdown with callouts, code (copy + line numbers), tables, math, and Mermaid diagrams. Drop in a self-contained HTML file — like a Claude artifact — and it renders right in the reader. Tune typography and themes to taste.

🔗

Connect ideas

Link notes with [[wikilinks]], follow backlinks, explore the graph, and group with #tags. Your own little wiki.

AI collaborate

Bring your own key (Anthropic, OpenAI, Gemini, or a local model) — or no key at all: sign into Claude Code and Lettuce runs AI on your Claude subscription. Summarize, draft, and search by meaning — or hand the same vault to an MCP agent and review each edit as a diff. Always your call, never a silent rewrite.

🌐

Publish

Turn published notes into a fast static site with search, a graph, and tag pages, then deploy to GitHub Pages in one click.

A closer look

From a single note to a whole connected vault.

Connect ideas

Every note knows its neighbours

Type [[ to link notes, and Lettuce keeps both ends in sync. Open any note to see its backlinks, the notes it’s related to by tag, and where it sits in your graph. No manual indexes to maintain.

A note in Lettuce showing rendered wikilinks, a backlinks panel, and related-by-tag suggestions

Read & edit

Write in plain Markdown, see it come alive

Edit with inline live preview — Markdown marks and [[wikilinks]] quietly fold away as you move off a line — then flip to a clean reading view. Frontmatter becomes a tidy properties panel, and your words never leave the .md files on disk.

The Lettuce editor showing frontmatter as a properties panel above live Markdown

Collaborate with agents

Review every agent edit before it lands

Trust takes time. Mark an API key propose-only and the agent's writes queue as reviewable proposals. They never touch your files until you click Accept. Each one shows up as a unified diff with +N / −M line counts; accept commits it through the normal write path, reject discards it.

One file. Two users.

Markdown is the shared language between you and your agents, each working in the form that fits them best.

Read it beautifully

Lettuce turns raw Markdown, even an agent’s terse output, into legible HTML: callouts, clear structure, typography, and optional AI-tidied summaries. The hard-to-skim becomes easy to understand.

Agents speak Markdown

Every note is plain .md, so an AI agent can open, edit, and create notes through the built-in MCP server. No proprietary format, no export step, no copy-paste.

A real collaborator

Brief an agent in a note and it answers in the same file; it drafts and updates, you review in the reading view. Your vault becomes a shared workspace, not just an archive.

Connect your agent in one command

Lettuce ships a local MCP server. Point Claude Code, or any MCP client, at your vault.

$ lettuce serve ~/Notes
Lettuce serving ~/Notes
  MCP (JSON-RPC) → http://127.0.0.1:51234/mcp

Your agent gets first-class tools to work the vault, not a copy-paste box:

read_noteread_outlinesearchsemantic_searchanswerrelated_notesfind_duplicateslist_backlinkslink_graphsuggest_linkslist_tagsnotes_by_tagwrite_notepatch_sectionapply_editsfile_pagemove_noteingest_urllintlint_semanticlist_foldersagent_mentionspending_directivesawait_directivescomplete_directivelist_my_proposalswithdraw_proposalpropose_batchsuggest_tagstopic_mapwiki_healthwiki_maintainingest_filecreate_folderrename_folderdelete_folderget_vault_info

It runs only on your Mac, behind an API key. Every agent edit is attributed and reversible. With propose-only keys, no write touches your files until you accept it. Drop an AGENTS.md at the vault root and agents read it on connect for your conventions; reactivity rules (triggers + schedules) script when an agent should chime in without any chat at all.

Prefer not to touch a config file? Settings ▸ Agents ▸ Connect an agent generates the exact setup for Claude Desktop, Claude Code, OpenAI Codex, or Gemini CLI — and over Tailscale you can point an agent on another machine at the same vault, privately.

Scriptable from the command line

Everything the app does, the lettuce CLI does too — so you can wire Lettuce into scripts, cron jobs, and your own tools.

$ lettuce publish ~/Notes && lettuce deploy ~/Notes
Built 142 pages → site/ · pushed to gh-pages

One binary, plain text in and out — pipe it, schedule it, or call it from another agent:

servesearchansweringestrenderpublishdeployserve-siteslidesimportlintbackupdirective-workerwikikeysdigestdocs

Full reference, command by command, in the CLI cookbook.

Ask your own notes

Your vault becomes a knowledge base you can search by meaning and question directly — answers grounded in your notes, not the model’s memory.

$ lettuce answer ~/Notes "how do soft locks work?"
Lettuce locks a note while you have it open in the editor, so an
agent's write is rejected until you save or close it.
 
Sources: Concepts/Soft locks.md · Agent reference/Concurrency.md

Search by meaning

Find the note you meant, not just the words you typed. Vector search — or hybrid keyword + vector — ranks by meaning, so “how do agents avoid clobbering each other” surfaces your soft-locks note. Bring any OpenAI-compatible embeddings endpoint, including a local model.

Answers with citations

Run lettuce answer yourself, or let an agent call the answer tool — either way it pulls the most relevant passages and writes the answer from them, with links back to the exact notes. If your vault doesn’t cover the question, it says so — no invented facts.

It compounds

lettuce ingest pulls a URL, PDF, or doc into your vault; an agent distills it into a linked page and logs it. Capture, compile, query, repeat — the wiki gets sharper the more you use it.

Ways people put Lettuce to work

A dozen ready-made recipes — each a full, copy-along walkthrough in the docs.

Tasks, where you write them

Checkboxes are plain Markdown — and tasks & query blocks build live to-do lists right inside any note.

Tick them in place

Write - [ ] anywhere; in the reading view checkboxes are clickable and write straight back to the line. Plain Markdown, no separate app.

🗂️

One dashboard for everything

A Tasks view gathers every open checkbox across your vault, grouped by due date — Overdue, Today, Upcoming — check off or jump to the note.

⚡️

Capture in a keystroke

Quick-add a task (⌃⌘T) and it drops into today’s note with an optional due date — no note to open first.

Vault automation

Rules, not chat. Some agent work shouldn't need a conversation.

Drop a triggers.yml in your vault and an agent gets pinged whenever a new note lands in a folder you care about.

Drop a schedules.yml and they show up on a clock instead, appending a [!ai] directive to a templated target.

Both edit visually in Settings → Reactivity, and travel with your vault as plain YAML.

# .lettuce/triggers.yml
- when: file:created:Inbox/**
  prompt: Suggest a one-line title and three tags.

# .lettuce/schedules.yml
- daily: "08:00"
  prompt: Plan today from yesterday's open threads.
  target: Daily/{{date}}.md

Your day, in your vault

Lettuce brings the day to you — and your agents keep it tidy while you’re away.

📅

Calendar, mirrored

Your macOS Calendar (iCloud, Google, Exchange) becomes one note per day — an agenda you can annotate, refreshed while Lettuce is open. Still just Markdown your agents can read.

📨

Briefings & digests

A scheduled or on-demand summary of what changed and what’s next, written by your model into a note — and pushed to your phone.

🎙️

Capture by voice

Dictate a quick note on the go; it’s transcribed on-device and dropped into your inbox for an agent to file and enrich overnight.

Meetings, prepped

Your calendar, your people, and today’s tasks — gathered so you walk in ready.

📅

Your calendar, as notes

macOS Calendar (Google, iCloud, Exchange) mirrors to one note per day; promote any event to its own note by wikilinking it.

🧑‍🤝‍🧑

Walk in prepared

Meeting notes link each attendee to their People note, and recurring meetings keep a rolling note that carries unfinished action items forward.

☀️

Today at a glance

A Today view shows your agenda plus the tasks due today — your day in one place.

Private by design

Local-first like the tools you trust, with AI you stay in control of.

📁

Your files

Plain .md in a folder you choose. Open them in any editor. No database, nothing to lock you in.

🔌

No account, no cloud

Lettuce has no servers and no sign-up. Your notes stay on your Mac — or sync across your own Macs through iCloud Drive — and only leave it if you choose to publish.

🔑

Your AI key, direct

Keys live in your macOS Keychain and talk straight to your provider. Lettuce never sees your notes or your key.

Across your Macs, still just files

Keep your vault in iCloud Drive and it follows you to every Mac — while every note stays plain Markdown at a real path, so Claude Code and the MCP server keep reading and writing it untouched. Backed up locally, too, outside the synced folder.

☁️

Sync across your Macs

One click moves your vault into iCloud Drive — your own Apple account, no third-party server and no Lettuce sign-up. The notes stay real .md files, so your agents keep working exactly as before.

🗄️

Snapshot backups

Timestamped .zip snapshots kept outside the vault (so iCloud can’t touch them), on a schedule you set with a retention limit. Restore any one into a fresh folder — your current vault is never overwritten.

🕘

Version history

Optionally keep a full Git edit history in an external repo: every save auto-commits seconds later. Browse versions, roll any one back into a new folder, and push to a private remote if you like.

Your vault on iPhone & iPad Coming to the App Store

A full Markdown notes app on its own — and, when you want it, a companion that makes your Mac the engine room.

📝

A full notes app, standalone

Read and write Markdown with math, Mermaid, tables, callouts, [[wikilinks]], backlinks, #tags, and tappable tasks. Full-text search, folders, quick capture, on-device dictation, a Share sheet, a home-screen widget, and Shortcuts — no account, no Mac, and no AI key required.

☁️

Your iCloud vault, in sync

The very same .md files as your Mac, synced through your own iCloud with conflict-safe merges. Export the whole vault as a static site or a slide deck right from your pocket. Bring your own AI key to Ask and Chat with your notes.

📲

Pair your Mac for more

Scan a QR from File ▸ Connect iPhone and you’re linked over Tailscale — privately, nothing exposed to the internet. That unlocks whole-vault AI chat, publishing to GitHub, briefings, and Mac-powered DOCX / PDF / EPUB export.

How Lettuce compares

Local-first apps don’t do AI. AI apps put your notes on their servers. Lettuce does both, on your machine.

Lettuce Obsidian Bear Ulysses iA Writer
Plain Markdown files you own Partial
Native macOS app (no Electron)
Wikilinks, backlinks & graph Links Links
Built-in AI enhance (your own key) Plugin
Built for AI agents (MCP)
Semantic search & ask your notes Plugin
Review agent edits as diffs
Publish to a website Paid Blogs
Price Free Free* Subscription Subscription One-time

Based on each app’s standard features, July 2026. *Obsidian is free for personal use. Product names are trademarks of their respective owners.

See a real vault, published

This demo site was built and deployed straight from Lettuce, the same renderer you get in the app.

View the live demo →

Questions

Where are my notes stored?

In a normal folder you pick, as plain Markdown (.md) files. Edit them in any other app, sync them with anything, or walk away. There’s no proprietary database and no lock-in.

Is it really free? What's the catch?

Yes — no account, no subscription, no ads, no upsell. And because your notes are plain Markdown files in your own folder (no proprietary format, no lock-in), you keep everything even if you ever stop using Lettuce. You bring your own AI key, so there's no usage cost flowing through us to monetize. Download the notarized app and go.

Does Lettuce see my notes or my AI key?

No. Lettuce has no servers. Everything runs on your Mac, your API key is stored in the macOS Keychain, and it calls your AI provider directly. Notes only leave your machine if you publish them yourself.

Which AI providers can I use?

Anthropic, OpenAI, Google Gemini, or any OpenAI-compatible endpoint, including local models. You bring your own key — or skip the key entirely: pick Claude Code (subscription) and Lettuce runs AI through the Claude Code app you're already signed into, billed to your Claude Pro/Max plan. AI is always optional. (Semantic search needs an embeddings provider — any OpenAI-compatible endpoint, local ones included. The answer tool needs an LLM provider, and uses embeddings for sharper passage retrieval when one is configured.)

Can I search and ask questions across my notes?

Yes. Beyond fast full-text search, Lettuce can search by meaning (vector or hybrid) and answer questions: lettuce answer retrieves the most relevant passages from your vault and writes a cited answer grounded only in your own notes — with links back to the sources. It runs locally against your own providers (an LLM writes the answer; an embeddings provider makes retrieval sharper but isn’t required); nothing is sent anywhere else.

How do AI agents connect?

Run lettuce serve (or just open the Lettuce app, which starts the same server) and point Claude Code or any MCP client at it. Agents read, search, link, organize, and write your notes through real tools, and every agent edit is attributed and reversible. If you want a stricter posture, mark the key propose-only and the agent's writes queue as reviewable proposals. They show up in the Proposals inspector with a full diff, and never hit your files until you click Accept. Lettuce also ships a CLI (lettuce publish, lint, folder add/rename/delete, …) for scripts and CI. The detailed reference is on this site under Docs, or in the app at Settings → About → View Documentation.

What do I need to run it?

macOS 14 (Sonoma) or later, on Apple silicon or Intel. The app is a universal binary, Developer-ID signed and notarized by Apple. A companion iPhone & iPad app (iOS 17+) is coming to the App Store — it works on its own and syncs your vault through iCloud.

Your notes, your files, your machine 🥬

Open a folder of Markdown and start. Or try the built-in example vault that shows every feature.

Download for macOS

macOS 14 or later · Universal · Notarized · free forever, no account

Notarized by Apple, so it opens with a normal double-click. Install help · SHA-256

iPhone & iPad app — coming to the App Store