DEV Community

Billie M
Billie M

Posted on Originally published at billiem.uk

Codex, fix my home server. I want to watch a film.

My home server had roughly 24 TB free and still could not import its downloads. The number for the whole storage pool looked reassuring. The branch those imports could actually use had about 99 GiB left, below its 100 GiB reserve.

Codex diagnosed the mismatch. I could have dug through it myself, but I was trying to watch a film. I didn't want to fuck about with the storage just to use the thing.

A placement change does not move existing files

My drives are pooled with mergerfs. The policy for placing new files was considering only branches that already contained the relevant directory. Two spare drives lacked that tree, so their free space did not give those imports a destination.

The pool reports about 24 TB free, but the library branch is below its reserve and two spare branches lack the directory tree required by the old policy.

A schematic of the recorded September repair. Changing new-file placement and moving existing files were separate jobs; selecting a different policy did not rebalance the data by itself.

The repair needed two pieces of work. Codex corrected the placement of new files, then separately redistributed existing ones. That rebalance moved 24 older films. Each destination passed a checksum check before the original was removed, and the relocated files were read through the normal network-storage path afterward.

Neither “copy started” nor an apparently large amount of free space was the finished result. The completion record covered the completed moves and reads.

There were interruptions too. A disconnected storage mount needed controlled recovery, and its exact cause was not established. Later, the rebalance paused when the VM's control agent restarted. Codex checked the state before resuming. Those details belong in the account just as much as the eventual recovery.

Keeping the editions I asked for

A more recent request started with a USB SSD plugged into the physical server. I wanted its Star Wars editions copied into my 4K Radarr/Plex library, with usable subtitles.

The editions were 4K77, 4K80 and 4K83. Codex verified the copies with checksums and selected the available English subtitle tracks. I asked about Radarr replacing them with a version it ranked more highly, so all three were left unmonitored to prevent automatic upgrades replacing those editions. The source SSD was unchanged and unmounted when the work finished.

Plex identifies A New Hope as 4K77 v1.4 and lists 4K HEVC video with English SRT External subtitles. The title, edition and media fields are shown in separate crops.

Three crops from the same current Plex item, captured on 6 October 2026. The edition label and English subtitle field show the resulting library entry at capture time.

I went back to sit with my boyfriend while it worked. We waited, it got the films in, and we could watch the movie.

The commands still have to reach a real server

Codex runs on my MacBook. It reaches the private server through SSH and APIs over the LAN or Tailscale. The local home-infra repository supplies inventory, operating rules, runbooks and non-secret definitions. Stack work uses Komodo and Compose; Proxmox and host operations use their own SSH/API path.

Codex runs on the MacBook beside the home-infra repository and uses private SSH/API calls to reach Komodo, Compose and Proxmox.

The documented control path runs from my MacBook over the LAN or Tailscale. The local repository supplies the inventory, operating rules and non-secret definitions.

That arrangement also handles small maintenance requests. When an email said a Usenet provider had changed its domain, I used Wispr Flow to dictate the request: find the change and update the server.

Codex checked the announcement, changed the endpoint in Prowlarr, tested it with the existing key and confirmed synchronization to all four Sonarr/Radarr instances. There was no restart needed.

A MacBook and an AI desktop app suit how I work now. I can leave the server jobs with Codex, see what happened, and move on. For that endpoint change, moving on was exactly what I wanted.


Want to talk about something I’ve written or built? Get in touch.

This article was adapted with AI assistance from an original article on billiem.uk. The original article was reviewed before publication.

Top comments (0)