Features

Everything in the binary.

There is no feature gate and no paid tier. What follows is what you get when you install Salt.md.

Writing

The editor

A block editor built on BlockNote, with the pieces you expect from a modern document tool.

Slash menu & drag handles

Type / for any block. Grab a handle to move it.

Rich blocks

Headings, lists, checklists, quotes, code with syntax highlighting, tables, images, callouts, toggles and columns.

Page links & backlinks

Mention a page with @, and see everything that links back to the one you are reading.

Cover images & icons

Emoji or uploaded icons, cover images, and a description under the title.

Comments

Discuss inline, resolve when done. Visible in the document and on database cards.

Version history

Every page keeps revisions. Compare and restore an older state.

Structure

Databases

Any page can become a database. Rows are pages themselves, so a record can hold a whole document.

Typed properties

Text, number, select, multi-select, date, checkbox, URL, person, relation, rollup and formula.

Views

Table, Kanban board and gallery. Each view keeps its own filters, sorts and visible columns.

Kanban that behaves

Drag cards between columns, scroll columns independently, and pick your own column colours.

Filters & sorts

Stack conditions per view. Large databases page in as you scroll instead of loading everything at once.

Public forms

Share a form that writes rows into a database, without giving anyone an account.

Calendar feed

Subscribe to a date property as an iCal feed in your usual calendar app.

Together

Collaboration

Multi-user from the ground up, with the sync server built into the same process.

Live cursors & presence

See who else is on the page and where they are typing.

CRDT merge

Yjs merges concurrent edits, including ones made while offline.

Four roles, one real boundary

Owner runs the instance, admin manages accounts and workspaces without reaching anyone's content, workspace admin owns their own workspace, member and viewer get what they are given.

Emergency access, not a back door

An owner can take read-only access to a workspace they are not in: time-boxed to two hours, with a written reason, logged, and the workspace admins are emailed and can end it early.

Private pages and a private space

Keep a page to yourself inside a shared workspace, and every account gets a space nobody else can be added to.

Offboarding that does not lose things

Disabling an account is the default. Deleting one shows what hangs off it first and asks for a successor to take over shared workspaces.

Public links

Read-only sharing by link, optionally password-protected and with an expiry date.

Activity log

Who changed what, and whether it was a human or an agent.

Operations

Running it

The parts that decide whether self-hosting is pleasant or a second job.

Single binary

Statically linked, no CGO, frontend embedded. Copy it to a server and run it.

Consistent snapshots

Built-in backup and restore that are safe to run against a live instance.

Accounts & 2FA

argon2id password hashing, TOTP two-factor, optional Google and Microsoft sign-in.

Search that returns passages

Ctrl/Cmd + K over SQLite FTS5, including the text inside uploaded PDFs. It finds the paragraph, not just the page, and the index handles German as well as English.

Language and time settings

Interface, dates and times follow the reader, automatically or by hand. Adding a language is one command, and the build fails if a user-visible string was left behind.

Offline-capable

Installs as a PWA and keeps working when the connection drops.

Public access built in

Point TLS certificates at it, or let it open a Cloudflare tunnel for you.

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/salt-md/salt.md/main/install.sh | sh