Friday Fixes: The Agent Audits the Homelab, Then Updates Everything Itself
I wasn’t planning to touch the homelab today. Or at least, not beyond Coder. I knew Coder had shipped a new version and asked the agent to check it out. Instead of a one-line answer, it SSH’d into AI-NT-No-Problem, the box with the RTX 5090 in it, and ran a full audit of every piece of software on there. Then, with my go-ahead, it updated all of it. Start to finish, the actual command work took well under ten minutes. I didn’t touch a keyboard.
What turned into a routine tool upgrade led to some interesting findings in both Coder and llama.cpp.
The Audit Turns up Five Things Worth Fixing
The agent checked apt packages, Docker, the Coder server, cloudflared, RustDesk, the NVIDIA driver, and the local llama.cpp build against their upstream releases. Most of it was current. Five things weren’t.
| Software | Before | After | Risk |
|---|---|---|---|
| Coder | v2.36.0 | v2.37.0 | Breaking changes, but all in features I don’t use |
| apt (20 packages) | mixed | latest | Routine, mostly security patches |
| cloudflared | 2026.8.2 | 2026.8.3 | Patch only |
| RustDesk client | 1.3.9 | 1.4.9 | Minor version jump, no breaking changes |
| llama.cpp | Aug 14 build | current master | 317 commits, no breaking changes for my setup |
Docker Engine, the RustDesk server container, Terraform, and the NVIDIA driver were already current, so those got a pass. The apt batch pulled in containerd.io, docker-compose-plugin, tailscale, and a Chrome bump, among others. All restarted cleanly, including Docker itself, which also runs the container this very workspace lives in.
Coder’s Free Features Are Becoming Premium Features and That’s Fine
The jump to v2.37.0 carries more breaking changes than one might expect for a single minor version. Chat model configs are now scoped to organizations instead of global. MCP server configs got RBAC. Native chat usage limits and cost tracking are gone, replaced by AI Gateway budgets. login_type=none is deprecated.
None of that is a surprise. Coder has been telegraphing for months that AI governance features built and shipped in beta would eventually move behind licensing, the same way most of their enterprise features work. This release just commemorates that in the changelog.
The part worth noting is how little of it actually touches individual users. It’s a no-op in the best of ways for homelabbers. Org-scoped chat models assume multiple organizations. RBAC on MCP configs assumes multiple people with different permissions. Budget enforcement assumes a team spending real money across many users. I run one organization, two users, one license-free deployment. That entire surface area, the whole point of most of this release, just doesn’t apply.
Two things in the release are genuinely useful regardless of team size. Bulk secret import means I can stop creating Coder secrets one at a time if I ever need to reseed a workspace. And a built-in browser tab for live previews inside the dashboard could replace the separate tunnel tab I usually keep open when checking a build. Coder also migrated its MCP servers, coderd, the CLI’s stdio server, and the agent client, to the official MCP Go SDK, which is the kind of internal plumbing change that quietly makes tool calls more reliable without showing up as a headline feature.
Llama.cpp’s 317 Commits Land Right Where the GPU Needs Them
The homelab’s llama-embed service runs nomic-embed-text v2-moe, a mixture-of-experts embedding model. One of the changes in these 317 commits extends CUDA’s MOE fusion to speculative decoding and removes a restriction that limited MOE-GLU and topk-router fusion to a single token at a time. That’s not a change that helps some hypothetical model I might run someday. It’s a change that speeds up the exact model already doing embedding work on this GPU right now.
The rest of the pull is a mix of new model support and smaller fixes. Qwen3.8-Flash-Next, DeepSeek V4, and Nemotron3.5 are now loadable, which gives me new candidates the next time I run a model showdown on the local bakeoff harness. Quantizing large downloads locally now caps working memory instead of loading oversized tensors straight into RAM. The server picked up a --kv-unified-per-slot option for llama-swap‘s context handling, and the old --tensor-read-lazy flag got renamed to --lazy-mode, worth remembering if any config still references the old name.
I rebuilt from source with CUDA enabled, same as before, and restarted both llama-embed and llama-generate. Both came back active on the first try.
This is the homelab I wanted when I started this. Not a system I babysit, one I ask a question and it goes and finds out, then fixes what it finds, without needing me to type a single SSH command myself.
By the Numbers
- 317 commits pulled into llama.cpp between the previous build and current master
- 20 apt packages upgraded in a single batch, including containerd, tailscale, and Chrome
- 2 full Coder minor versions skipped, from v2.36.0 straight to v2.37.0
- 2 llama.cpp services restarted after the rebuild,
llama-embedandllama-generate - 1 GPU doing all the local inference work, an RTX 5090
- 0 manual commands typed by hand