cjx-sandbox

Go · Podman · Docker · Squid

A command-line tool in Go that starts coding agents such as Claude Code, OpenAI Codex and pi.dev in a Podman or Docker container. The agent reads the project, writes only when allowed to and by default reaches the network only through a Squid proxy with an allowlist that each session gets for itself. An agent’s login and history live in a volume of their own and move between Podman and Docker, or through an archive to another machine. How it is built is in the post. The source  is on GitHub.

terraform-provider-netcup

Go · Terraform

A Terraform provider for netcup , written in Go on the Terraform Plugin Framework. It covers both of netcup’s APIs: DNS zones and records through the CCP DomainWebservice, and reverse DNS, SSH keys, firewall policies, snapshots and failover routing through the SCP REST API. The source  is on GitHub.

Temp Mail Service

Python · FastAPI · Postfix · Terraform

A disposable-mailbox service, written in Python on FastAPI. It hands out addresses on a mail domain of its own and serves whatever arrives there over a REST API. Postfix takes the mail and passes it to the app over LMTP, and the DNS (MX, SPF, DMARC, MTA-STS and TLS-RPT) is managed by Terraform through the netcup provider above. At work, a Playwright/Cucumber suite uses it to test signups with a confirmation mail. How it works is in the post.

Logi Battery Indicator

GJS · GNOME Shell · UPower · HID++

A GNOME Shell extension  that puts the battery level of Logitech input devices into the top bar: MX Master, MX Keys and their relatives, connected through a Unifying/Bolt receiver or paired directly over Bluetooth. It reads the battery levels from UPower, so Solaar is not needed. Linux supports Bolt receivers only from 7.3 on. On older kernels the extension talks HID++ 2.0 to the receiver itself. The display updates as soon as a device sends a notification, instead of polling on a timer. The source  is on GitHub.

hugo-theme-fernweh

Hugo · TypeScript · Leaflet

A Hugo theme for travel journals, with TypeScript for the map and the lightbox. It turns one folder per day into a justified album and a Leaflet map, both built from the photos’ EXIF data. Capture time sets the order, GPS position the place on the map. The source  is on GitHub.