Projects
Things I build and run.
Mostly infrastructure I needed and could not buy in a shape I liked. All of it open source, all of it running somewhere that matters to me.
-
ihasmail (opens in a new tab)
In productionImmutable webmail for Stalwart
A Gmail-class mail, calendar, contacts and files client that speaks only JMAP — no IMAP, no SMTP, no database, and with IMMUTABLE=1 no writable filesystem either. The container has nothing to persist, so there is nothing on the client side to back up.
NodeJMAPStalwartAGPL-3.0
Site (opens in a new tab)Docs (opens in a new tab)Source (opens in a new tab)
-
Cairn OBS (opens in a new tab)
In developmentKubernetes-native log aggregation
Open-core observability built to match Splunk on capability and beat it on cost-per-GB, with multi-tenant RBAC that is honest about what it isolates. AGPLv3 throughout, enterprise directory included.
KubernetesSvelteKitAGPL-3.0
-
stalwart-migrator (opens in a new tab)
Used in productionIn-place Stalwart upgrades
Takes a Stalwart Mail Server from 0.15.5 to current without data loss, checkpointing every step so an interrupted run resumes rather than restarts. Go, standard library only. It has moved a live nine-domain server with eight seconds of downtime.
GoStalwart
-
Bash for the jobs that recur
Fifteen distribution-agnostic scripts for backups, logs, monitoring, users, services and updates, using only base utilities. Everything destructive takes --dry-run and confirms first — and with no terminal to ask on it refuses rather than guessing, which is what makes them safe to put in cron.
BashShellCheckGPL-3.0
-
Where the archive lives
The site these articles were published on, and its custom WordPress theme — dark-first, monospace chrome over a humanist serif body, built on WordPress's own taxonomy so existing permalinks carried over untouched. Still running; new writing lands here instead.
WordPressPHP