What linden.md can do
The story explains why linden.md exists. This page tells the handful of ideas that make it different; the docs carry the full reference and step-by-step guides.
One library, on every device you own
Everything in Linden lives in a single library: notes, tasks, tags, attachments, history. Edit on your Mac and the change lands on your iPhone in about half a second. Every device keeps a full local copy, so the whole library works offline; when a device reconnects, it replays exactly what it missed and rejoins the live stream. No merge day, no conflicted-copy files, no sync folder to babysit.
A computer in your closet, reachable from anywhere
Self-hosting usually dies on one rock: your home router. Linden's daemon never asks you to port-forward anything. It dials out to the gateway on port 443, the same port your browser uses, and holds that single connection open. Requests for your library travel back down the line it opened.
That flips the hard problem. Your daemon can sit behind any home NAT, an office firewall, or hotel Wi-Fi, and your phone still reaches it from the other side of the world. No static IP, no DDNS, no VPN. Install it on a Mac mini in a closet and you are done.
And because the tunnel makes your daemon reachable, it makes it reachable by your agents too. A hosted AI like claude.ai can talk to a computer under your desk. That one property is what makes everything in the next section possible.
The gateway is a blind relay
The other end of that tunnel is the gateway we run at linden.md. It gives your library a stable public address (you.linden.md, or your own domain) and matches each incoming request to whichever daemon is yours. Then it gets out of the way: it stores nothing and reads nothing. Your content passes straight through to your daemon, so there is no copy of your library on our side to breach, subpoena, or lose. On your own network you can skip it entirely.
Open to any agent you trust
Every Linden account is an MCP server at https://you.linden.md/mcp. Claude, ChatGPT, Grok, Gemini CLI, Cursor, Claude Code, or anything else that speaks MCP connects to that one address, whether it runs in a vendor's cloud or in your terminal. A connected agent gets 40+ tools: search by meaning, read and write notes, manage tasks and whole project plans, attach files, publish posts. Every connection is scoped and revocable, and every edit an agent makes is versioned.
The difference between an agent that helps and an agent that makes a mess is context, so the first tool an agent calls is agent_guide: your instructions, your tag taxonomy, and how notes should be filed into the tree you already keep. You write that manual in Linden itself by tagging notes #agent-guide. Teach it once and every agent from every vendor follows the same house rules. Per-client setup steps are in the docs.
Your agents' shared memory
Chat memory dies with the chat, and it belongs to one vendor. Your Linden library is memory that persists: tell Claude to save a decision on Monday, and Gemini can recall it Thursday. Plan a product with one agent at your desk, then pick the thread up with another agent on your phone. The knowledge belongs to you, not to whichever assistant happened to be open.
Keep an agent connected as you code, plan, or research, and ask it to log decisions and capture findings as you go. Your notes become the durable record of work that used to evaporate when the session ended, searchable by meaning, versioned, exportable, and compounding across agents and years. Memory this personal should not live in a vendor's black box.
Search that finds what you half-remember
Linden searches two ways at once. Keyword search is instant, local, and works offline: exact strings, names, hashtags. Semantic search finds notes by what they are about, so "that thing about gearboxes" surfaces the right note no matter how you phrased it. The apps blend both; tap the sparkle to lean into meaning.
Search reads your files too: Linden pulls the text out of PDFs and office documents and runs OCR over images, so a note is findable by what is inside its attachments. Semantic search runs on vector embeddings from a provider you choose, with your API key stored on your daemon and nowhere else (on Linden Cloud it works out of the box). The mechanics live in the docs.
Notes that run software
A note can hold a working prototype. Fence a block as embed and Linden renders the HTML, CSS, and JavaScript inside as a live, interactive panel, in the editor and everywhere the note goes. Embeds can pull real libraries (React, Vue, D3, Tailwind) from a curated set of CDNs, so a running component sits next to the paragraph that describes it.
This is what brainstorming a product in Linden looks like: sketch the idea in prose, ask a connected agent to mock it up, and a live React prototype appears in the same note, interactive, resizable, and versioned with everything else. Mermaid diagrams render live below their editable source, code blocks are syntax-highlighted, math renders with KaTeX, and it all runs in a locked-down sandbox that is safe even on a public post. See it step by step in the brainstorming guide.
The everyday parts
The rest of Linden is the solid, unsurprising second-brain toolkit, documented in full on the docs:
A task is a note with a status: due dates, reminders, Inbox / Today / This week, one-swipe triage.
Links, backlinks & epics[[note links]] with automatic backlinks, and checklists whose items are real, live sub-task notes.
Publishing & sharingAny note can become a post on your own site, or go out as a private share link you can revoke.
Email captureForward anything to your private @in.linden.md address and it lands as an Inbox note.
BackupsContinuous, to an S3 or B2 bucket you own; a fresh machine restores itself on first boot.
Import & exportPlain-Markdown export of everything, any time, plus full-fidelity imports (including Bear).
Knowledge packsInstall a versioned slice of notes (onboarding, agent guides, or packs others publish) without merging whole libraries.
Start growing yours
Grab the apps, install the daemon with one command, and pair them with a QR code. Ten minutes, start to synced.
