v1.0.0 — a calm window into a folder of markdown
First stable release.
vellum is a lightweight, self-hosted MCP server over a folder of markdown files. One static Go binary with an embedded web UI, one ~24 MB Docker image, ~5 MB idle RAM.
Highlights
- Vault layer: CRUD over .md files with path-traversal/symlink protection, atomic writes, sha256 optimistic concurrency (ETag/If-Match → 409 on the REST side)
- Structure: inbox/projects/archive conventions, inbox fallback for unfiled notes
- Metadata index: tags + backlinks in RAM (1200 notes ≈ 50 ms), instant task filters
- Search: zero-dependency parallel scan with tag/dir narrowing (1200 notes ≈ 13 ms)
- MCP: Streamable HTTP at /mcp (official Go SDK), 15 tools + 6 optional curator tools, stdio mode
- OAuth 2.1: single client secret, PKCE, consent screen — vellum is its own issuer, no external identity provider
- Web UI: three-panel workspace (paper/midnight ink design), ⌘K palette, conflict dialog, self-hosted fonts
- Ops: distroless read-only container, GHCR multi-arch (amd64+arm64), security docs
Quick start
curl -fsSLO https://raw.githubusercontent.com/freema/vellum/main/docker-compose.yml
echo "AUTH_ENABLED=true
VELLUM_CLIENT_SECRET=$(openssl rand -hex 32)" > .env
docker compose up -dConnect Claude: claude mcp add --transport http vellum https://your-host/mcp
Image: ghcr.io/freema/vellum:1.0.0