Fourth week in the same band. The fleet logged 380 hours against 38.6 of mine, and the ratio came out just under ten to one. Four weeks is long enough to stop calling it a coincidence. The fleet’s hours move with what’s in flight. Mine sit where they sit, because there are only so many decisions I can make in a day, and every one of them has to go through me.
Two corrections, because this log is only worth reading if the numbers are honest.
The fleet counter had been reading Claude Code transcripts and ignoring Codex entirely, while the operator counter counted my Codex prompts the whole time. So every fleet hour Codex worked was invisible, and the ratio I’ve been publishing was too kind to me in one direction and too harsh in the other. It’s fixed. Week three was really 367.5 hours, not the 350.4 I published. Week two was 433.2, not 391.8. Week one can’t be recounted at all, because the transcripts the number is computed from were being deleted on a rolling thirty-day timer nobody had configured. That one’s fixed too, and it’s the more embarrassing of the two: the record that proves the operation works was itself unmanaged.
And “shipped” had no rule behind it. The methodology page said it counted artifacts that left the building, which for week three was seven releases. The strip said 162. Neither I nor the fleet could reproduce that number, because nobody had ever defined it. It now means one thing: work merged to the default branch, one pull request, one count. Every past week is restated on that rule. The numbers move, some of them a lot, and I’d rather that than a tidy series I can’t defend.
Last week Breeze locked the doors. This week it learned that a managed service provider isn’t one shop, it’s a hundred shops with one operator, and the software has to know the difference.
What shipped
Breeze. The spine of the week was partner-wide configuration, landed in four phases. Until now a policy belonged to one organization, which meant an MSP running sixty clients wrote the same patch policy sixty times and got sixty chances to get it wrong. Now a partner owns a policy once and it applies across the book: patch enablement and the capability gate first, then compliance, sensitive-data, peripheral, and maintenance, then the alert delivery rails (channels, routing, escalation), then automations. Each phase carries dual ownership, so an org can still hold its own policy where it needs to, and the two can’t silently collide.
The money side kept growing. Quotes learned deposits, either a percentage or specific lines, with deposit-first invoicing behind it, and the quote editor got the overhaul it had been owed. Reports started running on their own: scheduled execution, PDF attachments on the email, an executive-summary cover, and trend deltas so the number has a direction and not just a value.
The integrations got a working surface. Vulnerabilities picked up a fleet triage UI, Incidents became EDR-aware with a unified feed, UniFi learned self-hosted controllers with no cloud key required, and DNS security picked up a Pi-hole v6 client. Partner-scope SSO landed for MSP technicians, with login-page branding to match. And a small fix with a large consequence: MCP now allows anonymous dynamic client registration, which is what lets Claude and ChatGPT actually connect to a Breeze tenant.
Five releases went out in the open, v0.87.0 on the 29th through v0.91.0 on the 4th, all on GitHub, each through the gate.
Hive. The week Hive started watching itself. The daemon now hosts the dashboard in-process with a live registry and queue, and the agent streams task lifecycle and session events into it, so a running fleet is something you can look at instead of something you infer from logs afterward. The security pass that came with it is the part worth saying out loud: signing keys had been committed to the repo. They were removed and the key material is ignored now. They were never trusted by Delegant, so nothing downstream was exposed, but committed keys are committed keys and the honest move is to say so.
Pressless. A churn layer, built properly. Spec first, then the plan, then the client library, then subscriber sync on signup, subscription change, and domain add, then a one-time backfill for everyone already in the door. Customers who cancel now enroll in a win-back sequence instead of just leaving. Underneath, the models moved to Sonnet 5 across every tier and the Claude Agent SDK went 0.2 to 0.3. And a billing correction that costs us money on purpose: failed generations get billed, because pretending they were free was hiding how often they failed.
OliveTech. Workflow level, as always. No client names, no client data. The same triage stack running behind the same review gate.
One miss
Delegant logged zero fleet hours this week, and last week’s entry said it owed the next step on the Clio door.
The product isn’t dropped. The Clio door is still the right build, and it’s still the clearest answer I have to what we do that a general AI tool doesn’t. What I dropped is using Delegant myself. My own M365 work and my own workflows went back to running without it, straight at the tools, ungoverned, because that’s faster on a Tuesday.
That’s the part worth admitting. We tell firms the difference between trying AI and operating it is that someone governs what the AI does and can prove what it did. My own desk is the one place I could show that instead of saying it, and I quietly stopped. A zero in the Delegant column isn’t a roadmap decision. It’s me not using my own tool.
What’s queued
Breeze turns the partner-wide foundation into the thing an MSP actually feels: policies that a partner can hand to a selectable subset of orgs, not just all of them or one. The security review that’s been running in the background comes home. And the console starts speaking languages other than English, because “no IT department required” doesn’t mean much to a firm whose staff doesn’t work in English.
If you’re doing the math on what one person and a fleet can hold, there’s a door.