One binary.
One file.
Everything in it.
- No database server
- No sync service
- No account anywhere
- the whole app
- 18 MB
- default port
- 8420
A self-hosted alternative to Notion: block-based docs, databases and real-time collaboration in one Go binary. And ChatGPT, Claude or Cursor can work in it directly, with the access you grant them.
AGPL-3.0 · free software, including at work
$ curl -fsSL https://raw.githubusercontent.com/salt-md/salt.md/main/install.sh | shDownloads the prebuilt binary for your platform, then starts on port 8420.
The hosted ones store your pages on their servers. The self-hostable ones ask you to run a database server, a cache and an object store before you can write anything. Salt.md is one process and one file.
| Tool | Runs on | Services to run | Real-time collaboration |
|---|---|---|---|
| Salt.md | Your server | 1 | Yes |
| Notion | Their servers | Hosted for you | Yes |
| Trello | Their servers | Hosted for you | Yes |
| Docmost | Your server | 3 | Yes |
| Outline | Your server | 3 | Yes |
| AppFlowy Cloud | Your server | 11 | Yes |
| Obsidian | Your own machine | None | No |
Notion, Trello, Obsidian, Docmost, Outline and AppFlowy are trademarks of their respective owners. Salt.md is an independent project, not affiliated with or endorsed by any of them, and names them here only to describe what it is an alternative to.
Service counts are the containers in each project's own docker-compose.yml, checked on 26 July 2026. Docmost and Outline each add PostgreSQL and Redis. The AppFlowy figure is its self-hosted backend, AppFlowy-Cloud, which adds a gateway, object storage, an auth service, a worker, a search service and an AI service on top of those — the desktop app is a separate component and is not what that number counts. docmost/docmostoutline/outlineAppFlowy-IO/AppFlowy-Cloud
Paste this into ChatGPT, Claude, Gemini, Copilot or whatever you already have open. It reads the machine-readable docs and then walks you through it, asking about your setup before it hands you commands.
Works in any assistant that can open a URL. If yours cannot browse, paste the contents of llms.txt after the question. llms.txt
Read https://salt.md/llms.txt in full, then walk me through self-hosting Salt.md and connecting you to it over MCP. Ask me what operating system, hosting and domain I have before giving me any commands, and give me one step at a time. Flag the licence terms and the security pitfalls as we reach them rather than at the end.
Everything below ships in the binary you just downloaded. There is no paid tier holding features back.
One binary.
One file.
Everything in it.
Type / and the toolbox opens: headings, lists, code, tables, callouts, columns. Every page is stored as open block JSON, never a proprietary format.
Turn any page into a database. Table, board and gallery — each view keeps its own filters, sorts and columns.
Four roles, and the line between them holds: an admin manages people, not content. Reaching a workspace you are not in takes time-boxed, written, audited emergency access — and its admins are told.
Live cursors and presence, and offline edits that merge on reconnect. The sync server is the same process.
Anything you can do in the interface, ChatGPT, Claude or Cursor can do over MCP. Same API, same permissions, same audit trail, scoped by token.
Not just the page — the paragraph in it. The index speaks German as well as English, and the model runs inside the binary.
Markdown in and out, a workspace archive that moves everything 1:1, and the SQLite file itself.
Interface, dates and times follow the reader, automatically or by hand. A new language is one command, and the build fails if a string is left behind.
No Postgres to babysit, no Redis, no sync server, no S3 bucket. The binary is statically linked with a pure-Go SQLite, so there is nothing to install underneath it.
Everything lives under one data directory. The built-in snapshot is transactionally consistent and safe to take while the instance is running.
A Raspberry Pi, an old NUC, a 5 € VPS. No container orchestration required, though a multi-arch Docker image is there if you prefer one.
Replace the file and restart. Open tabs notice the version change and reload themselves.
salt (single Go binary)
├── REST API (net/http)
├── MCP server (/mcp, JSON-RPC)
├── Yjs relay (WebSocket)
├── SSE change feed
├── SQLite + FTS5 (pure Go, no CGO)
└── embedded React frontend
(Vite + BlockNote + Yjs)claude mcp add --transport http salt https://your-host/mcp \
--header "Authorization: Bearer <your-token>"ChatGPT, Claude and Cursor work in your workspace directly, over the Model Context Protocol — searching it, writing pages, restructuring databases and importing from any JSON API, with the content never passing through their context window. Not a chatbot bolted onto a sidebar: the interface they connect to ships in the binary.
Anything else is best asked where the code is: open an issue.
Install it, open the browser, create your admin account. If you do not like it, delete one directory and it is gone.
$ curl -fsSL https://raw.githubusercontent.com/salt-md/salt.md/main/install.sh | sh