SolOS Architecture Review — Verification Findings (Tam)
SolOS Architecture Review — Verification Findings (Tam)
Evidence-grounded review. Every claim below was checked against live system state
(curl health, port scans, systemd units, and actual source under
/home/ubuntu/.solos/ read via read-only tam_server_key). No claims from memory.
Method: laptop (pulse, 100.85.164.30) → SSH reverse/local tunnel mesh → fleet server
(solos, 100.124.146.127, user ubuntu). Single tunnel process laptop_ctrl_reverse.
Per-claim verdict table
| # | Claim (from docs/SOUL) | Verdict | Evidence |
|---|---|---|---|
| 1 | A2A mesh = 8 agents on :8300–8307 (sol/ace/mira/nova/echo/alpha/atlas/min) | ✅ verified | systemd solos-a2a-{sol,ace,mira,nova,echo,alpha,atlas,min}.service all active; ss shows 8300–8307 listening; a2a_discover returns correct cards |
| 2 | Central Registry :8432 (tasks/agents/reports/board) | ✅ verified | /health 200 "central-registry"; /tasks /agents /reports /board all 200; /agents maps alpha=8305, atlas=8306 correctly |
| 3 | Central Cron :8436 | ✅ verified | server /health: {"service":"central-cron","status":"ok","jobs":25,"enabled":8,...} |
| 4 | CostGov :8430 | ✅ verified (flapping) | server /health 200 {"service":"cost-governance","port":8430}; but laptop tunnel returned 000 on first probe, 200 on retry — transient |
| 5 | Session persistence data/solos.db | ✅ verified | file present, 317 MB |
| 6 | Personas personas/.md | ✅ verified | present — but duplicated as .md + .persona.md (migration in flight) |
| 7 | docs.youngle.au gated / pulse.youngle.au public / sol.youngle.au gated | ✅ verified | 401 / 200 / 401 |
| 8 | Tam registry MCP at :8434/mcp | ⛔ broken | server has nothing on 8434; registry is REST on 8432. config.yaml mcp_servers.solos-registry is stale |
| 9 | Tam A2A peers eva=:18442, eve=:19902 | ⛔ broken/stale | both connection-reset; real registry truth is eva=:8443 (online), eve=:8442 (down) |
| 10 | CostGov unit solos-cost-governance.service | ⚠️ renamed | unit not-found; 8430 runs server.py from services/cost-governance/ (cwd confirmed) |
| 11 | Central Cron reachable from laptop (:8436) | ⛔ gap | no -L tunnel for 8436; Tam/Eva absent from central_cron.py AGENT_PORTS |
| 12 | Single source of truth for port map | ⛔ gap | AGENT_PORTS duplicated in 9 files; several stale (below) |
Gaps found (documented vs actual)
G1 — Atlas/Alpha port drift across 4 stale sources
Live truth: alpha=8305, atlas=8306 (systemd + registry /agents + central_cron.py).
Stale sources still mapping atlas→8305 or omitting 8306:
services/capability-registry/server.py:48—8305: "atlas", no 8306 entrycore/loop.py:27—"atlas": 8305config/profiles/atlas.yaml:4—port: 8305config/profiles/atlas-a2a.yaml— endpoint 8305 (comment "was 8306, moved to 8305" — the opposite of what happened)
Impact: the capability/discovery registry and the runtime loop resolve 8305 to "atlas" (actually Alpha), and have no entry for Atlas at all. Skill/tool discovery for Atlas is therefore wrong or missing at the registry layer.
G2 — Tam's registry MCP endpoint is a phantom (:8434/mcp)
config.yaml → solos-registry: http://127.0.0.1:8434/mcp. Nothing listens on 8434 on the
server (confirmed via ss). The registry is a REST service on :8432. Tam's registry
tool access is therefore dead. Fix: repoint to 8432, or document that the MCP was retired.
G3 — Laptop tunnel miswiring: 8433 → 8432
ssh -L 127.0.0.1:8433:127.0.0.1:8432 forwards laptop 8433 to the central registry,
not to the A2A discovery registry (server 8433, solos-a2a-registry.service). From the
laptop, 8433 and 8432 are aliases of the same service; the real discovery registry is
unreachable from the laptop.
G4 — Tam a2a_agents stale on Eva/Eve
config.yaml: eva=18442 (→ server 8442 = Vercel Eve port), eve=19902 (→ 9902,
crash-looping eve-a2a wrapper). Registry truth: eva=8443 (reverse rail, online),
eve=8442 (down). Tam cannot reach Eva through its configured URL; Eve is genuinely
down (see G5).
G5 — Eve A2A crash-looping
eve.service (macrobiotic agent) is active running, but eve-a2a.service and
eve-a2a-bridge.service are activating (auto-restart) — crash-loop. eve-tts.serviceinactive (dead). Registry marks Eve status: down.
G6 — Central cron not reachable from laptop
No -L tunnel for 8436; central_cron.py AGENT_PORTS has only the 8 SolOS agents
(no tam/eva). Matches the known-gap note in 2026-09-22-solos-architecture-operation.md.
G7 — No canonical ARCHITECTURE.md
docs/vault/ARCHITECTURE.md does not exist (referenced but missing). The
architecture-of-record is scattered across: my research notes, config/opencode/agents/*.md,
systemd unit descriptions, and 9 copies of AGENT_PORTS. VAULT-INDEX.md still points to
the architecture-2.0 M1 plans (Aug 8) which are superseded by SolOS v2.
G8 — CostGov persistence unclear
data/costgov.db = 0 bytes (empty); data/cost_ledger.jsonl = 633 KB last touched Aug 4.
CostGov responds on 8430 but does not appear to persist to a live ledger DB.
G9 — Storage sprawl (multiple overlapping stores)
solos.db 317 MB, events.db 176 MB, events.jsonl 144 MB, chat_log.db 8 MB,
cron.db 434 KB, registry.db 0 B, sessions.db 0 B, queue.db 0 B, costgov.db 0 B.
No single canonical store is documented; several are empty (dead) tables.
G10 — Vault IP drift in ssh config
~/.ssh/config still maps solos-vault → 161.33.71.67 (old public IP). Fleet is now
reachable at 100.124.146.127 (tailscale). Both :22 are currently OPEN, but the config is
stale and the old IP is a single point of failure.
Stale/outdated design docs → archive candidates
Server vault (docs/vault/solos/):
architecture/01-multi-agent-ai-ops-system/architecture-2.0-plan.mdx(Aug 8)architecture/01-multi-agent-ai-ops-system/architecture-2.0-redesign.mdx(Aug 8)architecture/01-multi-agent-ai-ops-system/b4-2-conductor-routing-hitl.mdx(Aug 8)architecture/02-auto-pilot.mdx(Aug 8)implementation/01-plan/architecture-2.0-implementation-plan.mdx(Aug 7)implementation/01-plan/architecture-2.0-p0-spec.mdx(Aug 8)implementation/01-plan/architecture-2.0-cs329a-integration.mdx(Aug 9)introduction/agents.mdx(Aug 4) — roster predates Alpha/Atlas splitdata/solos-architecture.drawio(Aug 1) — diagram predates v2
Tam local (Research/tam/tech/), superseded by later notes:
2026-09-16-solos-arch-memory-review.md(superseded by phase-2 + v2)2026-09-17-solos-full-review-phase2.md(superseded)2026-09-17-solos-rebuild-blueprint.md(superseded by 2026-09-20 v2 system architecture)2026-09-17-opencode-hermes-solos-architecture.md(decision already made → historical)
Model/cost note (for Mira)
Tam model lane per config.yaml: deepseek-v4-pro @ opencode-go, fallback chain
glm-5.3 → kimi-k3 → glm-5.3-flash. CostGov on :8430 is up but flapping (one probe timed
out, retry succeeded) and has an empty costgov.db. Worth a CostGov-lens look: is the
ledger persisting, and is credential_pools.json (3 GO keys + 429 failover) still the
current pool?
Recommended fixes (priority order)
- Repoint Tam
mcp_servers.solos-registry→:8432(or document MCP retirement). - Fix tunnel
8433 → 8433(discovery registry), not→ 8432. - Update Tam
a2a_agents:eva→8441 (local) or 8443 (mesh); drop/retireeveuntil eve-a2a crash-loop is fixed. - Collapse
AGENT_PORTSto one importable source; correct the 4 stale atlas/alpha refs. - Add
-L 8436tunnel + tam/eva entries to cronAGENT_PORTS. - Write a canonical
ARCHITECTURE.md(or port a current note intosolos/architecture/). - Archive the stale architecture-2.0 + pre-v2 docs listed above.
- Fix
~/.ssh/configvault IP; decide whether 161.33.71.67 stays.

