The video above is just part of the story. This week i shipped six releases of Respira plugin and two new “products”.
Self-Heal on Monday. Four patches across Tuesday, Wednesday, and Thursday. Bloom on Thursday afternoon. A Cowork plugin to Anthropic’s marketplace and a SDK for themes and plugin developers yesterday. The two months that built up to this week were a different story.
That story starts with a customer i’ll call M.
He runs an Oxygen Classic site. He bought a Respira license. He asked Claude Code to build a page. The build returned success: true. The page rendered as a blank section between his theme’s header and footer.
For two months and eight releases, every patch i shipped fixed something real and still produced the same blank page. v6.8.3: prefixed-meta-key migration. Blank. v6.10.1: malformed -0 selector. Blank. v6.10.3 and v6.10.4: a double-nested ct_options.original.original shape that even now i wince typing out. Blank. v6.11.0: integer ct_ids instead of string GUIDs. The page rendered.
The bug, finally: Oxygen’s CSS regenerator expects numeric ct_id. The lookup missed. CSS never got generated. The page rendered without its styling.
The success response was technically true. The CSS file just never got made.
If you have ever debugged a system where every layer reports healthy and the user still sees nothing, you know exactly the flavor of this.
Self-Heal, the apology in code
i shipped v6.11.0 on Monday and called it Self-Heal.
It closed fourteen specific customer bugs across five named trial threads, plus seven public github issues, plus five cross-cutting audits chasing the family-shape of bug those trials revealed.
That family shape, in one breath: the write succeeds, the data looks fine, the renderer disagrees, the user sees a broken page.
Three independent customer trials surfaced bugs that turned out to share that shape. M’s Oxygen render. A pro-services firm’s HTML-to-Breakdance pipeline producing 100 % instead of 100% (yes, with a space; yes, that’s what specificity-aware spacing does to you when you’re not paying attention). A Divi 5 calibration loop where the LLM kept writing <ul><li> because the schema didn’t show that Divi handles bullets natively.
Three customers. Three builders. One bug. Self-Heal repaired each by name, and ran five audits across the codebase to keep the shape from coming back.
The five audits are the Self-Heal posture: respira recovers gracefully where it used to fail silently. That sentence is the difference between a bug-bash release and a posture release.
Bloom, the shelf the bowls sit on
Three days later i shipped v7.0.0. Bloom.
If Self-Heal was kintsugi (the bowl, repaired, with the gold seams showing), Bloom is the shelf the bowl sits on. Bricks, Divi, Elementor Atomic, Oxygen, Beaver, Breakdance, and WPBakery all got their own work in this release. Seven flowers, one per adapter.
But the structural piece of Bloom isn’t the seven flowers. It’s five cross-cutting invariants every adapter inherits, going forward and forever.
After every write, every adapter HEAD-fetches the preview URL and parser-walks the persisted data. Nine parsers ship in Bloom, one per builder. The success response can no longer lie.
Every adapter exposes a write trace: route, target, validator warnings, render-validator pass, parser error, preview status, preview response time. Everything leaves fingerprints. The next M will be visible in the trace within minutes, not eight releases.
A universal Variables CRUD shape across builders. A designer can build a Figma-to-builder pipeline once and have it work across every builder Respira supports. (This one has been a long-running pet feature. Saying it out loud here is a small private joy.)
Per-builder catalog auto-scan from source. WPBakery jumps from 1 module to 87. Oxygen from 7 to 42+. The catalog stops being a hand-curated list i forget to update.
Per-property typed validators. Twelve canonical type slugs that know what each renderer will actually accept.
Pre-Bloom, an adapter’s job was to produce a persisted blob the builder accepts. Post-Bloom, the job is to produce output the builder also renders correctly. Higher bar. Surfaces a class of bugs the older bar didn’t catch.
The customer who didn’t see what was happening
A different customer wrote to me a few days after Bloom.
He’d taken the trial. He hadn’t hit a specific bug. He’d hit something subtler: he couldn’t see what Respira was doing on his behalf, and that bothered him.
His exact words, exported from the file system that came out of his preferred workflow:
i found the workflow i wanted worked better if i get AI to make changes direct to html code bypassing the API altogether.
I sat with that for a few hours. He’s right that visibility matters. He’s right that watching Claude write code in a file is more transparent than watching Claude report success against a black-box API.
He’s also describing a workflow that works for one site he owns and would not survive contact with twelve client sites running across nine different page builders. Direct HTML editing skips the database. Skips post_meta. Skips shortcode parsing. Skips builder cache invalidation. Skips snapshots. The visibility he gained came at the cost of every safety primitive that makes AI editing trustworthy on production sites.
But the visibility was real. And the trade he was making to get it told me something true.
What was invisible to him about Respira’s workflow:
He talked to Claude. Claude called a tool. The tool sent a payload to a plugin endpoint. The plugin updated post_content. Claude said “done.”
He had to refresh to see the result. Snapshots existed; he didn’t know. Render-validation gates fired; he didn’t see them. The write traces i’d just shipped in Bloom contained exactly the visibility he was asking for, except none of it was visible to him.
Respira was a black box that Claude talked to. He wanted a glass box where Claude could work but he could also see the work happening.
That gap was real. Bloom couldn’t close it. The infrastructure was there; the surface that made it visible to a non-developer wasn’t.
Cowork, the same architecture with the lights on
Saturday morning i submitted Respira for WordPress to Anthropic’s Cowork marketplace. As of this writing, approval is pending. The video at the top is what it looks like.
The Cowork plugin doesn’t add new safety architecture. Bloom already shipped that. What it adds is the surface that makes Bloom’s architecture visible to the non-developer who needed visibility in the first place. The visual reviewer narrates every edit in plain language. The slash commands give beginners on-rails workflows. Skills auto-activate. Same render-validation gates, same write traces, same snapshots, now with the lights on.
If the customer who left came back tomorrow, the workflow he was asking for is the workflow that just shipped. Direct visibility into what Claude is doing, on every edit, before any change lands. With every safety primitive Bloom built underneath, still doing its work, just visible now instead of invisible.
Same architecture. Different surface. The gap closed.
Cowork is Anthropic’s desktop tool for non-developers. The audience the customer who left actually was. The plugin bundles eight slash commands, thirty auto-activating skills (sixteen of them are full builder-to-builder migration paths, which is not a typo), and one visual reviewer sub-agent that opens the live page in your browser after every edit and tells you, in plain language, what changed.
The visual reviewer is the answer to the customer who left. “Here’s what changed: the hero headline now says ‘spring collection’ instead of ‘new arrivals.’ The page renders cleanly. Want to keep this or roll it back?” That’s not a black box. That’s the closest thing to working side-by-side with Claude that the current toolkit allows.
The same render-validation infrastructure that powers Bloom’s safety guarantees now powers Cowork’s visibility guarantees too. Same architecture. Different audience. Different mood.
If Bloom is the shelf, Cowork is the room the shelf is in, with the windows open.
The twenty-seven percent
A few weeks before Self-Heal, Elementor published the State of the Agency 2026 report. One number stuck.
Twenty-seven percent of Emerging Agencies have AI replacing thirty percent or more of their workflow. Twelve to fourteen percent of Growing and Established agencies do.
That gap is the most important number in the report. Emerging Agencies are the early adopters of an entire category transition. They’re who Respira’s 175 paying customers are heavily weighted toward. They’re the ones M was going to be, before his Oxygen site stayed blank for two months while we hunted his bug together.
Two more numbers worth surfacing. Client referrals account for 54% of new clients across all agency segments (the agency industry is structurally a referral economy), and productivity is the second-most-named challenge for every segment except Established. Agencies aren’t asking for more clients. They’re asking for more bandwidth.
These three numbers explain who i’m building Respira for, and why naming customers in the release notes matters as much as the engineering does.
On naming names, briefly
In Self-Heal’s release notes, three customer arcs are anonymized because three customers asked. In the patches that followed, names started showing up: D in v6.11.1 (two bugs in one day, his fourth and fifth across releases). pablolic in github issues #24 and #25. ntrance in #21, who reported a bug with the patch attached; i applied it verbatim.
The Beaver Pro and Breakdance pro-services agencies asked to stay anonymous. So did the customer who named the visibility gap that Cowork closes.
Some customers want to be named. Some don’t. The release notes honor each choice. When D shows up by name, that’s a public record other agency owners can read against. When ntrance gets credit for a verbatim patch, that’s a public record about how the project absorbs contribution.
That’s marketing through trust, not through claims. It’s the difference between a release that reads as a pile of generic improvements and a release that reads as a relationship being built in public, version by version.
The affiliate program is live
Speaking of word of mouth: this week i also opened the Respira affiliate program.
The math is simple. The agency industry runs 54% on referrals. Respira’s growth has been the same shape since the beginning, mostly word of mouth between agency owners, designers, and developers who’ve used the product and wanted to send it to people they care about. The affiliate program is the same practice with attribution and compensation attached.
If you’ve already recommended Respira to clients, peers, or your own team, you can now get credit and a fair cut for it. If you haven’t yet but you’d like to, the program gives you a clean way to start.
It’s not pay-per-click. It’s not bounty hunting. It’s the people who genuinely use Respira sending it to other people they genuinely want to help, and getting a meaningful share when those referrals become customers.
Details and signup at respira.press/affiliate. As with the release notes, affiliates show up by name in the dashboard, with permission, when their referrals hit milestones. Same naming-names practice. Slightly different verb.
The Founder tier
For the agencies that have already decided
The Founder tier is €5,001 one-time, lifetime, five seats total. It's at respira.press/pricing#founder. Unlimited sites. Unlimited edits. Every add-on, forever.
A private Slack channel with me. Roadmap input that's shaping v7.x and v8.x.
If your operational shape needs more than that (more seats for a multi-brand team, audit trails for regulated client data, individual logins for compliance, a custom integration that needs specific roadmap weight), the tier expands to fit. We figure that out on a call. Same lifetime posture, same direct relationship, just shaped to your reality.
The thing Founder customers are actually buying isn't a license. It's a seat at the table while a young product defines a new category. AI infrastructure for WordPress across twelve page builders doesn't exist anywhere else yet.
The architecture decisions being made right now in v7.x and v8.x will be the architecture that the rest of the WordPress AI ecosystem builds against. Founder customers are the ones in the room while those decisions get made. That's the trade.
You put trust in a solo founder and a product that's still defining its shape. I put your needs into the roadmap and don't run away from the calls. If that's the conversation, cal.com/mihai-love. Fifteen minutes, no slides.
Same week, same direction
The morning i shipped Bloom, May 8, was the same morning Matt Mullenweg pulled real-time collaboration from WordPress 7.0 (surface area, race conditions, server load, fuzz-test failures). Same morning, Automattic shipped Studio Code in beta. A few days later, today, i submitted the Cowork plugin.
Four moves, one week. Three different organizations, one realization: the boundary between intent expressed and output rendered is full of small lies, and the lies need to be surfaced or refused at every layer in between.
WordPress core decided RTC needed more rework before shipping. Bloom shipped the rework first and let the boundary do its job. Studio Code validates blocks against the editor before insertion. Cowork makes every edit narrate itself to the user.
Same direction. Different shapes. Different audiences. None of us coordinated. We didn’t have to. The realization is in the water.
Three things, if you made it this far
One: eight release cycles is not too many to spend on one customer’s bug. M kept reporting. i kept shipping. The eighth one closed it. Customers who try Respira six months from now benefit from a foundation M paid for in patience.
Two: repair and architecture and audience are different verbs. You need all three. Kintsugi makes the broken bowl whole. Bloom builds the shelf. Cowork puts the shelf in a room with the lights on.
Three: the bar that matters isn’t whether the database accepted the write. The bar is whether the page renders correctly and whether the human can see what happened. Both are required. Don’t trust your own success responses. And don’t hide the truth from your users either.
M taught me the first half. The customer who left taught me the second. Both extended trust they didn’t have to.
Self-Heal was the apology written in code.
Bloom is the practice that makes that kind of apology unnecessary.
Cowork is the practice with the lights turned on.
The twenty-seven percent who don’t open a terminal can build with Respira too, starting today. (Pending Anthropic’s marketplace approval, which i am refreshing approximately every six minutes.)
— mihai solo founder, Respira for WordPress respira.press
P.S. six releases is not a normal week. it happened because the bugs were worth fixing, the customers were worth honoring, and Cowork was the obvious next move once Bloom was on the shelf. next week is for tea, mostly.










