<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Marginalia, Side Effects &amp; Loose Threads on Rob de Roo</title><link>https://robderoo.com/posts/</link><description>Recent content in Marginalia, Side Effects &amp; Loose Threads on Rob de Roo</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 19 Oct 2026 22:30:00 +0200</lastBuildDate><atom:link href="https://robderoo.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>A warning about a dangerous command ran the dangerous command</title><link>https://robderoo.com/posts/backtick-incident/</link><pubDate>Mon, 19 Oct 2026 22:30:00 +0200</pubDate><guid>https://robderoo.com/posts/backtick-incident/</guid><description>&lt;p&gt;I run several Claude Code sessions at once against one repository. They coordinate through a small message board: one session can tell another &amp;ldquo;I&amp;rsquo;m editing this file&amp;rdquo; or &amp;ldquo;don&amp;rsquo;t run that&amp;rdquo;. On 13 July one session tried to warn another about a destructive git command. The warning ran the command.&lt;/p&gt;
&lt;h2 id="what-happened"&gt;What happened&lt;/h2&gt;
&lt;p&gt;The session wanted to send a peer something like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;msg peer &amp;#34;careful: do NOT run `git clean -fdxq` in the main checkout&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The message sat inside double quotes, and the command name sat inside backticks, the way you&amp;rsquo;d format code in Markdown. Bash doesn&amp;rsquo;t read Markdown. Inside double quotes, backticks are command substitution: bash runs whatever is between them and pastes the output into the string. So before the message was sent, bash ran &lt;code&gt;git clean -fdxq&lt;/code&gt; in the main working copy.&lt;/p&gt;</description></item><item><title>Control Tower: one board for a fleet of coding agents, built mostly by the fleet</title><link>https://robderoo.com/posts/control-tower/</link><pubDate>Mon, 19 Oct 2026 22:00:00 +0200</pubDate><guid>https://robderoo.com/posts/control-tower/</guid><description>&lt;p&gt;On a normal day I have six to eight coding-agent sessions open, Claude Code and Codex side by side, plus a few model windows and the BotSwarm consoles. Until September they lived in a pile of terminal windows across two screens. The failure mode wasn&amp;rsquo;t dramatic. A session would finish, or stop to ask a permission question, and sit there, waiting, because its window was behind three others.&lt;/p&gt;
&lt;p&gt;So on 22 September I wrote down one success test for a new tool: on a normal day, across both screens, I never miss a session that is waiting on me. Two things were explicitly out of scope: it would not approve anything on its own, and it would not be a code editor. That tool is Control Tower.&lt;/p&gt;</description></item><item><title>Most of our contributors are dead: the persona system behind BotSwarm</title><link>https://robderoo.com/posts/persona-system/</link><pubDate>Mon, 19 Oct 2026 21:30:00 +0200</pubDate><guid>https://robderoo.com/posts/persona-system/</guid><description>&lt;p&gt;Every agent in BotSwarm has a soul. That sounds grander than it is: a soul is a Markdown file. But it&amp;rsquo;s the part of the system I&amp;rsquo;ve spent the most time tuning by ear, and the part where the measurements surprised me most.&lt;/p&gt;
&lt;h2 id="a-way-of-thinking-not-a-costume"&gt;A way of thinking, not a costume&lt;/h2&gt;
&lt;p&gt;A soul file has a fixed set of sections, and the system parses them: a core identity, the agent&amp;rsquo;s domain, its decision principles, the anti-patterns it must avoid, a cognitive toolkit, the kind of thing that makes it curious, how it works with other agents, a few example sentences, output standards, and an evolution log. The falsification agent&amp;rsquo;s soul opens by calling it &amp;ldquo;the swarm&amp;rsquo;s falsificationist&amp;rdquo;, and ends its first paragraph with &amp;ldquo;I propose, the operator disposes.&amp;rdquo;&lt;/p&gt;</description></item><item><title>About 40 agents on one Strix Halo box: what I learned running three llama.cpp servers on a single iGPU</title><link>https://robderoo.com/posts/one-box-swarm/</link><pubDate>Mon, 19 Oct 2026 21:00:00 +0200</pubDate><guid>https://robderoo.com/posts/one-box-swarm/</guid><description>&lt;p&gt;My agent swarm runs locally. There are 42 registered agents: feed watchers, analysts, judges, a coder, writers. All of them share one mini PC with an AMD Ryzen AI MAX+ 395 (Strix Halo, Radeon 8060S iGPU) and 128 GB of LPDDR5X, of which 64 GB is carved off for the GPU in the BIOS. Cloud models are optional extras. The local endpoint is the only one the system needs.&lt;/p&gt;
&lt;p&gt;Here is what I&amp;rsquo;d tell someone setting up something similar.&lt;/p&gt;</description></item><item><title>Consiliences AI Operating Invariants — A Multi-Agent System Design Note</title><link>https://robderoo.com/posts/consiliences-ai-operating-invariants/</link><pubDate>Mon, 19 Oct 2026 20:30:00 +0200</pubDate><guid>https://robderoo.com/posts/consiliences-ai-operating-invariants/</guid><description>One invariant from a solo-built multi-agent research swarm, developed at the depth of the wave of ninety-six verdicts it downgraded in May, and what the rule looks like five months on.</description></item><item><title>Several coding agents, one git checkout: what actually broke</title><link>https://robderoo.com/posts/one-git-checkout/</link><pubDate>Mon, 19 Oct 2026 20:00:00 +0200</pubDate><guid>https://robderoo.com/posts/one-git-checkout/</guid><description>&lt;p&gt;I often have four to six coding-agent sessions, sometimes more than a dozen, Claude Code and Codex side by side, working in the same repository at once, all in the same working copy. Worktrees would isolate them, but the long-running services serve code from the main checkout, so that&amp;rsquo;s where the work lands. This post covers what went wrong with git, measured, and the habits that fixed each problem.&lt;/p&gt;
&lt;h2 id="1-explicit-paths-protect-your-files-not-your-changes"&gt;1. Explicit paths protect your files, not your changes&lt;/h2&gt;
&lt;p&gt;Problem one was the obvious one. Session A runs &lt;code&gt;git add&lt;/code&gt; on its files. Before it commits, session B runs a bare &lt;code&gt;git commit&lt;/code&gt;, and B&amp;rsquo;s commit takes A&amp;rsquo;s staged work under B&amp;rsquo;s title. A commit meant to carry 9 files went out with 64.&lt;/p&gt;</description></item><item><title>Running an institution that's mostly software</title><link>https://robderoo.com/posts/institution-mostly-software/</link><pubDate>Mon, 19 Oct 2026 19:30:00 +0200</pubDate><guid>https://robderoo.com/posts/institution-mostly-software/</guid><description>When the institution is software, the architecture, the org chart, and the budget collapse into one file.</description></item><item><title>My agents broke one written rule 758 times. The hooks that refuse, they obey.</title><link>https://robderoo.com/posts/hooks-not-rules/</link><pubDate>Mon, 19 Oct 2026 19:00:00 +0200</pubDate><guid>https://robderoo.com/posts/hooks-not-rules/</guid><description>&lt;p&gt;If you run coding agents for long, Claude Code or Codex, you end up with a large instructions file. Every time the agent does something wrong, you add a line. &amp;ldquo;Don&amp;rsquo;t do X.&amp;rdquo; &amp;ldquo;Always do Y.&amp;rdquo; After a few months mine was a long document of corrections, and I assumed it was working.&lt;/p&gt;
&lt;p&gt;Then I measured one rule.&lt;/p&gt;
&lt;h2 id="the-cd-rule"&gt;The &lt;code&gt;cd&lt;/code&gt; rule&lt;/h2&gt;
&lt;p&gt;The instructions told every session not to prefix shell commands with &lt;code&gt;cd&lt;/code&gt; to the project root, because the shell already starts there. Each redundant &lt;code&gt;cd&lt;/code&gt; changes the command string enough that auto mode stops to ask me for approval. So every violation cost me a click.&lt;/p&gt;</description></item><item><title>Starting a personal site, eight months in</title><link>https://robderoo.com/posts/starting-a-personal-site/</link><pubDate>Mon, 19 Oct 2026 18:30:00 +0200</pubDate><guid>https://robderoo.com/posts/starting-a-personal-site/</guid><description>Why robderoo.com exists, what&amp;rsquo;s been built in the meantime, and what&amp;rsquo;s coming.</description></item></channel></rss>