marrow
Sign inOpen MarrowSelf-host

Your knowledge,
down to the marrow.

Marrow is a quiet, self-hosted knowledge base — a restore guarantee you can audit, an export bundle you can read by hand, and no vendor lock-in.

Apache 2.0 Postgres + Markdown No telemetry
HHaven Infrastructure
/ engineering / architecture / Q2 planning
A
S
L
Engineering
Runbooks
Architecture
RFCs
Q2 planning
Postmortems
Onboarding
Last edited 3 min ago · Maya

Q2 Planning — Platform

Three themes this quarter: migration off the legacy queue, shrinking our p99 tail, and paying down the ingest backpressure work.

Linked from: RFC-0142, Postmortem 2025-11-04
Name the migration DRIDraft the rollback planSocialize with SRE
3 backlinks
Onboarding / Week 1
RFC-0142 — Ingest v2
Postmortem 2025-11-04

Your notes shouldn't vanish when a vendor changes the rules. Marrow exports to files you own — the part that stays.

What's inside

The unshowy things
that compound.

No AI summarizer. No daily standup gamification. A proper editor, a proper tree, a proper search. That's most of the job.

Block editor, by the book

Slash commands, wiki-links, tables, callouts, code. Nothing you haven't seen — everything done well.

Backlinks that mean something

Every page knows what links to it — the backlink index is rebuilt on every save.

Every save versioned

Append-only history: every save is a new revision you can roll back to.

Cmd+K, and that's it

Search is the navigation. Page names, bodies, and properties — one field, one answer, anywhere in a workspace.

Your data, yours to take

Pages and history live in Postgres, attachments on disk or S3/R2 — and any workspace exports to a readable Markdown + JSON zip.

Comment, don't co-write

Threads, not cursors. For the 95% of docs that aren't meant to be live-edited.

The editor

Keyboard-first. Markdown underneath. No surprises.

Slash commands, wiki-links, drag-to-reorder blocks. Every save is versioned, and every page exports to a flat .md file.

what you see

Postmortem — ingest saturation, Nov 4

At 02:14 UTC we saw queue depth climb past 40k. Retries stacked, the downstream writer started dropping, and alerts fired 90 seconds later.

※
Action item
Add backpressure shedding on the writer before GA.
$ kubectl top pods -n ingest
writer-0 cpu=980m mem=1.9Gi
what's on disk
# Postmortem — ingest saturation, Nov 4

At 02:14 UTC we saw queue depth climb past 40k.
Retries stacked, the downstream writer started
dropping, and alerts fired 90 seconds later.

> [!action] Add backpressure shedding on the
> writer before GA.

```shell
$ kubectl top pods -n ingest
writer-0  cpu=980m  mem=1.9Gi
```

Related:: [[RFC-0142]] [[Runbook / Ingest]]
Different from the usual suspects

What you're trading, and what you're not.

Dimension
Marrow
The usual
Your data is in
Postgres you run, plus a readable export bundle
A proprietary DB you lease
Hosting
Self-host, or Cloud
Cloud only
Built-in AI
None — just your words
Mandatory. Upsold.
Pricing model
Per org, with a seat allowance
Per seat, escalating
When the vendor folds
You keep the files
You keep the zip, good luck
Self-host

One compose file.
Done.

One Docker Compose file brings up three services: the API image, the web image, and a Postgres database. Pages and history live in Postgres; attachments on the filesystem or S3/R2. Back it up by backing up the database and attachment store.

bash — marrow@prod
# 1. Pull the API image
$ docker pull ghcr.io/marrow-software/marrow-api:latest

# 2. Configure and bring up the stack (db + api + web)
$ cp .env.prod.example .env   # set POSTGRES_PASSWORD, SECRET_KEY, …
$ docker compose -f docker-compose.prod.yml up -d

✓ api on :8000  ✓ web on :3000
Why Marrow
Your knowledge base should outlive any vendor. Marrow exports to plain Markdown and JSON, and every bundle restores your workspace content with full fidelity — so your docs stay yours, wherever you run it.

“Workspace content” means the node tree, revisions, attachments, properties, and links a bundle carries. Comments, share links, and folder views are slated for a later bundle version. See exactly what round-trips.

Write once.
Keep forever.

No lock-in, no migration rituals, no someday-when-we-have-time. Start writing today.

Self-host with DockerTry Marrow Cloud