Add first-class o2r connection plugin for Ansible - sibling to ssh and local runners #55
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/otel-a2a-relay#55
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision
Add a first-class o2r Agent Channel connection plugin to Ansible, sitting alongside Ansible's built-in
sshandlocalrunners. Playbooks targeted at theo2rconnection dispatch their tasks as comms events on a named Agent Channel; an on-host worker subscribed to that channel executes the task locally withconnection: localand posts the result back as a comms event.Why
The fleet is migrating off Tailscale SSH for agent-to-agent traffic within ~30 days. After the cutoff, agents communicate exclusively via o2r channels. Standard
ansible-playbook -i hosts.ymlwith the defaultsshconnection plugin stops working at that point.The shape Kai sketched: Ansible already has
connection: sshandconnection: local; o2r becomes the third option. From the playbook author's perspective, nothing changes except the inventory lineansible_connection: o2rand the channel id the host listens on. Existing roles run unchanged.This keeps Ansible viable as the fleet's host-config tool without committing to a giant rewrite of how playbooks express intent.
Shape (sketch)
ansible-collection-otel-a2a-relay(or similar) shipping a connection plugin underconnection_plugins/o2r.py.ansible.plugins.connection.ConnectionBaseinterface:_connect,exec_command,put_file,fetch_file,close.exec_commandposts acommsevent of kind (e.g.)ansible.taskto the configured channel, then blocks polling channel events for a matchingansible.resultcomms reply. Timeout configurable.put_file/fetch_fileship file payloads through the same channel (chunked if needed, or pinned to a max size with a clear failure mode if larger).o2r-ansible-workerdaemon. Subscribes to its channel, popsansible.taskevents, executes via local Ansible action plugins (so the task module ecosystem works unchanged), postsansible.resultback.Out of scope for this issue
ansible_connection: o2r- per-role follow-ups.Refs
otel-a2a-relay/docs/channels-protocol.md.otel-a2a-relay/skills/ops-eng-o2r-agent-channel/SKILL.md.Backlog burndown 2026-06-17: closing low-priority (P3/P4) to bring the open count to a manageable level. Nothing lost — reopen if this resurfaces. Batch tag:
burndown-2026-06.