Building a second brain with plain text

I’ve used Notion, Obsidian, Logseq, and probably three other things I can’t remember. Every six months I’d migrate. The last time I migrated, I went the other direction: plain Markdown files in a Git repo, a folder structure copied from a friend’s, and a small Go CLI for the parts that need to be automated.

The layout

~/notes
├── 0-inbox
├── 1-projects
│   ├── ko-wal-ski
│   ├── otel-sidecar
│   └── ...
├── 2-areas
│   ├── engineering
│   ├── writing
│   ├── home
│   └── health
├── 3-resources
│   ├── go
│   ├── distributed-systems
│   └── ...
├── 4-archives
└── daily
    └── 2026-06-09.md

PARA, mostly, with a daily/ directory for journaling. The numbers in the folder names are not strictly necessary but they keep things ordered.

The CLI

Three commands, written in a weekend, replaced four SaaS features:

notes new "Title here"     # creates a stub in 0-inbox
notes review              # walks the inbox, prompts to triage
notes today               # opens today's daily note

notes new is a 12-line script that creates a file with a YAML frontmatter and a sensible template. notes review is the only interesting one — it walks the inbox, reads the first heading, and asks me where it should go. Twenty seconds a day, and the inbox never has more than ten items.

What I gave up

  • Backlinks. Obsidian’s killer feature for me was the graph view. I don’t miss it. I miss it once a quarter, then I find what I need with grep.
  • Mobile editing. I do 95% of my writing on a laptop. The remaining 5% is on my phone, and the friction of git pull over cellular is real but tolerable.
  • Pretty formatting. Everything is monospace now. Tables are painful. But I write more because writing is fast.

What I gained

  • It will outlive the company. Every tool I used before this has either changed its pricing, changed its file format, or shut down. Plain text in Git will be readable in fifty years.
  • It costs nothing. No subscription, no sync fees, no “pro” tier.
  • I can script it. The whole point of having a CLI is that I can add features in an afternoon. The last one I added was notes review --tag retro to filter by frontmatter tag.

← Back to all writing