[idea:26w33-listmonk]2026-08-16

Listmonk

I spent a day at the very beginning of the week—which feels like a long time ago now—setting up a local instance of listmonk so that I can send out emails easily every time I have a new post here or on my main blog. This was a bit more finicky than I had hoped, as listmonk doesn’t provide a built-in way to treat Atom feeds like the one for this site as a source of truth for email campaigns, which is what I want. It was so frustrating, in fact, that I went searching for a different framework halfway through. Buttondown looks usable, but I wanted to self-host it, and it’s not open source. So I resisted the urge to develop my own emailing software from scratch, and stuck through configuring listmonk.

I ended up developing a custom Python CLI / NixOS module that both provisions a fresh instance of listmonk in the way that I want, and also runs a daemon that polls Atom feeds and creates new campaigns when there is new content. After a forgettable afternoon fighting with listmonk’s misshapen API, I got it working reasonably enough. When my Framework Desktop is turned on, it polls my sites’ Atom feeds, and prompts me if there are new campaigns (emails for new posts) to send out. I can adapt the template for the email, i.e. how much of the content it previews in the email itself, and send emails etc. in the listmonk frontend interface, which is… fine.

The other major hitch is that, in order to provide an endpoint through which users can automatically subscribe and unsubscribe, the service running on my machine would need an external IP address. The deeper problem is that I intentionally don’t leave my desktop on at all times, and so the service isn’t always available. I have plans to solve this deeper part with (yet another) system I’m building; but given it doesn’t exist yet, there’s no point right now in taking the trouble to expose my listmonk server to the broader Internet. My workaround at the moment is just to manually maintain the list, which means that ‘subscribing’ and ‘unsubscribing’ just amount to sending me an email. Thankfully, the readership for both this site and my blog is minuscule, and given its technical consistency many if not most of my readers know how Atom feeds work. For those who don’t, you can get on the email list by sending an email with subscribe weeknotes.ohrg.org in the header to hi [the symbol in emails] ohrg [dot] org.