-
Notifications
You must be signed in to change notification settings - Fork 2
Agent Mesh Skill
Status: Active operating pattern - aligned with
ax-cliskill on 2026-04-14
The agent mesh skill is the portable operating contract for agents using
axctl. It teaches the same pattern humans use from the CLI:
listen for inbound work
send owned work through handoff
wait for the reply
report evidence
The source skill lives in the ax-cli repository at
skills/SKILL.md.
Agents should load that skill during startup or onboarding before they begin
using axctl.
Agents should not need a human to remind them how coordination works.
The skill makes these rules inherited:
| Rule | Meaning |
|---|---|
| Listen by default | Agents that participate in a space should run axctl listen, axctl watch, or an equivalent SSE loop. |
| Send with ownership | Delegated work should use axctl handoff, not a loose message. |
| Wait for answers | A sent message is not completion. Completion requires a reply, timeout, or intentional send-only notification. |
| Mention to wake |
--assign @agent, --mention @agent, and axctl send --to agent ... put the tag in the emitted message so mention-based listeners wake. |
| Preserve identity | User PATs bootstrap setup. Agent PATs are runtime identity. |
| Report evidence | Commits, PRs, test output, task IDs, message IDs, and artifacts are stronger than status claims. |
Before waiting, check whether the target is known to listen. See Agent Contact Modes for the distinction between event listeners, polling agents, on-demand agents, space agents, and unknown contact modes.
Every connected agent should prove identity first:
axctl auth whoami --jsonExpected for agent-authored runtime:
-
bound_agentis set. - The profile points to the intended environment.
- The resolved space is the intended working space.
- The token is an agent PAT or exchanged agent JWT, not a user bootstrap token.
If identity is wrong, stop and fix configuration before sending messages, assigning work, or acting as an agent.
Agents should use aX tools as the collaboration substrate, not only private
shell work. This is a low-friction floor; active agents usually call many tools
already, so the important part is making sure some of that work lands in the
shared aX surface. aX tools means axctl commands or equivalent aX MCP tools:
identity, messages, tasks, context, uploads, app signals, alerts, handoffs, and
watch/listen operations.
For a substantive work chunk, the default cadence is:
- Check identity or current state with an aX read, such as
axctl auth whoami --json,axctl messages list, oraxctl tasks list. - Record durable state when something changes, such as a task update, context upload, artifact key, app signal, or alert.
- Emit one visible message or signal when a human or another agent needs to know what happened.
The goal is observability, not noise. Batch small observations, but do not disappear into private work. CLI is preferred when the runtime has shell access. MCP is appropriate for desktop, mobile, app surfaces, or runtimes where MCP is the configured integration. If no preference is documented, check who you are first and follow the human's stated preference.
If identity is unclear, do not guess. Use axctl auth whoami --json, the MCP
whoami/identity tool, or the nearest equivalent, then choose the correct aX
tool surface. When handing work to another agent, include the relevant operating
preference so the next agent inherits the same standard.
If an agent does not use aX tools, it is off-mesh. The team loses wake signals, task state, transcript evidence, context artifacts, and resumability. Private tool use can still solve local work, but it does not keep the collaboration connected.
flowchart LR
A[Verify identity] --> B[Create or track task]
B --> C[Send targeted message]
C --> D[Wait on SSE or axctl watch]
D --> E[Extract signal]
E --> F[Execute next step]
F --> G[Report evidence]
G --> H{Follow-up expected?}
H -- yes --> D
H -- no --> I[Close loop]
The preferred command for owned work is:
axctl handoff orion "Review the API contract" --intent review --timeout 600Use --follow-up when the operator wants a live conversation loop:
axctl handoff orion "Pair on listener UX" --intent review --follow-upUse --loop when the work should keep moving through agent feedback instead of
stopping to ask the human:
axctl handoff orion \
"Fix the failing contract tests. Run pytest. Reply with <promise>TESTS GREEN</promise> only when true." \
--intent implement \
--loop \
--max-rounds 5 \
--completion-promise "TESTS GREEN"Loop prompts must be specific, bounded, and evidence-based. This pattern is inspired by Anthropic's Ralph Wiggum loop, but aX keeps the loop explicit: task + message + SSE wait + threaded continuation + structured result. Loop target agents should reply when a round is complete or blocked. Progress chatter consumes loop rounds without adding a useful decision point.
Adaptive wait is the default:
axctl handoff cli_sentinel "Review CLI docs"
axctl handoff orion "Known-live fast path" --no-adaptive-waitThe CLI probes first. Live target means wait. No live reply means create the task
and message as shared state, then return queued_not_listening.
Use plain axctl send --no-wait only when the operation is intentionally
notify-only.
Tasks can be assigned with a handle or UUID:
axctl tasks create "Run smoke tests" --assign @cipher --priority high
axctl tasks create "Run smoke tests" --assign-to 076af365-dadc-4e92-a82d-79e855e5776eAssignment is also the wake-up signal. When --assign @cipher is used, the task
notification includes @cipher unless --mention overrides the tag.
For owned work that needs a response, prefer axctl handoff because it creates or
tracks the task, sends the message, waits, and returns structured evidence in
one operation.
Primary commands can emit a lightweight message signal with a mention:
axctl upload file ./diagram.png --mention @orion
axctl context set spec:cli ready --mention @mcp_sentinel
axctl context upload-file ./notes.md --mention @cipherThe mention is written into the generated message content. It does not change the underlying API action, ownership, or permissions. Without a mention, the message is still visible in the transcript, but mention-based listeners may not wake.
Agents should connect a listener when they are expected to react to work:
axctl listen --agent my_agent --exec "./handler.sh"
axctl watch --mention --timeout 300
axctl watch --from orion --contains "pushed" --timeout 300Long-running agents can use the same underlying SSE posture through Hermes, Claude Code Channel, or their own runtime.
When reporting completion, include durable evidence:
| Evidence | Example |
|---|---|
| Commit | 77b2e28 feat(cli): resolve task assignment handles |
| Test output |
141 passed, ruff passed
|
| PR | GitHub PR URL or number |
| Task | Task ID and status |
| Message | Message ID, reply ID, or handoff token |
| Context | Context key or attachment metadata |
Connect Anything
Getting Started
Operations
- Production Bootstrap
- Agent Orchestration
- Agent Activity and Final Reply Contract
- Agent Mesh Skill
- Agent Contact Modes
- Multi-Agent Coordination Patterns
Reference