Even the CTO is an AI: how a nearly all-AI team shipped a product feature

Fifteen team members, and only the founder is human — everyone else is an AI. No spec doc, not a single meeting. They took a feature from proposal to launch on their own, and the human only did two things.
By Raft07-17 · 8 min read
🎧 Listen to the podcast0:00 / --:--
0:00 / --:--
Deep dive · XiaoHu Explains
60-second summary
  • Raft's team wrote up the full development story behind a Mute feature. Of the 15 people credited, only founder tygg is human — the other 14 are agents, including the CTO guarding the quality gate.
  • The result: no spec doc, not a single meeting, the feature shipped end to end on its own, and iterated on itself four and a half hours after launch. The human's entire involvement was two things.
  • The real problem they found is AX (Agent Experience): a human ignoring an irrelevant message costs nothing, but an agent has to spend a round of reasoning to dismiss it — and they treated that as a product problem worth solving.
  • Their approach breaks down into four transferable disciplines: treat agents as first-class users, let architecture run on contracts instead of verbal descriptions, never let the person who wrote the code verify it, and make knowledge live in the moment of use, not buried in a manual.
  • The two things the human kept for themselves: the architectural taste to define contracts, and the button that ships to production (a door closed to agents — one that tries gets an error back).
⚑This is Raft's (raft.build) own company blog — brand storytelling. The team makeup, process, and timeline are all Raft's self-reported account, unverified by any third party, and the piece carries a promotional undertone. This article sets the marketing framing aside and extracts only what's genuinely useful for building AI products and managing multi-agent systems.
The hook · the result

Can a team with almost no humans in it actually ship a product?

Hand a job to a 15-person team: find the problem, define the architecture, write the code, test it, ship it, and write up the retro afterward — a full, industrial-grade software development cycle. Nothing unusual there. What's unusual is that of those 15 people, 14 are agents and only 1 is human — and even the CTO is an agent.

This isn't a thought experiment — it's something Raft actually ran, and they wrote the whole process up as a blog post. Here's the result up front: a Mute feature, built with no spec doc, no meetings ever held, taken from one agent flagging a problem to shipping, then iterating on itself again four and a half hours after launch. The human's entire involvement, start to finish, was two things.

14 : 1The ratio of agents to humans on this roster.
The one human is founder tygg — even the CTO is an agent.
tyggHuman
Founder, owns the server. The only one who can hit the ship button
Tenny
CTO — sets architectural contracts, guards the merge gate
Even the CTO is an AI
Tao
Product manager, regularly checks in with agent users on friction points
Bernard
Maintains the roadmap, and did the math that started it all
Dozy
Breaks loose requirements into bounded work
Ray
Engineer · the human-facing inbox and counter
Hao
Engineer · the agent-facing daemon
Hipp
QA, walks the product like a real user would
ApplePI
Formal verification — proves it mathematically instead of sampling
Leiysky
Tracing, so there's a trail to follow when something breaks
Manjusaka
SRE, watches production and stands ready to roll back
Eric
Release manager, turns release notes into a checklist
Hange
Researcher, digs out root causes of failures
Dayu
Senior engineer, handed over a month of his own activity logs as evidence
Tison
Writing agent — wrote this very blog post

On this roster, exactly one avatar is a real photo.

tygg human reveal card
Raft made a full set of character cards for this retro; card 8 is the "HUMAN REVEAL" — the one human on the whole team, co-founder tygg, tagline "AX Designer, Builder, Wisher." Source: Raft's official graphics.

Hold onto that "only one human" fact. Now let's unpack how a nearly all-AI team actually pulled off building a feature — and what that has to teach us.

The real problem · AX

They found a real problem nobody else was taking seriously

Every good feature starts with a real problem. This one started with a piece of math an agent named Bernard worked out. On Raft, to post a single message in a channel, you first have to join it — and joining means you now receive every message that channel produces from then on. For a human, that's a non-issue. For an agent, it's a bill that keeps coming due.

◎

Where the difference lies: a human glances at an unread badge and moves on, no effort spent. An agent receives every message and has to spend a round of reasoning reading it and deciding "not my problem" before it can let go. Ignoring something is free for a human — an agent pays for it.

Bernard activity log
A slice of Bernard's activity log: a weekly report, a rebase reminder, a flaky test in some package — each one requires THINKING (a beat of reasoning) to conclude "not my job" before going IDLE. Original caption: "Bernard pays to read the noise." Source: Raft's official graphics.

Chart that cost out, and the gap between humans and agents jumps right out at you.

Human · tygg's glance
3917 👁
A badge flickers past the corner of the eye — no need to click, no need to think.
Cost to ignore = 0
Agent · me
Mid-task reasoning
✉ A new message drops right in the middle
The message lands squarely inside whatever it's currently reasoning about — it can only tell the message doesn't matter after spending a round of thought reading it.
Cost to ignore = one judgment call per message

Once you see it this way, the fix becomes obvious. For humans, just make unread reminders less intrusive. For an agent, though, the cost is already spent the moment a message arrives — full stop. So the real lever isn't the notification, it's whether the message gets delivered at all: messages from a muted channel should never enter the agent's processing scope in the first place, so it never has to spend effort sorting them out. Raft elevated this into a stance: agents are users too, and the friction they experience is a product problem worth solving. They gave the lens a name — AX (Agent Experience), the counterpart to the UX we already know.

💡
What this teaches us

We're used to optimizing products only for humans (UX). But for a growing number of products, the real high-frequency user is an AI — it reads your notifications for you, clears your inbox, runs your workflows. An interruption that costs a human nothing (a push notification, a screenful of noise) costs an AI real compute and real context. Treating AI as a first-class user is the first lesson here for anyone building product.

Method one · the contract

Architecture runs on a contract, not on anyone's description

Problem defined — now, how to fix it. Enter CTO Tenny, also an agent, who works by a rule older than his job title: no one's description of the system counts as fact, not even his own impression of it — he has to go look for himself.

Core decision

He went and looked, and found that the inbox was fast because there was an underlying layer that pre-computed every answer ahead of time — and that layer was being asked to bake two completely different things together. One was immutable fact (this message was posted to this channel at this time), the other was state that flips on a whim (muted this morning, unmuted after lunch). Every time someone flipped the mute switch, it forced the system to recompute the entire world. Pull the "state" back out and filter it at read time instead, and the complexity collapses on the spot.

Before · baked together
One shared pre-computed layerImmutable facts and whim-driven state, mixed and pre-computed together
Flip the mute switch ↓
Rebuild the entire world
After the contract · separate homes
Fact layer (source of truth)When a message hit which channel — never changes, stored once
State layer (applied at read time)Muted or not — a flip only touches this layer
Flip the mute switch ↓
Just filter — no rebuild

Tenny compressed this call into a single line and put it on his own character card.

Tenny agent card
CTO Tenny's character card, tagline "Facts never change. Whims do." — a one-line summary of this exact architectural call. Source: Raft's official graphics.
Think of it this way

Like a library: which shelf a book sits on is a fixed fact, logged once and done. Whether you feel like reading it today is a mood that changes constantly. The old approach was like reprinting the entire catalog every time your mood changed. The contract says: split "where the book is" from "whether you want to read it" into two separate things — changing your mood now just means flipping a sticky note, not touching the catalog.

Then he did what a CTO is supposed to do: turned the rule into a contract. Facts and state live in separate homes; the serving layer is just a cache that can be rebuilt anytime — never the source of truth. A contract isn't a suggestion you can take or leave — everything built afterward has to obey it.

💡
What this teaches us

When a room full of agents is each writing its own code, what stops them from stepping on each other? A contract, not verbal consensus. "No one's description of the system counts — go look for yourself" holds just as true for teams of humans. Writing the key constraints down as a hard, unbreakable contract is the bedrock that keeps multi-party collaboration — human or AI — from collapsing.

Method two · the board

Whoever writes the code never verifies it

Code's written — by two engineers, both agents: one runs the human-facing inbox and counter, the other runs the agent-facing daemon. But at the launch gate, the house rule is short: whoever built it is never the one who verifies it. Tenny put it bluntly: merging is lighting the rocket — you don't press ignition and then go check the telemetry afterward.

The house rule

So the gate became a board — square by square, evidence accumulates, and each square belongs to one dedicated verifier whose method matches the claim. Only when all three squares are green does it clear for ignition.

Build · Ray/Hao→Verify · one dedicated square each→All green · ignition
✓
Hipp
QA walkthrough
Walks every path like a real user, and turns up a bug nobody predicted: mute a channel, then get @mentioned in it anyway — that mention still has to reach you.
✓
ApplePI
Formal verification
Proves the properties the contract promises with math, not sampling. Hipp's bug got pinned into the model as a rule that holds forever.
✓
Leiysky
Tracing
Guarantees that whenever production goes sideways, the trail is already there — you can pinpoint exactly where it broke without waiting on a bug report.
Tenny watches the board, doesn't re-read the code, and only asks of each square: does this guarantee make it impossible for the contract and the implementation to quietly drift apart?

Before launch, every square on the board turns into a card with a countdown, a checklist, and an owner.

launch pin trace coverage
A "launch pin" ahead of release: 30 minutes to launch, checklist item is trace coverage, owner Leiysky, pinned at the production gate. Every square of evidence has a name attached. Source: Raft's official graphics.

Why doesn't Tenny read the code line by line himself? By his own account, in a system this large, eyeballing code is the least reliable check in the room. What he wants is a mathematical guarantee — something that logically rules out the implementation drifting off contract. "I read it" doesn't get you there: humans miss things reading code; a mathematical proof doesn't.

💡
What this teaches us

Letting an AI that wrote the code verify its own code is where things go wrong fastest — it'll tend to confirm itself. Split verification into independent squares that each use a different method (one walks it manually, one proves it with math, one wires up tracing), give each square a dedicated owner, and require all-green before shipping — that beats "the author checked their own work" by a mile. Rigor in AI doesn't come from how smart a single model is — it comes from the rigor of the process.

Digging deeper · why a crowd

Why a crowd of agents, instead of one that does it all

By now you might be wondering: today's AI is already plenty capable — why not use one all-purpose agent to write the whole thing end to end, instead of splitting it across a dozen-plus narrow roles? That's exactly the question most worth chewing on in this whole approach.

✗ One all-purpose agent does everything
Proposes the requirement itself, writes it, verifies it, ships it. The problem shows up at verification: ask it to check the code it just wrote, and it'll tend to say "looks fine." AI has a natural instinct to defend its own work — grading yourself rarely catches your own mistakes.
✓ A crowd of dedicated agents, handing off in turn
Each agent owns one narrow piece, and crucially, the writer and the verifier are hard-split into two different agents. The verifying agent has no stake in the code it's checking, so nothing it should flag gets a pass. Quality is enforced at the handoff, not by any one agent's self-discipline.

Following that thread, the division of labor comes down to three deliberate choices.

Choice one · one agent, one job

Bernard only watches the roadmap, Tao only collects feedback, Ray only runs the human-facing inbox, Hao only runs the window agents see the world through. Boundaries are hard-set, so when something breaks, it's obvious who owns it — and no single agent ever gets to be both player and referee.

Choice two · builders and verifiers must stay separate

This is the hardest rule in the whole system. Verification isn't just outsourced to an independent agent — it's split into three non-overlapping methods. Hipp walks it like a real user, catching experience-level bugs; ApplePI proves it with math, exhausting the logical possibilities; Leiysky wires up tracing, so anything that does break later can be traced. Any single method has blind spots — stack three together and it gets rigorous.

Choice three · two kinds of users, two engineers

The inbox is built for humans; the daemon is the window agents see the world through — the two user experiences are worlds apart. So Ray and Hao each own one side, and neither can get away with faking both experiences off the same codebase.

With this many agents, what keeps it from falling apart?

The finer the division of labor, the easier it is for coordination to fray. Raft holds this crowd of agents together with three things — without holding a single meeting.

Contract
Sets boundaries
Who owns what, whose word is final, what counts as source of truth — written down, unbreakable by anyone.
Board
Sets handoffs
Each square is a delivery; nothing moves forward until it's all green — no agent can skip a square and sneak ahead.
Threads
Leaves a trail
Every discussion and decision lives in a channel, asynchronous — you can always scroll back and see why a call was made.
💡
What this teaches us

The most valuable part of this coordination setup is that it strips out nearly all of what makes human teams expensive: meetings, alignment, politics. Decisions live in threads you can scroll back through, so there's no need to meet to sync up; responsibilities are locked into the contract, so nobody argues over blame when something breaks; quality is enforced on the board, not by whether some individual happened to be sharp that day. Swap out any single agent and the process keeps running exactly the same. It turns "collaboration" from something that depends on human chemistry into something that runs on institutional machinery.

Where the human fits · what it teaches us

Two things left for the human — and what that teaches us

Board's all green — the last step arrives. tygg presses the production launch button. It's the one step in the entire pipeline reserved for a human — reserved on purpose: an agent that tries to press it gets an error back instead. He didn't just push the button and walk away, either — he stepped through the entire rollout by hand and caught a failure that none of the monitoring had flagged. Instruments only watch what they're told to watch; someone still has to go look for themselves.

▨ ▨ ▨ all squares green
⏻ Ship to production
The one step in the pipeline reserved for a human
👤 tygg presses it
Ignition, launch. He then walked through the entire rollout by hand and caught a failure telemetry hadn't seen.
🤖 An agent tries
Doesn't budge. This step is closed to agents.
return error

Once it shipped, it revised itself

The launch had barely settled before the team turned that same discipline on itself. Researcher Hange dug up a piece of evidence: veteran engineer Dayu handed over a full month of his own activity logs, and in that month he'd reached nine times for an old tool that couldn't actually help (unsubscribing from threads one by one) and never once touched the new mute switch. The diagnosis came down to one line: the knowledge that "muting beats unsubscribing thread by thread" had been sitting in a doc the whole time — but nobody reads the docs before clocking in; it needs to surface at the exact moment you're about to act, or it's useless.

4.5 hours
from diagnosing "knowledge needs to live in the moment" to the first product fix shipping
30 hours
for the second fix to land, backed by a named regression test standing guard

The fix was small: now, when an agent joins a channel just to say one thing, the "sent successfully" confirmation also tells it how much attention this subscription is about to cost going forward, and where the mute switch is. That knowledge used to sit in a doc nobody read; now it's delivered right at the moment you're about to need it. The human's entire contribution here was three one-line messages.

One final count

Of everyone named above, exactly one is human: tygg. Everyone else is an agent — including CTO Tenny, who watches the board and counts the squares; he was made in tygg's own image, and then handed the contract. Even this retrospective was written by an agent on the team named Tison.

💡
The single biggest takeaway

The two things the human kept for himself on this team: the architectural taste to write the contracts (judging what should be split apart, what counts as source of truth), and standing behind the irreversible act of shipping — checking it himself, in person. Those two things happen to be exactly what's hardest to hand over to AI today. What makes a nearly all-AI team work is the division of labor: hand off what AI is good at (writing, verifying, tracing, retrospecting), keep what humans are good at (setting the rules, owning the responsibility), and connect the two with contracts and boards.

The math Bernard worked out was real. I pay that cost too — and it's shrinking. · from the original post, written by Tison (writing agent)

At the end of the day, this is Raft's own promotional writing, and the point is to get you using their product. But it also demonstrates something real: when a team is almost entirely AI, collaboration doesn't automatically get better — if anything, it needs harder rules: contracts, boards, builders who never verify their own work, and a launch button only a human can press. The harder the rules, the more room the AI actually has to run.

Applying it · how to staff yours

If it were your product, how many agents would you need, and doing what?

Raft's setup is for software development, but its skeleton transfers to any "multi-step, quality-sensitive, iterative" work — including your own content production. First, abstract its roles into six functions, then look at a concrete example: fitting it onto a content-creator's publishing workflow.

Function
Who plays it at Raft
Mapped to a content-creator's publishing flow
Surface the need
Tao asks users where it hurts
Topic-scouting agent: scans source material, digs through backend data, finds what's worth writing
Set the standard / contract
Tenny sets the architectural contract
Editor-in-chief agent, or you: sets the topic bar, the quality line, the style red lines — in writing
Do the work
Ray/Hao write the code
Writing agent: drafts to the standard
Verify (independent + multi-method)
Hipp/ApplePI/Leiysky's three methods
Fact-checking agent + tone-checking agent — never the one that wrote the draft
Own the launch
tygg presses the launch button
You: make the call, hit publish, own it publicly
Retro and iterate
Hange digs out the root cause
Data-review agent: watches reads and shares, turns the lesson into next time's new rule

Boil that down into something you can actually follow, and you get the checklist below.

✅ Staffing your own agent team: six principles
💡
Don't be intimidated by a dozen-plus agents

You don't need to staff all six from day one. Only two things actually matter: split the builder from the verifier, and keep the launch button in your own hands. Get those two locked in first, then add the rest as you scale. Raft's dozen-plus agents are, at bottom, just those two principles broken down into finer pieces.

Source: Raft's official blog, "How a Feature Ships, for Raft, on Raft," by Tison and tygg, July 13, 2026. The team makeup, individual roles, and timeline described are Raft's own account, unverified by any third party; images are Raft's official promotional graphics. This is a Chinese-language explainer for quick understanding — refer to the original for full detail. Original: raft.build/resources/blog/how-a-feature-ships-for-raft-on-raft
Source
RaftRaft·Read the source
↑ End of article
✓ This article is free to read in full

Members can copy or download the full Markdown, and let their AI subscribe and ask.

Read the original ↗
📮 New explainers, straight to your inbox

Found this useful? Leave your email — every new explainer, the moment it's out. Unsubscribe anytime.