Vellum - Self-hosted MCP server over a folder of markdown

by
A lightweight, self-hosted MCP server that turns a plain folder of markdown into memory your AI agent can read and write. One 24 MB container, no database, no embeddings, no lock-in. Your notes stay flat files you own in git, Obsidian, or any editor. 15 MCP tools, its own OAuth, conflict-safe writes. MIT.

Add a comment

Replies

Best
Maker
📌
Hi Product Hunt! I'm Tomáš, the maker of vellum. I kept giving my AI assistant "memory" and kept ending up with the same problem: the memory lived in someone else's database, as embeddings I couldn't read, in a cloud I didn't control. So I built the opposite. vellum is a tiny self-hosted MCP server over a plain folder of markdown. Your agent reads and writes notes straight into the folder, and the folder stays flat files you own: git, Obsidian, grep, any editor. No database, no embeddings, no vendor lock-in. One 24 MB container, `docker compose up -d`, and you're done. It's fully open source (MIT). I'd love your feedback, especially on the MCP tool surface (15 tools today) and where you'd want it to go next.

The conflict-safe writes sound great since I have run into merge issues before with sync tools. One thing that would help me a lot is a built-in way to tag or scope which folders a given agent can touch, so my personal journal stays off limits when I let an assistant loose on work notes. Maybe something like per-call path prefixes or a config map that maps agent tokens to allowed directories.

 This is exactly the right instinct, and it's next on my list. I'm planning token → directory mapping: each agent token gets an allowed path prefix, so I can let an assistant loose on work notes while my personal journal stays completely off limits, same vault, different scope. Conflict-safe writes already stop clobbering; this is the missing "don't even look here" half. Really glad you raised it, it's the exact shape I want to build.

finally something that respects my markdown obsession, spun it up in docker and my agent was reading my obsidian vault in under a minute. love that the files stay flat

 This made my day, that's the whole point. Vellum serves the same folder you're already editing, so nothing gets migrated or trapped, your agent and Obsidian just work on the same flat files. And no, it's not another Python thing, it's a single Go binary, one 24 MB container, ~5 MB idle RAM. That's why it spun up so fast. 🙏

Quick follow-up on where I'm taking this next 👇

Per-agent path scoping — token → directory mapping, so one vault can safely serve multiple agents. An assistant gets loose on my work notes while my personal journal stays completely off limits. Same vault, different scope.

A desktop app — so you don't have to touch Docker at all. Same Go binary under the hood, just a one-click window into your vault.

An observability layer — it captures my Claude Code / Claude Desktop conversations, then a deterministic curator step files them into markdown for later analysis. Memory that writes itself, still as flat files you own.

All of it keeps the same rule: no database, no embeddings, no lock-in, one small Go binary.