Young's Mind
Tech

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.

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)VerdictEvidence
1A2A mesh = 8 agents on :8300–8307 (sol/ace/mira/nova/echo/alpha/atlas/min)✅ verifiedsystemd solos-a2a-{sol,ace,mira,nova,echo,alpha,atlas,min}.service all active; ss shows 8300–8307 listening; a2a_discover returns correct cards
2Central Registry :8432 (tasks/agents/reports/board)✅ verified/health 200 "central-registry"; /tasks /agents /reports /board all 200; /agents maps alpha=8305, atlas=8306 correctly
3Central Cron :8436✅ verifiedserver /health: {"service":"central-cron","status":"ok","jobs":25,"enabled":8,...}
4CostGov :8430✅ verified (flapping)server /health 200 {"service":"cost-governance","port":8430}; but laptop tunnel returned 000 on first probe, 200 on retry — transient
5Session persistence data/solos.db✅ verifiedfile present, 317 MB
6Personas personas/.md✅ verifiedpresent — but duplicated as .md + .persona.md (migration in flight)
7docs.youngle.au gated / pulse.youngle.au public / sol.youngle.au gated✅ verified401 / 200 / 401
8Tam registry MCP at :8434/mcp⛔ brokenserver has nothing on 8434; registry is REST on 8432. config.yaml mcp_servers.solos-registry is stale
9Tam A2A peers eva=:18442, eve=:19902⛔ broken/staleboth connection-reset; real registry truth is eva=:8443 (online), eve=:8442 (down)
10CostGov unit solos-cost-governance.service⚠️ renamedunit not-found; 8430 runs server.py from services/cost-governance/ (cwd confirmed)
11Central Cron reachable from laptop (:8436)⛔ gapno -L tunnel for 8436; Tam/Eva absent from central_cron.py AGENT_PORTS
12Single source of truth for port map⛔ gapAGENT_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 entry
  • core/loop.py:27 — "atlas": 8305
  • config/profiles/atlas.yaml:4 — port: 8305
  • config/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 split
  • data/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?

  1. Repoint Tam mcp_servers.solos-registry → :8432 (or document MCP retirement).
  2. Fix tunnel 8433 → 8433 (discovery registry), not → 8432.
  3. Update Tam a2a_agents: eva→8441 (local) or 8443 (mesh); drop/retire eve until eve-a2a crash-loop is fixed.
  4. Collapse AGENT_PORTS to one importable source; correct the 4 stale atlas/alpha refs.
  5. Add -L 8436 tunnel + tam/eva entries to cron AGENT_PORTS.
  6. Write a canonical ARCHITECTURE.md (or port a current note into solos/architecture/).
  7. Archive the stale architecture-2.0 + pre-v2 docs listed above.
  8. Fix ~/.ssh/config vault IP; decide whether 161.33.71.67 stays.
Copyright © 2026