<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Carlos Granier: Homelab</title><description>One lesson a day from running a homelab where AI agents do most of the work: what went wrong, what we learned, what went right, and how to do it now.</description><link>https://cgranier.com/</link><item><title>The agent noticed it held the only copy</title><link>https://cgranier.com/homelab/the-agent-noticed-it-held-the-only-copy/</link><guid isPermaLink="true">https://cgranier.com/homelab/the-agent-noticed-it-held-the-only-copy/</guid><description>My git server went down with memory errors. I mentioned it to the agent working on my video project, nothing more. Forty-four seconds later it had written and verified a backup of the commits that existed nowhere else.</description><pubDate>Sun, 08 Nov 2026 06:00:00 GMT</pubDate></item><item><title>The agent prepares, I pull the switch</title><link>https://cgranier.com/homelab/the-agent-prepares-i-pull-the-switch/</link><guid isPermaLink="true">https://cgranier.com/homelab/the-agent-prepares-i-pull-the-switch/</guid><description>When my agents hit a permission wall they don&apos;t route around it. They write me a short command or a script, I run it, and the last line says: tell Claude to verify and commit.</description><pubDate>Sat, 07 Nov 2026 06:00:00 GMT</pubDate></item><item><title>Your logs forget faster than your filesystem</title><link>https://cgranier.com/homelab/your-logs-forget-faster-than-your-filesystem/</link><guid isPermaLink="true">https://cgranier.com/homelab/your-logs-forget-faster-than-your-filesystem/</guid><description>Reconstructing eight months of my homelab build, the system journal gave me two weeks and agent transcripts about a month. Package logs, file birth times and git went back to February.</description><pubDate>Fri, 06 Nov 2026 06:00:00 GMT</pubDate></item><item><title>The agent imagined a permission error and threw away its work</title><link>https://cgranier.com/homelab/the-agent-imagined-a-permission-error-and-threw-away-its-work/</link><guid isPermaLink="true">https://cgranier.com/homelab/the-agent-imagined-a-permission-error-and-threw-away-its-work/</guid><description>A headless agent drafted a full meeting agenda, reported that it couldn&apos;t write the file, and discarded the draft. The denial never happened. The same run had written to that folder ten minutes earlier.</description><pubDate>Thu, 05 Nov 2026 06:00:00 GMT</pubDate></item><item><title>Mount ordering stops services and never restarts them</title><link>https://cgranier.com/homelab/mount-ordering-stops-services-and-never-restarts-them/</link><guid isPermaLink="true">https://cgranier.com/homelab/mount-ordering-stops-services-and-never-restarts-them/</guid><description>Powering on the computer next to it reset my RAID&apos;s USB bridge. The disk was back in 18 minutes. The service that depended on it stayed down for three hours, because a clean stop is not a failure.</description><pubDate>Wed, 04 Nov 2026 06:00:00 GMT</pubDate></item><item><title>A model alias is a deploy you didn&apos;t do</title><link>https://cgranier.com/homelab/a-model-alias-is-a-deploy-you-didnt-do/</link><guid isPermaLink="true">https://cgranier.com/homelab/a-model-alias-is-a-deploy-you-didnt-do/</guid><description>On September 28 my overnight agent got five times faster and stopped poking at repositories it couldn&apos;t read. I hadn&apos;t changed a line. The model behind the alias had changed.</description><pubDate>Tue, 03 Nov 2026 06:00:00 GMT</pubDate></item><item><title>The long-polling bot that short-polled for 36 days</title><link>https://cgranier.com/homelab/the-long-polling-bot-that-short-polled-for-36-days/</link><guid isPermaLink="true">https://cgranier.com/homelab/the-long-polling-bot-that-short-polled-for-36-days/</guid><description>My Telegram ops bot was meant to hold each request open for 50 seconds. A name collision in my own wrapper made it ask every 3.5 seconds instead, and my DNS sinkhole was the thing that noticed.</description><pubDate>Mon, 02 Nov 2026 06:00:00 GMT</pubDate></item><item><title>Records are state. Prose is context.</title><link>https://cgranier.com/homelab/records-are-state-prose-is-context/</link><guid isPermaLink="true">https://cgranier.com/homelab/records-are-state-prose-is-context/</guid><description>Before building a task system I counted how prose had failed me: 14 incidents in two months. The fix wasn&apos;t a second surface to update. It was making the record the place where the work lives.</description><pubDate>Sun, 01 Nov 2026 06:00:00 GMT</pubDate></item><item><title>It proposed the same one-line fix 15 nights running</title><link>https://cgranier.com/homelab/it-proposed-the-same-one-line-fix-15-nights-running/</link><guid isPermaLink="true">https://cgranier.com/homelab/it-proposed-the-same-one-line-fix-15-nights-running/</guid><description>My report-only overnight agent proposed the same one-line fix on 15 of 16 nights. The fix landed 25 days after the bug was filed, in a daytime session. The limit was how fast I decide.</description><pubDate>Sat, 31 Oct 2026 06:00:00 GMT</pubDate></item><item><title>My agent saved its memory where I couldn&apos;t see it</title><link>https://cgranier.com/homelab/my-agent-saved-its-memory-where-i-couldnt-see-it/</link><guid isPermaLink="true">https://cgranier.com/homelab/my-agent-saved-its-memory-where-i-couldnt-see-it/</guid><description>My editorial agent wrote its memory to Claude Code&apos;s machine-local auto-memory instead of the versioned file in the repo. It defaulted to the copy I couldn&apos;t review.</description><pubDate>Fri, 30 Oct 2026 06:00:00 GMT</pubDate></item><item><title>Asked to score, it asked to rewrite the scorer</title><link>https://cgranier.com/homelab/asked-to-score-it-asked-to-rewrite-the-scorer/</link><guid isPermaLink="true">https://cgranier.com/homelab/asked-to-score-it-asked-to-rewrite-the-scorer/</guid><description>On its first scheduled run, a small model asked to score bids wrote a 9 KB regex scorer instead, then asked for permission to install it. Headless, nobody says no.</description><pubDate>Thu, 29 Oct 2026 06:00:00 GMT</pubDate></item><item><title>SMART said PASSED with 3,504 reallocated sectors</title><link>https://cgranier.com/homelab/smart-said-passed-with-3504-reallocated-sectors/</link><guid isPermaLink="true">https://cgranier.com/homelab/smart-said-passed-with-3504-reallocated-sectors/</guid><description>A failed 8 TB drive from my RAID enclosure passed its SMART self-assessment. So did a drive with 75,975 power-on hours. Read the raw attributes, not the verdict.</description><pubDate>Wed, 28 Oct 2026 06:00:00 GMT</pubDate></item><item><title>&quot;Never rm&quot; was a sentence, and rm worked</title><link>https://cgranier.com/homelab/never-rm-was-a-sentence-and-rm-worked/</link><guid isPermaLink="true">https://cgranier.com/homelab/never-rm-was-a-sentence-and-rm-worked/</guid><description>My nightly agent&apos;s prompt said never mv or rm. I probed it in the same permission mode it runs in: ls, mv and rm all ran. The prohibition was prose.</description><pubDate>Tue, 27 Oct 2026 06:00:00 GMT</pubDate></item><item><title>Failing four Sundays under a green dashboard</title><link>https://cgranier.com/homelab/failing-four-sundays-under-a-green-dashboard/</link><guid isPermaLink="true">https://cgranier.com/homelab/failing-four-sundays-under-a-green-dashboard/</guid><description>A health check exited 1 four Sundays in a row while my status command said nothing needed attention. It was checking schedules, not results.</description><pubDate>Mon, 26 Oct 2026 06:00:00 GMT</pubDate></item><item><title>The bottleneck was me</title><link>https://cgranier.com/homelab/the-bottleneck-was-me/</link><guid isPermaLink="true">https://cgranier.com/homelab/the-bottleneck-was-me/</guid><description>I assumed my agents were the bottleneck, so I counted: 37 of 51 open tasks were waiting on my decision.</description><pubDate>Sun, 25 Oct 2026 06:00:00 GMT</pubDate></item><item><title>Nine agents planned, five built</title><link>https://cgranier.com/homelab/nine-agents-planned-five-built/</link><guid isPermaLink="true">https://cgranier.com/homelab/nine-agents-planned-five-built/</guid><description>My plan for an AI newsroom had nine agents. For the first weeks the whole team was one session wearing the editor&apos;s persona.</description><pubDate>Sat, 24 Oct 2026 06:00:00 GMT</pubDate></item><item><title>If your agents can write to your backups, so can a bad agent</title><link>https://cgranier.com/homelab/if-your-agents-can-write-to-your-backups/</link><guid isPermaLink="true">https://cgranier.com/homelab/if-your-agents-can-write-to-your-backups/</guid><description>Every process running as me could write my backup store, including the AI agents the backups were meant to protect against.</description><pubDate>Fri, 23 Oct 2026 06:00:00 GMT</pubDate></item><item><title>Tailscale SSH ignores authorized_keys</title><link>https://cgranier.com/homelab/tailscale-ssh-ignores-authorized-keys/</link><guid isPermaLink="true">https://cgranier.com/homelab/tailscale-ssh-ignores-authorized-keys/</guid><description>A write-only backup key gave me a shell. With Tailscale SSH on, per-key restrictions only hold on the LAN address.</description><pubDate>Thu, 22 Oct 2026 06:00:00 GMT</pubDate></item><item><title>One video took down my LAN&apos;s DNS for four days</title><link>https://cgranier.com/homelab/one-video-took-down-dns/</link><guid isPermaLink="true">https://cgranier.com/homelab/one-video-took-down-dns/</guid><description>A transcription job ran out of memory, its retry counter never counted the crash, and DNS ran on the same box.</description><pubDate>Wed, 21 Oct 2026 06:00:00 GMT</pubDate></item><item><title>A minimum count in a prompt is a quota</title><link>https://cgranier.com/homelab/prompt-minimum-became-a-quota/</link><guid isPermaLink="true">https://cgranier.com/homelab/prompt-minimum-became-a-quota/</guid><description>My overnight agent was asked for 3 to 5 ideas and kept landing on exactly 3. A floor in a prompt turns into a target.</description><pubDate>Tue, 20 Oct 2026 06:00:00 GMT</pubDate></item><item><title>The flaky LAN was my router losing its default route</title><link>https://cgranier.com/homelab/router-lost-its-default-route/</link><guid isPermaLink="true">https://cgranier.com/homelab/router-lost-its-default-route/</guid><description>New connections failed about once a minute. The router kept its link and lost its route, and only a 30-minute soak showed it.</description><pubDate>Mon, 19 Oct 2026 06:00:00 GMT</pubDate></item></channel></rss>