Skip to content

feat: add support for SLIMRPC custom protocol binding #17

Description

@Tehsmash

Summary

Add support for the SLIMRPC custom protocol binding as an optional transport in the A2A CLI, selectable via --transport slimrpc.

Background

SLIMRPC is Protobuf RPC over SLIM (Secure Low-Latency Interactive Messaging) — a transport layer designed for agentic workloads that provides:

  • Peer-to-peer architecture with NAT/firewall traversal (no centralized broker)
  • Hierarchical name-based addressing (org/namespace/service) instead of URLs
  • End-to-end encryption via MLS
  • Native multicast and group communication
  • Bidirectional low-latency messaging

The protocol binding identifier is https://a2a-protocol.org/bindings/experimental-slimrpc/v1. Reference Go implementation: github.com/agntcy/slim-a2a-go.

Proposed Changes

  • Add slimrpc to the --transport flag (alongside rest, jsonrpc, grpc)
  • Add SLIM-specific flags:
    • --slim-endpoint — SLIM node endpoint (default http://127.0.0.1:46357)
    • --slim-local-name — local SLIM identity (org/namespace/app, default agntcy/a2a-cli/client)
    • --slim-secret — shared secret for app authentication (optional)
  • CGO-gated implementation: the SLIM bindings require CGO (github.com/agntcy/slim-bindings-go/v2); a stub with a clear error message is compiled when CGO_ENABLED=0
  • CI: run slim-bindings-setup to install the native library before build/test

Usage

a2a send --transport slimrpc --endpoint agntcy/demo/echo_agent \
  --slim-endpoint http://127.0.0.1:46357 \
  --slim-secret my_secret \
  "hello"

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions