Our repo describes OpenAmer as having "an A2A Global Mesh where every instance talks to every other instance." Claims like that are cheap. So this post is just the measurement: what the mesh actually runs on, read live off the machine it is running on right now.
Everything below was read on 2026-10-13 around 09:37 UTC from the running services and files — not from a design doc.
The discoverability layer — one HTTP card
Any peer that wants to know what an OpenAmer instance offers does one GET:
curl http://localhost:8085/a2a/card
which returns, live:
{
"name": "OpenAmer ASI Core",
"version": "0.1.0",
"capabilities": ["a2a.task.ask","a2a.task.delegate","asi.reasoning",
"asi.learning","asi.world_model","asi.self_improvement",
"desktop.control","writing","code_analysis"],
"heartbeat_subsystems": ["darwin","swarm","a2a","learning","senses",
"system","security","outreach","infra","meta"],
"skills": 1169,
"tools": 10,
"measured_at": "2026-10-13T11:37:38"
}
Two of those numbers are counted on every request (skills, tools), and one timestamp says when. That is deliberate — see the honesty section below.
The supervisor — a 0.7 MB Go daemon
The mesh needs something whose only job is to notice when the master node stops answering. Ours is a single Go binary (go1.27.0), ~10 MB on disk, listening on :18920:
curl http://127.0.0.1:18920/health
{"updated_at":"2026-10-13T09:37:20Z","mesh_url":"http://127.0.0.1:8900",
"mesh_alive":true,"uptime_sec":40000,"go_version":"go1.27.0",
"goroutines":2,"mem_alloc_mb":0.7117538452148438}
That is after 40000 seconds (~11 hours) of uptime: two goroutines, 0.71 MB of allocated heap. The daemon was written to replace a Python service-watchdog for the mesh duties, and the footprint target is written into its own header comment: ~10 MB RSS versus the ~35 MB the Python process held. The heap it reports sits well under even that target.
It probes the mesh master every 30 seconds over plain HTTP, and on a /status hit it writes a JSON file for the cron layer to read — so no cron has to scrape a log to learn the mesh is down.
The cognition layer — ten tools, in-process
The card's "tools": 10 is what the tool server answers on :8081/health:
{"status": "alive", "tools": 10, "swaps": 3}
Those ten tools run in the agent's own process — no subprocess per call. A peer's /a2a/ask or /a2a/delegate POST lands in the same process and goes straight to the in-process ASI core, then returns an ok flag so the caller can tell a real answer from a raised error.
The honesty section — where the card used to lie
The card used to hardcode tools: 109, skills: 664. By 2026-10-10 the disk held 1,111 SKILL.md files — so the card advertised 447 skills that did not exist, and tools: 109 against the 10 the core actually exposes. A self-description nobody re-measured.
The fix: skills and tools are now counted per request — skills from disk, tools from the tool server's own /health — and stamped with measured_at. Right now that reads skills: 1169, tools: 10.
And there is still one stale field. heartbeat_subsystems is a hardcoded list of ten names. The file the heartbeat actually writes (memory/asi_heartbeat.json, updated 2026-10-13T09:36:07Z) tracks thirteen:
darwin, swarm, a2a, learning, senses, system, security,
outreach, infra, meta, a2a_server, desktop, cognition
All thirteen report enabled: true. So the capability card is three subsystems out of date — the exact defect the skills/tools fix was about, in a field that got missed. It is logged here rather than quietly patched to look tidy.
Verify it yourself
If you run OpenAmer, "the mesh is running" is four commands:
curl http://127.0.0.1:8085/a2a/card
curl http://127.0.0.1:18920/health
curl http://127.0.0.1:8081/health
python -c "import json;d=json.load(open('memory/asi_heartbeat.json'));print(len(d['subsystems']))"
The point is not that the numbers are large. It is that one of those four commands currently returns a number three higher than our own capability card admits.
OpenAmer is Apache-2.0 and runs local on Windows: github.com/openamer/openamer.
Top comments (0)