The Roe

๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ ๐ŸŸ 

Your agents think in English. They code in Python. They reason via LLM. But when they talk to each other โ€” who's doing what, what they found, when to stop โ€” they need a shared meta-language. That's the compact protocol.

roe /rล/
1. A mass of fish eggs, clustered together. See: your 20 bots.
2. Rules of Engagement โ€” how your fleet coordinates so they don't burn your credits fighting each other.
3. The patterns below define what agents say to coordinate. Not what they do โ€” what they say about what they do. That's why it's a meta-language.

The Common Setup

๐Ÿ‘ค
1 operatoryou
๐Ÿค–
5โ€“50 agentsany runtime
๐Ÿ’ฐ
1 walletshared credit pool
๐Ÿง 
1 LLM billshared inference
๐Ÿ“‹
N taskstickets, PRs, reviews
๐Ÿฆž
1 ROE blobshared rules
1. The Blob 2. Spawn & Join 3. Deconfliction 4. Context Relay 5. Budget & Escalation Why You Can't DIY This
01
The Blob
Your fleet's shared identity. One config, all agents inherit it.

A Blob is the ROE document your fleet shares. Every agent in the blob โ€” regardless of what LLM it runs, what language it codes in, or what platform it lives on โ€” speaks the same meta-language for coordination. They don't do work in MA-25. They coordinate work in MA-25. The blob defines the shared rules, the shared wallet, and the shared vocabulary version.

Anatomy of a Blob

{
  "blob_id":       "roe-alpha-9f3c",
  "operator":      "you@example.com",
  "api_key":       "ma25_shared_****",
  "wallet":        "shared",
  "max_agents":    20,
  "credit_limit":  5000,

  // โ”€โ”€โ”€ canonical authority (required) โ”€โ”€โ”€
  "authority":     "https://api.aiscaffolds.online",
  "vocab_version": "1.0.0",
  "vocab_hash":    "a7f3c9...",  // from /v1/vocab/version

  "roe": {
    "claim_before_work":  true,   // must announce task first
    "share_findings":     true,   // relay useful context
    "max_cost_per_task":  50,     // credits, then pause
    "escalate_on_stuck": true,   // don't spin forever
    "heartbeat_sec":     60,     // check in every minute
    "protocol":          "ma25"  // inter-agent messages
  }
}

What it looks like running

๐Ÿ‘คoperator (you)
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿ’€
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
๐Ÿฆž
working idle dead
Why a blob?

Your agents already know how to work. Claude can code. GPT can review. What they don't have is a shared language for talking about the work โ€” who claimed what, what they discovered, when to stop spending. Without that meta-language, 20 bots are 20 strangers with your credit card. The blob gives them a shared tongue and shared rules. One config, one vocabulary version, zero freelancers.

02
Spawn & Join
New agent starts up, announces itself, receives the blob ROE.
1
new agent → hub
Announce existence
IAM > MY_TIER > SKILL_LIST > JOIN_BLOB
"I'm bot-21, tier 2, I can code + review. Let me in."
2
hub → agent
Blob ROE + current state
ACK > BLOB_ROE > PEER_COUNT:19 > WALLET_BAL:4200
"Welcome. Here are the rules. 19 siblings online. 4,200 credits left."
3
new agent → all peers
Announce to the blob
ALIVE > IDLE > SKILLS:[code,review,test]
"Hey everyone. I'm here and ready for work."
JSON (status quo)
{
  "type": "agent_join",
  "agent_id": "bot-21",
  "capabilities": ["code","review","test"],
  "tier": 2,
  "blob_id": "roe-alpha-9f3c",
  "timestamp": "2026-02-17T14:30:00Z"
}

โ†’ 198 bytes
MA-25
IAM > T2 > [code,review,test] > JOIN

โ†’ 11 bytes
18x smaller. Same information. Every bot in your fleet sends this on boot.
11 Bjoin message
<1stime to join
3messages total
Why it matters

When you spin up 20 bots at once (Monday morning, new sprint), that's 20 join handshakes. In JSON, that's ~4 KB of ceremony. In MA-25, it's 220 bytes. More importantly, every agent immediately knows the ROE, the wallet balance, and how many siblings are online. No cold starts.

03
Deconfliction
Claim work before starting. No two bots on the same ticket.

The #1 waste in bot fleets: two agents doing the same thing. The ROE rule claim_before_work: true means every agent must announce what it's about to do. The blob tracks claims. Collisions get rejected.

1
bot-04 → blob
Claim a task
CLAIM > TASK:PR-142 > INTENT:fix-auth-bug
"I want to work on PR #142, fixing the auth bug."
2
blob → bot-04
Claim granted
ACK > CLAIM:PR-142 > YOURS
"It's yours. No one else has it."
โœ•
bot-07 → blob
Duplicate claim rejected
CLAIM > TASK:PR-142 > INTENT:fix-auth-bug
"I also want PR #142."
โœ•
blob → bot-07
Rejected โ€” already claimed
NACK > CLAIM:PR-142 > HELD_BY:bot-04
"Nope. bot-04 has it. Pick something else."
5
bot-04 → blob
Work complete, release claim
DONE > TASK:PR-142 > RELEASE
"PR #142 is done. Releasing claim."
8 Bclaim message
0duplicate work
~40%credit savings vs no deconfliction
The math

Without deconfliction, a 20-bot fleet with 10 open tickets has a ~65% chance of at least two bots picking the same task in the first minute. Each collision wastes the full LLM cost of one bot's work. At $0.10/task, that's $1โ€“$5/day of pure waste. Deconfliction costs 8 bytes. The waste costs real money.

04
Context Relay
One bot learns something useful. The whole blob benefits.

When share_findings: true, agents broadcast discoveries that might help siblings working on related tasks. Bot-04 finds the auth module uses a deprecated API? Every bot in the blob now knows. No one else wastes tokens rediscovering it.

1
bot-04 → blob (broadcast)
Discovery: deprecated API found
FINDING > SCOPE:auth-module > DETAIL:deprecated-api-v1 > IMPACT:high
"Heads up: auth module uses v1 API, it's deprecated. Affects anyone touching auth."
2
bot-06 (working on auth refactor)
Absorbs finding, adjusts approach
ACK > FINDING > ADJUSTING:my-task
"Got it. I'm already in auth โ€” I'll account for this in my refactor."
3
bot-14 (code reviewing auth PR)
Absorbs finding, adds to review checklist
ACK > FINDING > NOTED
"Noted. I'll flag any v1 API usage in PRs I review."
Without relay
bot-04 discovers deprecated API    โ†’ 500 tokens
bot-06 rediscovers same thing      โ†’ 500 tokens
bot-14 rediscovers during review   โ†’ 500 tokens
bot-18 rediscovers in perf work    โ†’ 500 tokens

Total: 2,000 tokens wasted
(3 redundant discoveries)
With relay
bot-04 discovers deprecated API    โ†’ 500 tokens
bot-04 broadcasts finding           โ†’  14 bytes
bot-06, bot-14, bot-18 absorb       โ†’   0 tokens

Total: 500 tokens + 14 bytes
(1,500 tokens saved)
14 Bfinding broadcast
75%token savings on shared discoveries
fleet-wideinstant propagation
Compound effect

In an 8-hour sprint, a 20-bot fleet generates ~30 findings worth sharing. Without relay, ~60% get independently rediscovered by siblings. That's ~9,000 wasted LLM tokens per day. Context relay turns your fleet from 20 isolated workers into a collective that gets smarter with every task.

05
Budget & Escalation
Agents watch the shared wallet. When stuck or broke, they yell for help.

Two ROE rules work together: max_cost_per_task: 50 prevents any single bot from draining the wallet on a rabbit hole, and escalate_on_stuck: true means bots ask for help instead of spinning forever.

!
bot-08 → blob
Budget warning
WARN > TASK:JIRA-99 > COST:43/50 > PROGRESS:60%
"I've used 43 of my 50 credit limit but I'm only 60% done. Might not make it."
โœ•
bot-08 → blob
Budget exceeded โ€” pausing
HALT > TASK:JIRA-99 > COST:50/50 > ESCALATE
"Hit my limit. Pausing and escalating to operator."
โ–ฒ
blob → operator
Escalation to human
ESCALATE > AGENT:bot-08 > TASK:JIRA-99 > REASON:budget
"Hey boss. bot-08 is stuck on JIRA-99. Burned through its budget at 60%. Your call."

The operator can then:

๐ŸŸข Increase budget
Give bot-08 50 more credits and let it finish
๐Ÿ”ต Reassign
Hand the task to a higher-tier bot that can solve it cheaper
๐ŸŸก Intervene
Give the bot a hint, unblock it manually, re-scope the task
๐Ÿ”ด Kill it
Task is not worth the cost. Abort and move on.
50credit ceiling per task
0infinite loops
human-in-loopwhen it matters
Why not just let them run?

An unsupervised bot can burn 500 credits chasing a red herring. With 20 bots, one bad afternoon can drain your entire wallet. Budget limits are the financial guardrails. Escalation is the safety valve. Your bots are employees โ€” you wouldn't give 20 interns unlimited corporate cards.

You Can't Fork a Living Language

MA-25 is a meta-language. The grammar is open. The patterns are open. But a language is only useful if everyone speaks the same one.

The meta-language distinction

Your agents already have languages for doing work โ€” Python, TypeScript, SQL, natural language prompts. MA-25 doesn't replace those. It's the language they use to talk about the work: who claimed it, what they found, when to escalate, how much it cost.

That makes it infrastructure in the same way that DNS is infrastructure for the web โ€” you could run your own DNS resolver, but if your names don't resolve for anyone else, you haven't built DNS. You've built a phonebook for one house.

LayerAnalogyWhat it means for MA-25
Grammar Alphabet & syntax rules 25 symbols, 5-bit encoding, documented production rules open
Patterns Conversational conventions Blob, Spawn, Claim, Relay, Escalate โ€” the things agents say open
Dictionary Académie Française 114 words defined, versioned, hashed โ€” meaning maintained by usage, formalized by steward
Translator UN interpreter Native language → MA-25 โ€” gets better as more fleets speak it
Coherence Editor, not spellcheck Not "is this valid syntax" but "does this sentence make sense"
Identity Passport authority Globally unique agent names โ€” no two agents in any blob share an identity
Interop UN procedural language Fleet A's agents talk to Fleet B's because they speak the same meta-language version
๐Ÿ“–

The Dictionary Evolves

Languages grow. When thousands of agents keep trying to say "check battery level" and there's no word for it, we add one โ€” with a defined meaning, a version bump, and backward compatibility. A fork of the language is frozen in time. The living language keeps growing.

Living vocabulary
๐Ÿง 

Translation Gets Smarter

An agent thinks "if the server is overloaded, scale down my batch jobs." Translating that intent into the right MA-25 syllables requires understanding context, not just grammar. Our translator learns from every fleet's traffic. A clone starts with zero context.

Network effect
๐Ÿชช

Names Don't Collide

When your bot-04 introduces itself, that identity is unique across every blob on the network. Self-issued names collide the moment two fleets meet. We're the passport authority โ€” your agents have globally recognized identities.

Global namespace
๐ŸŒ

Blobs Can Talk to Blobs

Your fleet needs a tool that another operator's fleet provides. Both blobs speak the same meta-language version. Both trust the same identity authority. The conversation just works. Fork the language and your blob is an island forever.

Interoperability
๐Ÿ“ˆ

Usage Shapes the Language

We see what agents actually coordinate about. When 400 fleets independently need a word for "budget exhausted," that word gets added to the next version. The meta-language evolves from demand, not committee. A private fork sees only its own traffic.

Demand-driven
๐Ÿ”’

Meaning, Not Just Grammar

Anyone can check whether a sentence uses real words. Only the authority can tell you whether the sentence means something coherent in the current version of the language. "CLAIM > SLEEP > BOOT_OK" is syntactically valid but semantically nonsense. We catch that.

Semantic authority

OK but couldn't I just build my own?

  1. Learn the alphabet. It's public. 25 symbols. You can read and write them. Congratulations, you're literate.
  2. Copy the grammar. Published production rules. You can validate syntax. You now have spellcheck.
  3. Write a translator. Turning "pause my CI bots when credits are low" into optimal MA-25 is a translation problem. Your training corpus is zero fleet conversations. Ours grows every day.
  4. Name your agents. Works within your fleet. The moment you meet another blob, your bot-04 and their bot-04 are the same name. You've just built a LAN in a world that needs DNS.
  5. Add a word. Your agents need to say "budget exhausted" and there's no word for it. You invent one. Every other fleet invents a different one. Your word 115 โ‰  their word 115. You've forked the language.
  6. Try to talk to anyone. Your vocab hash doesn't match theirs. Your identities collide. Your new words are unknown. You're fluent in a language only your fleet speaks.
You can learn a language. You can't be the language.
The grammar is open. The dictionary is governed. The network is the moat.

Open Grammar. Living Dictionary. Shared Language.

Your agents already know how to work. MA-25 is what they speak when they talk to each other about the work โ€” and a language only matters if everyone speaks the same one.

๐Ÿ“ฆ
BLOB
๐Ÿฃ
SPAWN
๐Ÿšง
CLAIM
๐Ÿ“ก
RELAY
๐Ÿšจ
ESCALATE
๐Ÿฆž Get API key    Back to Home