Skip to content

Instantly share code, notes, and snippets.

@sock-lint
sock-lint / killing-n8n.md
Created May 22, 2026 23:58
Killing n8n: Migrating 11 Automation Flows to Swamp in One Day

Killing n8n: Migrating 11 Automation Flows to Swamp in One Day

n8n has been running in my homelab for over a year. It handles my morning brief, daily digests into SilverBullet, weekly retro synthesis, GitHub activity tracking, task aggregation — the whole personal productivity glue layer. It works. It also drives me quietly insane.

The problems aren't bugs. n8n runs fine. The problems are operational:

No git. n8n stores workflows in Postgres. The "export" button spits out JSON that looks like a format that never considered version control. Diffing two versions of a workflow is effectively impossible. When something breaks at 2am you're staring at a visual graph trying to figure out what changed, not a git diff.

Stateful by default. n8n's workflowStaticData lets you store things across runs inside the workflow itself. That sounds useful until you realize the state is invisible, unstructured, and unrecoverable if the node crashes or you accidentally clear it.

@sock-lint
sock-lint / curating-with-swamp.md
Created May 22, 2026 23:21
Curating my media library with swamp instead of letting it grow forever

Curating my media library with swamp instead of letting it grow forever

My Plex library has 2,408 movies in it. 2,346 of them have never been played. The TV side is worse: 614 series, 563 never watched, of which 456 have already ended — they will literally never be the "I want to start something tonight" choice. None of this is a problem, exactly. Disks are cheap, the *arr stack runs itself, and I genuinely enjoy having a stocked library. But every six months I'd notice the disks were full again, panic-delete a few things at random, and resolve to "do something smarter eventually."

This is the writeup of "eventually." It runs on swamp, takes about a minute end-to-end, and the only thing it has ever deleted that I regretted is a copy of Wild Things — and even that, the system caught and refused.

Library-as-a-collection, not a queue

The first thing I had to decide wasn't technical. It was: what is this library for?