Agents
It works in the workspace, not beside it.
The content your team writes is the content an agent reads and writes: same pages, same databases, same permission checks, same history. What it cannot touch is drawn on purpose: no accounts, no tokens, no backups, no instance settings. Any agent can ask for that list, and the server answers with it.
An assistant, working in the workspace
01Setup
Two lines to connect.
Sign in from the client, or create an API token in the user menu and point your MCP client at the endpoint. Either way it is scoped: to one workspace, and to read-only if you want.
claude mcp add --transport http salt https://your-host/mcp \ --header "Authorization: Bearer <your-token>"Streamable HTTP at POST /mcp. Any MCP-capable client works, not just Claude.
Works with Claude, ChatGPT, Codex, Cursor, Gemini CLI, OpenClaw, Hermes Agent and any other MCP client
Let your assistant install it with you.
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.
What agents can do
Read
- Full-text search across the workspace
- Read pages, databases and their schemas
- Follow backlinks and the page graph
- Read comments and version history
Write
- Create and update pages, append or prepend Markdown
- Create databases, views and typed properties
- Set row properties in batches
- Comment, resolve, restore revisions
Move data
- Bulk-import from any JSON API
- Map fields to database properties
- Import runs server-side, in the background
- Content never passes through the agent context
02The part that matters
Importing a Trello board should not cost 200,000 tokens.
Most integrations make the agent fetch every record and paste it back. salt.md gives the agent a URL and a field mapping instead. The server fetches, maps and writes; the agent gets a job id and a count. A board with 400 cards costs the same context as one with four.
The same board, imported twice
Typical integration
- agent → GET /board
- 400 cards → agent context
- agent → create row × 400
salt.md
- agent → import_url(url, mapping)
- server → fetch, map, write
- agent ← job id + count
03Guardrails
Tokens are scoped, actions are logged.
Workspace-scoped tokens
A token can be limited to one workspace, so an agent cannot wander into the rest.
Read-only tokens
Hand out a token that can look but not touch.
Attributed activity
The activity log records whether a change came from a person or an agent, and under whose account it happened.
Private network protection
Bulk imports refuse to fetch from private address ranges by default, so an agent cannot use the server to reach your LAN.
Install
One command. Then it is yours.
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/saltmd/salt.md/main/install.sh | sh