Three Units
Consolidated. This note's findings now live in
../MIN-STUDIES.md§3, 4. The original is kept for its measurements; do not re-derive from it.
The three units
Young, 2026-10-10: the architecture, stated plainly.
| # | Unit | Runs on | Host | Agents |
|---|---|---|---|---|
| 1 | Pulse | Hermes | Pulse host | Eva · Eve · Tam |
| 2 | Brain | Hermes | LAB | Min · Mira · Sol |
| 3 | Heart | SolOSV3 | LAB | Ace · Alpha · Atlas · Echo · Nova |
All agents communicate via A2A. The tool is the Opencode CLI — the Arms.
🎯 We are focused on the Heart Unit.
1. ✅ Verified against the registry — it matches exactly
Checked, not assumed. cortex/registry/agents.yaml:
| plane | host | agents | matches? |
|---|---|---|---|
brain | lab | min · mira · sol | ✅ |
heart | lab | ace · alpha · atlas · echo · nova | ✅ |
pulse | pulse | eva · eve · tam | ✅ |
So the registry already encodes this correctly. No change needed — and that is the point of having one source: the statement and the file agree.
2. 🔴 Two docs describe it differently, and they are now corrected
The registry was right and the prose was thin. Two places understated what V3 is:
| Doc | Said | Corrected to |
|---|---|---|
README.md | "Heart Unit … executors" — a list, not a statement of purpose | V3 IS the Heart Unit's system |
00-scope/SCOPE.md | "What V3 is: an A2A-native agent system" — true, but never says whose system | the Heart Unit's system on LAB |
Why this matters beyond tidiness: V2's own record states it plainly — "SolOSV2 is the Heart Unit's system: the fleet agents that execute" — and V3 is the successor to exactly that. A design that never says whose system it is invites the wrong thing to be built into it. The brain workers were retired precisely because a Brain agent running as a Heart worker was a contradiction (2026-10-10); the docs should make that hard to reintroduce.
So the correction is load-bearing, not cosmetic: Brain runs on Hermes. Heart runs on SolOSV3. V3 is Heart's system, and a Brain agent inside it is a category error.
3. The picture
PULSE HOST LAB HOST
┌──────────────────┐ ┌──────────────────────────────┐
│ 1. PULSE │ │ 2. BRAIN 3. HEART │
│ on Hermes │◄────────►│ on Hermes on SolOSV3 │
│ │ A2A │ │
│ Eva · Eve · Tam │ │ Min · Mira · Sol │
│ 8441-8443 │ │ 8311-8313 Ace · Alpha │
└──────────────────┘ │ Atlas · Echo │
│ Nova │
│ 8301-8305 │
└──────────────────────────────┘
│
▼
Opencode CLI (Arms)
Two units share the LAB host and both speak A2A — so the A2A boundary is the only interface between Brain and Heart. That is why the A2A work is the spine and why its defects matter more than any other.
4. 🔴 And the A2A reality, measured — Brain's peers are still misaddressed
All agents communicate via A2A — so the addresses are load-bearing. Checked
live in Brain's own config (~/.hermes/profiles/min/config.yaml):
8 peers configured, 8 misaddressed:
| Peer | Configured | Should be |
|---|---|---|
| ace | 8308 | 8301 |
| alpha | 8309 | 8302 |
| atlas | 8306 | 8303 |
| echo | 8307 | 8304 |
| nova | 8310 | 8305 |
| min | 8312 | 8311 |
| mira | 8313 | 8312 |
| sol | 8311 | 8313 |
And three form a rotation — sol → min → mira → sol. So a call to sol
reaches min, and returns success from the wrong agent.
This is the defect the whole Stage 1 exists to prevent, and it is live right
now. It is latent only because nothing is calling (all Heart ports return
HTTP 000 — nothing listening).
Stage 1.3's proof is exactly this: "a2a_call ace returns ace's
identity." Until the peers derive from the registry, every A2A call in the fleet
is a coin flip that reports heads.
5. Current state of the three units
| Unit | State | Evidence |
|---|---|---|
| Pulse | on its own host, out of scope | "Pulse is a separate host and product" |
| Brain | live on Hermes | A2A serving: 127.0.0.1:9900 → HTTP 200 |
| Heart | designed, not built | .solos has 0 .py files; ports 8301–8305 all return HTTP 000 |
| Arms | live | /home/lab/.opencode/bin/opencode — v2.0.18 |
So: Brain is up, Arms is up, and Heart is the thing we are building. That matches the focus statement exactly.
6. What this fixes in the plan
Nothing in the plan changes — the registry already agreed. Two things are sharpened:
- Scope now states whose system V3 is, so a Brain-in-Heart component is visibly wrong rather than merely discouraged.
- The A2A misaddress is confirmed live and 8/8, which raises Stage 1's priority: it is the one defect that is already present in the running system, not a risk for later.
Not established
- Pulse was not probed. Its host is separate and out of LAB scope; the
8441-8443ports were checked on LAB and returnHTTP 000, which is expected. - The A2A misaddress was read from config, not exercised — no call was made to a wrong peer, because nothing is listening to receive one. The rotation is inferred from the port map, which is how the original defect was found.
- Heart's runtime does not exist, so "all agents communicate via A2A" is currently true of Brain only.

