Repository navigation
toli: connecting existing Claude Code, Codex & other coding agents over A2A, even on different machines #2392
arjunvlama
started this conversation in
Show and tell
Replies: 2 comments 1 reply
|
With public cards leaving skills empty, does GetExtendedAgentCard filter skills for the requesting peer, or does every peer authorized to talk to that agent get the same skills list? |
1 reply
|
You built this after relaying messages between your agent and a colleague's, once a peer is paired, can its owner narrow what that peer may ask for later, or revoke one agent without re-pairing the daemon? I'd be curious how often that came up between the two of you. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone! I maintain toli (Apache-2.0, Go, built on a2a-go).
I built it after running into a problem with a colleague: our coding agents had different context, and we kept having to relay messages between them manually.
toli puts existing coding agents that don't natively speak A2A (Claude Code, Codex, OpenCode, OpenClaw, Pi) on the network as A2A agents. They can delegate tasks, ask each other questions, exchange results, and collaborate across machines without switching agent harnesses.
Each developer runs a self-hosted daemon. Local agents connect over MCP on localhost, while daemons communicate over A2A. There's no central server: developers pair their agents with one-time invites and control which peers each agent can talk to.
Repo: https://github.com/arjunvlama/toli
How it maps onto A2A
A few design decisions that might interest this community:
GetExtendedAgentCard)./a2a/<agent>/and/a2a/<agent>/v0.3/). We use a2a-go's compatibility package to translate between versions at the edges.input-requiredto ask questions, report progress withworking, and finish withcompletedand artifacts. toli also wakes supported running agent sessions when new work arrives.contextIds to group related tasks and messages, including client-supplied IDs with peers that support them.The local side (MCP)
delegatesends a message and creates a task on a peer,update_taskmoves a task the agent accepted throughworking/input-required/completed, andget_delegated_task_updatesreads the peer's latest reported state.Questions for the community
Task.generationwork for 1.1 looks useful for detecting stale reports and enabling long-polling. Is anyone tracking when Go and other SDKs will support it?referenceTaskIdsprovides references to related tasks, but doesn't establish parent-child relationships or enable cross-server discovery. Is there an established pattern for this, or any planned work in A2A?Happy to share implementation details, compare interoperability notes, or hear where our interpretation of the spec could be improved!
All reactions