<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Welcome on My House Runs on an AI Agent</title><link>https://psykosoldier.github.io/blog/categories/welcome/</link><description>Recent content in Welcome on My House Runs on an AI Agent</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 24 Sep 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://psykosoldier.github.io/blog/categories/welcome/index.xml" rel="self" type="application/rss+xml"/><item><title>Welcome — Running a Home on an AI Agent, and Writing Down What Breaks</title><link>https://psykosoldier.github.io/blog/posts/welcome/</link><pubDate>Thu, 24 Sep 2026 00:00:00 +0200</pubDate><guid>https://psykosoldier.github.io/blog/posts/welcome/</guid><description>&lt;p&gt;I&amp;rsquo;m starting this blog for a simple reason: I&amp;rsquo;ve been running my home automation system with an AI coding agent acting less like a chatbot and more like a project lead — reading a backlog, opening pull requests, asking for sign-off on the risky stuff — for months now. It&amp;rsquo;s been genuinely useful, occasionally broken in genuinely funny ways, and at this point my AI agent has more commit access to my house than most of my actual family.&lt;/p&gt;</description><content:encoded><![CDATA[<p>I&rsquo;m starting this blog for a simple reason: I&rsquo;ve been running my home automation system with an AI coding agent acting less like a chatbot and more like a project lead — reading a backlog, opening pull requests, asking for sign-off on the risky stuff — for months now. It&rsquo;s been genuinely useful, occasionally broken in genuinely funny ways, and at this point my AI agent has more commit access to my house than most of my actual family.</p>
<blockquote>
<p>I haven&rsquo;t found much writing that treats this setup as the real, load-bearing infrastructure it actually is, instead of a novelty demo where someone asks a chatbot to turn on a lightbulb and calls it a day.</p>
</blockquote>
<p>So I&rsquo;m writing it down as it happens — the wins and the &ldquo;why is the alarm system arguing with the vacuum cleaner&rdquo; moments alike.</p>
<hr>
<h2 id="who-this-is-for">Who this is for</h2>
<p>Two groups, deliberately: people who live in the <strong>smart home / home automation</strong> world and want to see what &ldquo;AI-managed&rdquo; actually looks like day to day, not just in a demo video — and people who work with <strong>AI agents generally</strong> (coding agents, autonomous workflows, anything with real write access to something that matters) and want concrete, specific stories rather than abstract best-practice advice. If you only care about one of the two, you&rsquo;ll still get something out of the other half — the failure modes turn out to be mostly the same regardless of whether the agent is touching a door lock or a production database.</p>
<hr>
<h2 id="what-this-actually-is">What this actually is</h2>
<p>Home Assistant, self-hosted, fully version-controlled, running on real hardware sitting on a shelf in my house — not a cloud instance, not a demo VM. An AI coding agent with real write access to that configuration, a self-hosted issue tracker, and a set of deliberately scoped permissions — some things it does freely, some things need my sign-off, a few things it&rsquo;s not allowed to touch at all, on pain of a stern chat.</p>
<p>It&rsquo;s not a toy. It arms and disarms a real alarm system, controls real door locks, and decides when a robot vacuum should or shouldn&rsquo;t start based on whether anyone&rsquo;s home. Bugs here aren&rsquo;t failed unit tests you shrug off with a red CI badge — they&rsquo;re a door that doesn&rsquo;t lock, or an alarm that goes off because a vacuum cleaner committed the crime of existing.</p>
<h3 id="the-stack-roughly">The stack, roughly</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Home Assistant (self-hosted)  ──┐
</span></span><span class="line"><span class="cl">Git repo, full config in it     ├── AI coding agent, scoped read/write
</span></span><span class="line"><span class="cl">Self-hosted issue tracker       │   + a dedicated review pass +
</span></span><span class="line"><span class="cl">CI on every change              ├── external second opinions before
</span></span><span class="line"><span class="cl">Static status dashboard         │   anything safety-critical ships
</span></span><span class="line"><span class="cl">Nightly/weekly unattended jobs ─┘
</span></span></code></pre></div><p>Two physical boxes underneath all of it — a low-power mini-PC running Home Assistant itself, and a NAS doing double duty as the Git server and CI runner. The <a href="../daily-workflow/">daily workflow post</a> has the actual make/model/spec sheet, and the <a href="../architecture-deep-dive/">architecture deep-dive</a> covers how the agent process stays alive across all of it.</p>
<h3 id="a-rough-sketch-of-what-a-normal-day-looks-like">A rough sketch of what a normal day looks like</h3>
<ul>
<li>The agent starts each session by reading a running log and a backlog of open work, and checks whether I&rsquo;ve flagged anything specifically for it via a small dashboard on my phone.</li>
<li>Every piece of real work — feature, bug fix, even a documentation change — gets a short ID and a tracked issue. The open issues <em>are</em> the project status; there&rsquo;s no separate document to keep in sync.</li>
<li>Nothing risky ships on one opinion. Changes to anything safety-critical get reviewed by a dedicated review pass plus two independent second opinions from different model providers — and even then, as you&rsquo;ll see in the first real post, all three can be confidently wrong at the same time.</li>
<li>A handful of unattended jobs run overnight — light audits, health checks, security log reviews — and file findings for me to triage when I&rsquo;m back, never acting unsupervised on anything non-trivial.</li>
<li>Long sessions eventually hit a context limit and get cleared; a handoff step writes down exactly what was mid-flight so the next session doesn&rsquo;t have to reconstruct it from git history. A separate, longer-lived memory keeps track of preferences and hard lessons across all of that — not &ldquo;what were we doing,&rdquo; but &ldquo;what should never happen again.&rdquo;</li>
</ul>
<p>That last part is where most of the interesting content on this blog will come from: not the features that worked, but the specific, dated moments where the process caught something — or didn&rsquo;t, and had to grow a new guardrail afterward, usually accompanied by me staring at a diff at an unreasonable hour wondering how a robot vacuum nearly got my house burgled by itself.</p>
<hr>
<h2 id="what-youll-find-here">What you&rsquo;ll find here</h2>
<p>Mostly two kinds of posts. <strong>Incident write-ups</strong> — something broke, here&rsquo;s the actual root cause, here&rsquo;s the fix, here&rsquo;s the guardrail added so the same class of bug can&rsquo;t recur silently. And <strong>pattern posts</strong> — a piece of reusable design that came out of one of those incidents, generalized enough to apply outside my specific setup (state persistence across restarts, how to avoid an agent racing itself, why timeouts are often the wrong signal for &ldquo;a process is done&rdquo;).</p>
<p>I&rsquo;ll keep every post technical and specific — real config snippets, real reasoning, not a sanitized case study. The one thing I&rsquo;ll deliberately leave out or generalize is anything that would tell someone exactly how my house&rsquo;s security setup behaves — the <em>pattern</em> is the point, not the exact parameters of my alarm system.</p>
<p>If you&rsquo;re running something similar, or thinking about it, I&rsquo;d genuinely like to hear what&rsquo;s broken for you too — that&rsquo;s a big part of why this is public instead of a private notebook.</p>
<p>First real post is up next: <a href="../three-ai-reviews-agreed/">three independent AI code reviews unanimously flagged the same change as critical</a>. All three were wrong, and the actual bug was something none of them found.</p>
]]></content:encoded></item></channel></rss>