<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nixos on thelastguardian.me</title><link>https://thelastguardian.me/tags/nixos/</link><description>Recent content in Nixos on thelastguardian.me</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 26 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thelastguardian.me/tags/nixos/index.xml" rel="self" type="application/rss+xml"/><item><title>Teaching an Agent to Click on Wayland</title><link>https://thelastguardian.me/posts/2026-04-26-screen-control-on-wayland/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://thelastguardian.me/posts/2026-04-26-screen-control-on-wayland/</guid><description>&lt;p&gt;Second half of giving the assistant hands: driving the actual screen.&lt;/p&gt;
&lt;p&gt;In the &lt;a href="https://thelastguardian.me/posts/2026-04-19-teaching-an-agent-to-use-a-browser/"&gt;last post&lt;/a&gt; I got an agent driving a browser - Selenium against a copy of my Firefox profile for anything on my own accounts, Playwright for the clean-room jobs. That didn&amp;rsquo;t cover native desktop apps with no DOM to drive, or the occasional site where only my &lt;em&gt;actual&lt;/em&gt; running browser, with my actual session, would do.&lt;/p&gt;
&lt;p&gt;Instead of controlling a browser, control the screen: move the real mouse, press real keys, against whatever window is in front of me. If the agent can operate the machine the way I do when I&amp;rsquo;m sitting at it, the browser and the native app stop being two different problems.&lt;/p&gt;
&lt;p&gt;On GNOME on Wayland, that took a lot longer than I expected.&lt;/p&gt;</description></item><item><title>A Discord Control Plane for Autonomous Agents</title><link>https://thelastguardian.me/posts/2026-03-29-discord-control-plane-for-ai-agents/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><guid>https://thelastguardian.me/posts/2026-03-29-discord-control-plane-for-ai-agents/</guid><description>&lt;p&gt;Another piece of the assistant: being able to answer it when I&amp;rsquo;m not at the desk.&lt;/p&gt;
&lt;p&gt;The agent stack in my homelab runs AI coding sessions unattended. A scheduler pulls recurring tasks from Todoist, launches a session to handle each one, and a control-plane timer health-checks them every couple of minutes. Most of the time I never see any of it. But unattended work still needs a human sometimes: a permission prompt, an ambiguous call, a finding worth a second opinion.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sitting at the terminal when an agent hits one of those moments. So I built a session bridge: it relays an agent&amp;rsquo;s session to a Discord thread and relays my replies back. The agent asks, my phone buzzes, I answer from the bus, the agent carries on. One thread per session, so each conversation keeps its context.&lt;/p&gt;
&lt;p&gt;The relay itself was easy. The hard part was the two failure modes I hit making it trustworthy.&lt;/p&gt;</description></item><item><title>HomeLab 2026 - The Two Datacenters</title><link>https://thelastguardian.me/posts/2026-01-25-homelab-2026-the-two-datacenters/</link><pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate><guid>https://thelastguardian.me/posts/2026-01-25-homelab-2026-the-two-datacenters/</guid><description>Six years since the last post. The lab grew up - two sites on two continents, two Kubernetes clusters, GitOps everywhere, NixOS everywhere, and a GPU that talks back. A tour of what runs today and why.</description></item></channel></rss>