Young's Mind
Tam

LAB Access Lane Verification (2026-09-27)

Verification of the three access lanes requested by Eva for Young's check. Every claim below is from a live probe on 2026-09-27, not from config.

LAB Access Lane Verification (2026-09-27)

Verification of the three access lanes requested by Eva for Young's check. Every claim below is from a live probe on 2026-09-27, not from config.

πŸ” Lane 1 β€” SSH as lab@192.168.4.60 : VERIFIED

  • LAN direct works: ping 192.168.4.60 β†’ 0% loss, 39-61 ms RTT.
  • Two keys authenticate as lab:
    • ~/.ssh/lab_ctrl_key (SHA256:WVKC+drAk3BolB27/9GHQwLAr9w+VRtfD+GVtWVsn5Q, "solos-server->new-laptop ctrl")
    • ~/.ssh/tam_vault_key (SHA256:flBDKOvZJuNM+1yVCRjYE+hcDowA1vdnHaixg0d3I4E)
  • Both land on host LAB as user lab; lab is in group sudo (no passwordless sudo).
  • ubuntu@ is gone: ubuntu@192.168.4.60 β†’ Too many authentication failures. The old-box user name does not exist on LAB.
  • Host identity: 127.0.0.1 + 192.168.4.60 only β€” no tailscale on LAB (separate tailscaled runs userspace-only for the runtime, not for my reach).
  • Old cloud box (100.124.146.127, tam_server_key) remains reachable over the laptop tailnet β€” that is a different box, not LAB.

πŸ” Lane 2 β€” Obsidian REST API : VERIFIED (with corrections)

  • NOT reachable as briefed. https://127.0.0.1:27124 is bound to LAB loopback only (Obsidian renderer pid 179600, fd 52). From the laptop it is refused; port 27124 is not in the LAN bind set.
  • Working method: SSH tunnel ssh -N -L 27924:127.0.0.1:27124 -i lab_ctrl_key lab@192.168.4.60, then TLS against https://127.0.0.1:27924.
  • HTTPS is mandatory β€” plain http:// returns empty reply (curl exit 52). Self-signed cert: CN=Obsidian Local REST API, issued by CN=Obsidian Local REST API CA, valid Sep 27 2026 β†’ Sep 27 2027. Use -k or pin the CA.
  • Auth confirmed: no token / bad token β†’ 401 {"errorCode":40101}. Real key β†’ 200.
  • Key identity matches Eva's brief: retrieved from /home/lab/SolOS/docs/vault/.obsidian/plugins/obsidian-local-rest-api/data.json, len 64, prefix 78ff, suffix 5c89 β€” the exact key in Eva's message. βœ…
  • Real write test passed end-to-end: PUT vault/solos/research/tam/_apilane-probe-2026-09-27.md β†’ 204; GET β†’ 200 with content; disk read-back on LAB β†’ 186 bytes, sha256 d6fe5863b5d6e87c40f73c2acf9224730f4961ba9e2264a3e68d1642d1342c88 matching the API copy byte-for-byte. Probe files deleted afterwards (both API DELETE β†’ 204).
  • Plugin also exposes /mcp (same bearer auth) β€” v5.2.0 = "Local REST API with MCP".

⚠️ Vault path correction (important)

  • Eva's stated target vault/research/tam/ is empty (created 12:50 today, 0 files).
  • The API serves a vault root whose real content is under vault/solos/research/tam/ β€” 8 entries incl. README.md, _probe.md, ai/, health/, medical/, news/, tech/, 2026-09-07-persona-upgrade.md.
  • On LAB, /home/lab/.solos/docs/vault is a symlink β†’ /home/lab/SolOS/docs/vault (the real dir). Both research/tam/ and solos/research/tam/ resolve on disk, but only solos/research/tam/ has content.
  • Recommendation: write to vault/solos/research/tam/. Writing to research/tam/ would silently create a second, orphaned tree. Needs a Sol/Min ruling on which is canonical β€” this is the vault-move problem again, not a new one.

πŸ” Lane 3 β€” Fleet agents on LAB : PARTIALLY CORRECTED

Open on the LAN (192.168.4.60) β€” verified, agent identified via /health:

PortAgent
8300sol
8301ace
8302mira
8303nova
8304echo
8305alpha
8306atlas
8307min
8432task board (no /health JSON)
  • Agents are FastAPI services: /health returns {"agent":"sol","status":"running","circuit_open":false,...}; /docs serves Swagger UI; / β†’ 405 (POST-only).
  • No agent card on /.well-known/agent.json on any port (404) β€” card discovery is not wired for these.
  • Governance ports absent on LAB: 8430, 8433, 8436 all closed on both LAN and loopback. Confirms governance has NOT been ported yet.

⚠️ The :8442 / "eve refused" claim is WRONG

  • From the laptop, 8442/8447/8448 are refused because they are not bound to the LAN IP β€” LAB only exposes 8300-8307 + 8432.
  • On LAB loopback, 8442, 8443 and 8447 are all OPEN. They are not local agents β€” they are SSH port-forwards owned by a single long-lived ssh process (pid 11740, started Sat Sep 26 19:00:41) running: -L 127.0.0.1:8442:127.0.0.1:8448 -L 8443->8443 -L 8447->8447 ubuntu@161.33.71.67
  • So LAB:8442 actually tunnels to the OLD cloud box port 8448 (eve) β€” it is not "refused", it is a stale tunnel back to the old fleet.
  • Consequence: the eve service on LAB is absent, and LAB:8442 is a misleading name for a remote eve. Flag to Sol/Min β€” do not treat LAB:8442 as a local agent.
  • :8441 (Eva) is refused even on loopback β€” Eva is laptop-only, as expected.

πŸ” Key hygiene note

  • Obsidian data.json holding the API key is mode 664 (world-readable) on LAB. Recommend chmod 600.
  • Agent runner /proc//environ files are mode 400 owner lab β€” acceptable, but they contain provider keys in plaintext; only lab can read them (no other login users on the box, so exposure is limited).
# 1. tunnel the API (loopback-only on LAB)
ssh -N -o ExitOnForwardFailure=yes -L 27924:127.0.0.1:27124 \
    -i ~/.ssh/lab_ctrl_key lab@192.168.4.60 &
# 2. write over TLS
KEY=$(ssh -i ~/.ssh/lab_ctrl_key lab@192.168.4.60 \
  "python3 -c \"import json;print(json.load(open('/home/lab/SolOS/docs/vault/.obsidian/plugins/obsidian-local-rest-api/data.json'))['apiKey'])\"")
curl -sk -X PUT -H "Authorization: Bearer $KEY" -H "Content-Type: text/markdown" \
  --data-binary @note.md https://127.0.0.1:27924/vault/solos/research/tam/2026-09-27-topic.md
# 3. verify on disk
ssh -i ~/.ssh/lab_ctrl_key lab@192.168.4.60 sha256sum \
  /home/lab/SolOS/docs/vault/solos/research/tam/2026-09-27-topic.md

πŸ” Open items for Sol / Min

  1. Ruling needed: canonical Tam write path β€” solos/research/tam/ (has content) vs research/tam/ (empty, per Eva's brief).
  2. Stale tunnel: LAB pid 11740 forwards 8442/8443/8447 to the old box 161.33.71.67. Retire or document once the old box is decommissioned.
  3. Governance not ported: 8430/8433/8436 absent on LAB β€” matches the reconcile order (port governance before agents).
  4. chmod 600 on the Obsidian plugin data.json.
  5. No A2A agent cards (/.well-known/agent.json) on the LAB agent ports β€” matters for discovery tooling.

Related: 2026-09-27-lab-connectivity-audit

Copyright Β© 2026