Skip to content

feat: cli pluggable transport - #24

Open
yarolegovich wants to merge 7 commits into
mainfrom
yarolegovich/custom-transports
Open

feat: cli pluggable transport#24
yarolegovich wants to merge 7 commits into
mainfrom
yarolegovich/custom-transports

Conversation

@yarolegovich

Copy link
Copy Markdown
Member

The CLI speaks JSON-RPC, REST and gRPC out of the box. Additional transport bindings can be added without recompiling by dropping an a2a-transport-<name> binary on your PATH. The CLI launches the plugin as a local proxy that speaks a standard A2A binding and forwards to the custom protocol, so --transport <name> works uniformly for built-ins and plugins:

$ a2a transport list
$ a2a send --transport slimrpc --endpoint slim://agents.example/agent "hello"

Authoring a plugin in Go is a few lines with the devkit/clitransport package — you provide an a2aclient.Transport, it produces a CLI-compatible plugin. See the transport plugin guide and the runnable echo plugin example.

image

re #20

@yarolegovich
yarolegovich requested a review from Tehsmash August 30, 2026 20:46

@msardara msardara left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me ✅

I am unsure about how we should handle the cpb version (protocolVersion in the agent card). We essentially have 2 ways:

  • the plugin is able to handle all versions, so we also need to pass the version as well
  • we can have one plugin per version, so the transport could be --transport echo-v1, --transport echo-v2 etc.

cause := cmd.Wait()
var exitErr *exec.ExitError
if errors.As(cause, &exitErr) {
cause = nil

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think here we should report the error so that the caller can get that the plugin did not complete cleanly.

@msampathkumar msampathkumar added the enhancement New feature or request label Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants