{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Parallelogramist",
  "home_page_url": "https://parallelogramist.com/",
  "feed_url": "https://parallelogramist.com/feed.json",
  "description": "Running an AI agent across glasses, ring, phone, box, laptop and watch — each project written up so you could build your own.",
  "items": [
    {
      "id": "https://parallelogramist.com/writing/the-bottleneck-moved/",
      "url": "https://parallelogramist.com/writing/the-bottleneck-moved/",
      "title": "The Model Got Better. The Bottleneck Moved.",
      "content_html": "<p>This week I made the cheapest-looking change in the entire system: one default, in one config file. The background fleet — the couple dozen coding agents that take turns on my repositories while I’m away — now runs on <a href=\"https://www.anthropic.com/news/claude-fable-5-mythos-5\">Claude Fable 5</a>, Anthropic’s new top-tier model, with the effort dial parked at its highest everyday setting.</p>\n<p>Model-upgrade posts are a genre, and the genre lies. The screenshot, the “everything is different now,” the benchmark chart with the arrow. I promised this site would show the seams instead, so here is the honest version, written while the paint is still wet: what actually changed, what I can genuinely report a few days in, and what I refuse to claim yet.</p>\n<h2 id=\"what-actually-changed\">What actually changed<a href=\"#what-actually-changed\" class=\"heading-anchor\" aria-label=\"Section link: What actually changed\"></a></h2>\n<p>Fable 5 is the first model in a new family, sitting in a tier above the Opus models the fleet ran before. The headline property, for my purposes, isn’t a benchmark — it’s <em>horizon</em>. This model is built to run long: a single turn can stretch for many minutes of uninterrupted reasoning and tool use, thinking is always on, and the effort setting trades latency for depth. For interactive chat that profile is overkill. For a fleet whose whole job is to work unattended while I sleep, it’s exactly the shape you want.</p>\n<p>The switch cost nothing in the way that matters to the loop. It rides the same flat-rate plan I already pay for, so the “never spend” gate — the rule that no automation may create new costs without me — never even twitched. One config line, one commit. (The commit that flipped the default was co-authored by the model it was promoting, which I choose to find funny rather than ominous.)</p>\n<h2 id=\"what-i-can-honestly-report-so-far\">What I can honestly report so far<a href=\"#what-i-can-honestly-report-so-far\" class=\"heading-anchor\" aria-label=\"Section link: What I can honestly report so far\"></a></h2>\n<p>Days, not weeks, of evidence. With that caveat:</p>\n<p><strong>Turns got longer and check-ins got fewer.</strong> Work that used to come back as several short rounds — attempt, stall, nudge, attempt — now more often comes back as one finished stretch: the change made, the tests run, the commit written. The babysitting layer I wrote about in <a href=\"https://parallelogramist.com/writing/two-kinds-of-stuck\">Two Kinds of Stuck</a> still earns its keep, but it visibly has less to do. An agent that finishes its thought before stopping is an agent the watchdog never has to poke.</p>\n<p><strong>The stops are more interesting.</strong> When an agent halts now, it’s less often “the machine wedged” and more often “I reached a line I’m not allowed to cross alone” — push this, publish this, decide this. Which is the safety model working, and also my problem, as we’re about to see.</p>\n<p><strong>What I refuse to claim:</strong> any number. The loop’s scoreboard is time reclaimed — boring, rounded, audited — and right now it says what it said before the switch: about five hours a week handed back by a couple of deliberately dull automations that guard my calendar and triage my inbox. The new model hasn’t moved that line yet, because days-old infrastructure changes don’t move that line. If a future audit shows the number rising and the upkeep falling, <em>that</em> will be the benefit, and I’ll publish it then. Anything else would be the rocket-emoji genre with extra steps.</p>\n<h2 id=\"the-bottleneck-moved\">The bottleneck moved<a href=\"#the-bottleneck-moved\" class=\"heading-anchor\" aria-label=\"Section link: The bottleneck moved\"></a></h2>\n<p>Here’s the real finding, and it’s a little uncomfortable.</p>\n<p>Before the switch, the build engine was already outrunning me. The fleet could produce more reviewed-and-committed work in a weekend than I could thoughtfully adopt into my actual life in a month. The constraint on this whole experiment was never “can the agents build things” — it was the human gates: which automation to build next, whether a finished one deserves to go live, what gets pruned. Those decisions are mine by design, they take minutes I have to <em>choose</em> to spend, and they don’t parallelize.</p>\n<p>A meaningfully smarter model doesn’t relieve that constraint. It sharpens it. Every capability upgrade makes the cheap side of the system cheaper and leaves the expensive side — human judgment, human attention, human willingness to change a habit — exactly as expensive as before. The queue of finished work waiting at a <code>confirm:</code> gate grows faster now. The model got better; the bottleneck moved one seat closer to me.</p>\n<p>I think this is the most under-reported fact about agentic AI right now. The marginal cost of <em>building</em> is collapsing. The marginal cost of <em>adopting</em> — deciding, trusting, integrating, living with — hasn’t budged. A system design that doesn’t account for that just converts model intelligence into a longer backlog.</p>\n<p>The loop already had an answer sketched in, which is why I’m not redesigning anything: maintenance cost sits in the denominator of every score, “build nothing” is always a valid choice, and the human gates were never a temporary scaffold to automate away. They’re the product. A stronger model makes restraint more valuable, not less — there is now more horsepower behind every action I <em>don’t</em> review.</p>\n<h2 id=\"what-im-watching\">What I’m watching<a href=\"#what-im-watching\" class=\"heading-anchor\" aria-label=\"Section link: What I’m watching\"></a></h2>\n<p>One line on one chart: time reclaimed, against the upkeep it costs. If the smarter fleet turns into more hours handed back — through automations good enough that saying yes at the gate gets easier — the upgrade pays for itself in the only currency this project counts. If instead it just produces a more impressive pile of unadopted work, then I’ll have learned that the model was never the limiting reagent, and the next investment belongs in the boring side: better proposals, smaller diffs, easier yeses.</p>\n<p>The magic, as ever, is downstream of the boring config. The model is new. The rule didn’t change.</p>",
      "summary": "This week I pointed the whole agent fleet at Claude Fable 5 and turned the effort dial to its highest setting. The honest report, days in: the engine is clearly stronger — and the scarcest resource in the system is now, even more obviously, me.",
      "date_published": "2026-06-10T00:00:00.000Z",
      "tags": [
        "ai",
        "agents",
        "claude",
        "loop",
        "automation"
      ]
    },
    {
      "id": "https://parallelogramist.com/writing/two-kinds-of-stuck/",
      "url": "https://parallelogramist.com/writing/two-kinds-of-stuck/",
      "title": "Two Kinds of Stuck",
      "content_html": "<p>There’s a version of “my AI works while I sleep” that’s pure thread bait — a screenshot, a rocket emoji, a claim that the future arrived overnight. And there’s the real version, which is mostly plumbing, and which lives or dies on a single distinction I didn’t appreciate until it bit me.</p>\n<p>Here’s the setup. I run a small fleet of background coding agents — roughly one per repository, a couple dozen of them, taking turns. While I’m away from the desk they pick up work, make changes, run tests, commit. Nothing exotic; it’s the same agent I’d drive by hand, just left running on a schedule with a cap on how many go at once.</p>\n<p>The interesting part isn’t that they run. It’s what happens when they <em>stop</em>.</p>\n<h2 id=\"an-agent-stops-for-one-of-two-reasons\">An agent stops for one of two reasons<a href=\"#an-agent-stops-for-one-of-two-reasons\" class=\"heading-anchor\" aria-label=\"Section link: An agent stops for one of two reasons\"></a></h2>\n<p>Spend any time watching a fleet like this and you notice every halt falls into one of two buckets, and the two could not be more different.</p>\n<p>The first kind is <strong>machine-stuck</strong>. The agent hit the plan’s usage ceiling and the platform told it to come back later. Or it caught a transient server hiccup — a momentary “too many requests,” the kind of thing that clears on its own in a minute. In both cases the agent did nothing wrong. The world said <em>wait</em>, so it’s waiting. There’s nothing to decide here. Left alone it would sit there forever, holding a slot, doing nothing, for no good reason.</p>\n<p>The second kind is <strong>human-stuck</strong>. The agent walked up to a line I drew and refused to cross it without me. Push this branch to a remote. Send this email. Spend money. Make something go live. These are the few irreversible, outward-facing moves I never let an agent make alone, so when one arrives at the edge it stops and asks — <code>confirm:</code> this, <code>pick:</code> one of these.</p>\n<p>That stop is not a failure. <strong>That stop is the entire safety model working exactly as designed.</strong></p>\n<p>And that’s the trap. Both buckets look identical from a distance: an agent that isn’t moving. If you write a dumb script that just pokes every stalled agent with “keep going,” it will faithfully wait out a usage limit <em>and</em> faithfully click past the one gate that exists to stop it from doing something you can’t take back. The same nudge that’s obviously correct for the first kind is the single worst thing you can do to the second.</p>\n<h2 id=\"the-watchdog-only-unblocks-one-kind\">The watchdog only unblocks one kind<a href=\"#the-watchdog-only-unblocks-one-kind\" class=\"heading-anchor\" aria-label=\"Section link: The watchdog only unblocks one kind\"></a></h2>\n<p>So I built a small thing — a watchdog — whose whole job is to honor that distinction and nothing else.</p>\n<p>It’s about as dumb as a useful program can be. Once a minute it asks the agent runner who’s stalled and why. For a usage-limit stall, it reads the time the limit resets, waits for that moment to actually pass, then sends a single “continue” — exactly what I’d do if I were typing into the fleet view myself. For a transient rate-limit, where there’s no reset clock to read, it backs off and retries on its own schedule, and it <em>staggers</em> those retries across the fleet — because a rate limit usually hits everyone at once, and the last thing you want is two dozen agents all lunging back through the same door the instant it cracks open and slamming it shut again.</p>\n<p>And then the part that matters most, the part that’s defined by what it <em>won’t</em> do: it never, under any circumstances, touches an agent that’s stopped at a human gate. A <code>confirm:</code> or a <code>pick:</code> is invisible to it by construction. Those wait for me, every time, no exceptions, even at 3am when I’m asleep and the slot is idle and it would be <em>so easy</em> to just let it through. There’s also a single file I can drop to freeze the whole thing if I ever stop trusting it. The kill switch is more important than the feature.</p>\n<p>That’s the rule, stated plainly: <strong>automatically recover from the machine telling you to wait; never automatically answer a question that was meant for a human.</strong></p>\n<h2 id=\"the-night-it-ate-itself\">The night it ate itself<a href=\"#the-night-it-ate-itself\" class=\"heading-anchor\" aria-label=\"Section link: The night it ate itself\"></a></h2>\n<p>I promised on this site to show the seams, so here’s one.</p>\n<p>For a while it worked beautifully, and then one morning I found the entire fleet flatlined. Zero agents working. Two dozen of them, all parked.</p>\n<p>The cause was a perfect little knot. One agent had been nudged back to life after a usage reset — but instead of returning cleanly to <em>working</em>, it got wedged in a limbo state: the process was alive, but it never actually resumed. The keeper that staffs the fleet didn’t count a ghost like that as a working agent, so it kept trying to fill the slot. But the slot wasn’t empty. So it stalled. So it tried again. One stuck agent, multiplied by a refill loop, quietly deadlocked everything around it. The recovery mechanism had become the outage.</p>\n<p>The fix is embarrassingly boring, which is the point: now anything that’s been sitting in that limbo state for more than a few minutes gets reaped, and the slot genuinely frees up. No demo will ever show you this. It’s exactly the kind of unglamorous, load-bearing detail that decides whether “it runs overnight” is a real claim or a lie you tell on a good day.</p>\n<h2 id=\"why-the-boring-rule-is-the-whole-game\">Why the boring rule is the whole game<a href=\"#why-the-boring-rule-is-the-whole-game\" class=\"heading-anchor\" aria-label=\"Section link: Why the boring rule is the whole game\"></a></h2>\n<p>The thesis I keep coming back to on this site is that the magic is downstream of the boring config. This is the cleanest example I have.</p>\n<p>“My agents work while I sleep” sounds like a story about capability. It isn’t. It’s almost entirely a story about <em>restraint</em> — about deciding, in advance and in cold blood, the short list of things a machine may never do without me, and then building something small enough to be trustworthy that holds that line when I’m not watching. The watchdog has no judgment and I want it to have none. Judgment is the part I keep.</p>\n<p>It also has to earn its keep cheaply, because the loop underneath all of this puts maintenance cost in the denominator — anything that needs babysitting scores low and prunes itself. A watchdog that needed its own watchdog would defeat its own reason to exist. So it’s deliberately tiny and stupid: one distinction, drawn sharply, defended completely.</p>\n<p>Get that one line right and the fleet quietly hands you back your mornings. Get it wrong and you wake up to a branch you didn’t push. Two kinds of stuck. Only one of them is yours to fix while you sleep.</p>",
      "summary": "I let a fleet of coding agents run while I sleep. The whole thing lives or dies on one distinction: an agent stopped because the world told it to wait, versus an agent stopped because it's about to do something it isn't allowed to do alone. Only one of those is safe to nudge.",
      "date_published": "2026-06-06T00:00:00.000Z",
      "tags": [
        "ai",
        "agents",
        "automation",
        "loop",
        "seams"
      ]
    },
    {
      "id": "https://parallelogramist.com/writing/why-parallelogramist/",
      "url": "https://parallelogramist.com/writing/why-parallelogramist/",
      "title": "Why Parallelogramist",
      "content_html": "<p>There’s a particular kind of writing I keep wishing existed and rarely find: someone showing you the <em>actual machinery</em> of how they work with these tools. Not the demo. Not the thread that ends at “the future is here.” The seams — what broke, what they ripped out a week later, the boring config that made the magic reliable.</p>\n<p>So I’m going to write it.</p>\n<h2 id=\"the-setup\">The setup<a href=\"#the-setup\" class=\"heading-anchor\" aria-label=\"Section link: The setup\"></a></h2>\n<p>I don’t sit and grind through everything myself. The center of it is a <strong>small always-on box</strong> — the quiet machine that runs the things that need to be up when I’m not. On it lives a fleet of coding agents that take turns on my repositories: they pick up work, make changes, run tests, and commit, mostly while I’m away from the desk. I check in from my phone and a watch, the lightest glanceable surfaces, and step in only at the decisions that are mine to make.</p>\n<p>The name is the thesis. A parallelogram is a shape made of parallel sides, pushed off-square. That’s what this feels like: work happening in parallel, off to the side, while I’m doing something else — never the “normal” rectangle of sitting at a desk grinding through it alone. Work on several tracks at once, slightly skewed.</p>\n<h2 id=\"what-this-is-actually-about\">What this is actually about<a href=\"#what-this-is-actually-about\" class=\"heading-anchor\" aria-label=\"Section link: What this is actually about\"></a></h2>\n<p>The surfaces are the fun part, but they’re not the point. The point is a loop.</p>\n<p>Underneath all of it I run a self-improving system whose only job is to hand me back time and then get out of the way. Each cycle it looks at where my time actually went, scores a backlog of things I could automate by <em>value returned divided by what it costs to keep alive</em>, and proposes exactly one thing to build next. I pick one — or I pick nothing, which is allowed and often correct. It builds the thing as something reversible. It keeps what earns its place and retires what rots.</p>\n<p>The trick that makes it safe is small and load-bearing: <strong>maintenance cost lives in the denominator.</strong> Anything that needs constant babysitting scores low and prunes itself. A system meant to give you time can’t be allowed to quietly become the thing that eats it. So the reclaimed time is the headline metric, not a dashboard full of charts — and that time goes back to my family by default, which is the whole reason any of this exists.</p>\n<h2 id=\"what-youll-find-here\">What you’ll find here<a href=\"#what-youll-find-here\" class=\"heading-anchor\" aria-label=\"Section link: What you’ll find here\"></a></h2>\n<p>Three things:</p>\n<ol>\n<li><strong>The stack</strong> — the always-on box, the agent fleet, and the few surfaces I check in from. The <a href=\"https://parallelogramist.com/uses\">uses</a> page is the inventory; the writing is the real account.</li>\n<li><strong>The loop</strong> — the method for deciding <em>what’s even worth automating</em>, which I think is more reusable than any single automation.</li>\n<li><strong>The <a href=\"https://parallelogramist.com/projects\">projects</a></strong> — a 24/7 AI radio station, a searchable history app, an AI-news aggregator, the operator dashboards. What they do, how they’re built, what I got wrong.</li>\n</ol>\n<h2 id=\"whats-here-and-whats-coming\">What’s here, and what’s coming<a href=\"#whats-here-and-whats-coming\" class=\"heading-anchor\" aria-label=\"Section link: What’s here, and what’s coming\"></a></h2>\n<p>The goal is simple and a little selfish: explain these projects well enough that <em>you</em> could go build your own version. So each one gets a real write-up — what it does, how it’s wired together, and where I tripped over my own feet.</p>\n<p>The source is rolling out too. As I open each repo on GitHub, its link lands right on the project’s card — no gatekeeping, just a queue I’m working through. The handful of things that stay off the site are the boring-private ones: home-network details, family, secrets. Not a transparency flex — they’re simply not the fun part.</p>\n<p>So: real projects, explained plainly, with the code following close behind. Take what’s useful and go build something.</p>",
      "summary": "A small always-on box runs a fleet of coding agents across my repositories while I'm away. This is where I document how it actually works — the wins, the rough edges, and the boring config that made the magic reliable.",
      "date_published": "2026-05-25T00:00:00.000Z",
      "tags": [
        "meta",
        "ai",
        "stack",
        "augmentation"
      ]
    }
  ]
}