Self-Hosting

One Changelog for Everything: updates.4sh.dev
I now have four things that ship releases: Codex, Codex Reader, Tsundoku and Idle Beekeepers. Their release notes were spread across GitHub releases, the App Store, and a private repository nobody else can see. So I built one page for all of them: updates.4sh.dev. One card per project with its current version, and the latest updates across all of them. ...

Codex Reader: A Native iOS App for My Library
Codex Reader is live on the App Store today. It’s a native iPhone and iPad app for reading a Codex library: comics, manga and ebooks, from your own server, online or offline. Home, library, series, the comic reader, and reading stats. All screenshots use the app’s built-in demo library. Why build a native app at all Codex has a Komga-compatible API, so I’d been reading on iOS with Komic, a good Komga client. Codex also has its own web app, which installs as a PWA. ...

Reviving an IoT Project: thetalink
This project started back in 2022, when I built air quality monitors connected to Home Assistant: small devices running on solar panels and batteries. The idea behind them was bigger than air quality. Sensors like these could watch a greenhouse and act on it, track the weather, or monitor pretty much anything you care about. What really interested me was applying that to beekeeping and farming. In 2025 I took a step in that direction, monitoring my plants over LoRa, a long-range radio, with a valve for watering. Then both projects sat there. ...

Codex, Nine Months In
In May I wrote Codex, Three Months In. Codex had just replaced Komga on my server, and the big new thing was release tracking. Since then: a 2.0 release, a new way of tracking reading progress, support for running several instances, and a native iOS client that’s almost ready for the App Store. Here’s what mattered. Reading progress that doesn’t go backwards The most important change is one you’d never see in a screenshot. ...
Tsundoku Update: Closing the Loop with Codex
Since I introduced Tsundoku in June, most of what changed is small, but one thing is worth a post: Tsundoku and Codex now talk to each other in both directions. Codex and Tsundoku, both ways In June the integration went one way. Tsundoku read Codex’s series index (read-only, with an API key) so it could mark which series I already own and focus on the ones I don’t. Now it goes the other way too. ...

Building Mnemo: A Memory Layer My Agents and I Share
Every project I’ve written about this year produced the same kind of leftover: decisions. Why Tsundoku identifies series the way it does. Why Codex plugins talk over stdio. Why the third attempt at a library server used SQLite. Each took an evening of thinking, and each lived in exactly one place: whatever chat window I had open at the time. That’s the problem Mnemo solves. The line at the top of its PRD is: context is the most valuable thing you produce, and it currently lives nowhere. It’s spread across chat projects that don’t talk to each other, markdown files I forget I wrote, and notes apps that no agent can reach. ...
Building Tsundoku: Turning a Firehose of Manga Releases into a Browsable Backlog
積ん読 (tsundoku) is the Japanese word for the habit of acquiring books and letting them pile up unread. It’s an affectionate kind of self-deprecation, and it’s an uncomfortably accurate description of how I read manga. There’s always a new series I’ve heard is good, a sequel that just got a fresh volume, a thing someone mentioned in passing that I meant to look into. The pile only grows. A few months ago I wrote about Codex, the Rust digital library server I built to manage the comics, manga, and ebooks I already own. Codex is great at the “own” part. It scans my files, fetches metadata, tracks what I have. But it has nothing to say about the part that actually feeds the collection: discovery. What’s new? What got a new volume since I last looked? What have I been meaning to start but never got around to? ...

Codex, Three Months In
Three months ago I wrote about why I was building Codex: years of daily Komga use, a few stubborn limitations, and two previous attempts at building my own digital library server that fizzled out somewhere in the middle. The post was speculative in places. The core was working, but a lot of “what’s next” was still on a list. This is the follow-up. Three months of daily use later, here’s what changed, what shipped, and what I learned. ...

Why I'm Building Codex: A Digital Library Server in Rust
I love Komga. It’s been my go-to for managing comics, manga, and ebooks for years, and it genuinely does the job well. The UI is clean, the feature set is rich, and the community around it is great. If you self-host a digital reading collection and haven’t tried it, you should. But after years of daily use, I kept bumping into a few limitations that I couldn’t work around. And eventually, the itch to build something of my own became too strong to ignore. ...