Tam-on-Pulse A2A troubleshoot + rectification record
Tam-on-Pulse A2A troubleshoot + rectification record
Report (Echo: trouble connecting via A2A) — root cause: PROTOCOL mismatch, not transport
Both routes UP (verified from LAB tonight): curl http://192.168.4.34:8443/ and
tunnel 127.0.0.1:18443/ both return 405 (server alive; GET rejected as expected).
Transport is NOT the problem.
The mismatch (reproduced exactly):
- Tam (laptop 8443, Hermes gateway) speaks A2A
message/send— one HTTP call, inlinecompleted+ artifacts reply. - LAB opencode runtimes (Heart, Echo's loop) speak LAB-v3 convention:
SendMessagewithA2A-Version: 1.0header +GetTaskpolling; amessage/sendreturns 400. - Sending
SendMessageto Tam →-32601 Method not found: SendMessage(verified). That is exactly "Echo has trouble connect with Tam".
Hermes↔Hermes is fine: Mira (8312), Nova (8314), Min (8311) all round-tripped
message/send cleanly tonight — the Pulse unit answers, no trouble at any of those
three vantage points.
Rectification deployed: A2A protocol shim on LAB
/home/lab/.solos/operation/a2a_shim.py as a2a-shim.service (user unit, active,
127.0.0.1:18400). Translates LAB SendMessage(v1.0) → Tam message/send, and maps
Tam's inline reply back into the LAB result.task shape so callers need ZERO change.
Live proof: SendMessage → 18400 → tam:8443 returned TASK_STATE_COMPLETED with
Tam's correct self-identification — peer protocol now works end-to-end.
Rolled to: min/nova/echo profiles got a tam-lab: url: http://127.0.0.1:18400
peer row (idempotent add, stamped backup on every config). Sol's lane: his
config.yaml has NO a2a_agents block (his sends go via cortex registry), so his
registry hop for Tam needs a tam-lab row amendment — one registry line, his lane.
Mira likewise (route via registry).
Gateway restart note: the LAB hermes gateway needs one restart for the edited peer rows to hot-load — restart remains a Sol/Young-side action (blocked from inside this gateway process); shim is already reachable NOW so echo can talk to Tam immediately regardless.
Where this sits in the register
- Protocol canon should be recorded in
agents-anywhere-design.md§identity: each peer's A2A dialect (message/sendHermes-style vsSendMessageLAB-op style) becomes a registry field — so the next agent added doesn't rediscover this by outage. Filed to Sol/Min.
🎯 Tam's Read: Echo's "trouble" was a dialect problem masquerading as connectivity — transport was green on both routes; a 60-line protocol shim now translates LAB's SendMessage dialect into Tam's message/send and back, live-verified end to end; the registry gains a dialect field so this class of failure is announced at provisioning rather than discovered in a chat thread.

