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