Skip to content

Agent Protocols

Go implementation of agent-to-agent communication protocols.

Experimental

This library implements draft specifications that are subject to change.

Overview

This repository provides Go libraries for emerging AI agent authentication and authorization protocols. As AI agents become more prevalent, standardized approaches to agent identity and authentication are critical for secure multi-agent systems.

Protocols

  • AAuth


    Agent Authentication using HTTP message signatures and token exchange.

    Best for: AI agent identity, cryptographic authentication, human delegation.

    Learn more

  • ID-JAG


    Identity Assertion JWT Authorization Grant for OAuth 2.0 token exchange.

    Best for: OAuth 2.0 environments, human-to-agent delegation, existing IdP integration.

    Learn more

  • AIMS


    Agent Identity Management System using SPIFFE and WIMSE standards.

    Best for: Kubernetes/cloud-native, mTLS environments, workload identity.

    Learn more

  • A2A


    Agent-to-Agent Protocol for agent discovery and task delegation.

    Best for: Multi-agent discovery, capability invocation, agent-to-agent task delegation.

    Learn more

  • AuthZEN


    PDP client for authorization decisions based on OpenID AuthZEN.

    Best for: Policy decision points, agent-aware authorization checks.

    Learn more

Cross-Cutting Packages

  • Bridge


    Cross-protocol interoperability with a canonical Identity type and multi-protocol HTTP middleware accepting ID-JAG, AIMS, and AAuth.

    Learn more

  • SCIM Extension


    SCIM 2.0 extensions for provisioning AI agents and applications.

    Learn more

Choosing a Protocol

Aspect AAuth ID-JAG AIMS
Type Protocol Protocol Framework
Identity Model AAuth IDs OAuth JWT assertions SPIFFE IDs
Credential Format aa-agent+jwt, aa-auth+jwt Signed JWT assertions X.509 SVIDs, JWT-SVIDs, WITs
Authentication HTTP signatures + tokens Token exchange (RFC 8693) mTLS or WIT/WPT
Delegation Person Server + cnf act claim SPIFFE path conventions
Best For AI agent identity OAuth 2.0 environments Kubernetes/cloud-native
Standards RFC 9421, RFC 8693 RFC 8693, RFC 7523 SPIFFE, WIMSE

Installation

go get github.com/aistandardsio/agent-protocols

Quick Examples

import "github.com/aistandardsio/agent-protocols/aauth"

// Create agent with cryptographic identity
agentID, _ := aauth.NewAAuthID("calendar-bot", "example.com")
agent, _ := aauth.NewAgent(agentID, privateKey,
    aauth.WithAgentProviderURL("https://agents.example.com"))

// Create signed HTTP request
req, _ := agent.SignedRequest(ctx, "GET", "https://api.example.com/events", nil)

// Or use automatic signing transport
client := &http.Client{Transport: agent.Transport(nil)}
resp, _ := client.Get("https://api.example.com/events")
import "github.com/aistandardsio/agent-protocols/idjag"

// Agent authenticates as itself
assertion := idjag.NewAssertion(
    "https://issuer.example.com",
    "agent:calendar-bot",
    []string{"https://auth.example.com"},
    5 * time.Minute,
)

// Exchange for access token
client := idjag.NewTokenExchangeClient("https://auth.example.com/token")
resp, err := client.ExchangeAssertion(ctx, signedAssertion, "read:data")
import "github.com/aistandardsio/agent-protocols/aims"

// Create SPIFFE ID for agent
spiffeID, _ := aims.NewSPIFFEID("example.com", "/agent/calendar-bot")

// Create Workload Identity Token
wit := aims.NewWIT(spiffeID, []string{"https://api.example.com"}, 1*time.Hour)
signedWIT, _ := wit.Sign(privateKey, "key-1")

// Create proof token for specific request
wpt := aims.NewWPTForRequest(spiffeID.String(), "https://api.example.com", req)
wpt.BindToRequest(req, privateKey, "key-1")

Adapters

Production-ready integrations with identity infrastructure.

  • Zitadel


    Integration with Zitadel OIDC infrastructure for all three protocols.

    Learn more

  • SharkAuth


    Agent delegation with may_act_grants and DPoP proof-of-possession.

    Learn more

  • Ory


    Custom Fosite OAuth handlers and Hydra client integration.

    Learn more

  • omniskill


    ID-JAG verifier adapter for omniskill's ExternalAuth seam, turning any omniskill-based MCP server into an OAuth resource server.

    Learn more

  • Keycloak


    Bootstraps Keycloak 26.7's experimental identity-assertion-jwt feature as an ID-JAG receiver. Experimental.

    Learn more

Documentation

AAuth

ID-JAG

AIMS

A2A

AuthZEN

Bridge

SCIM Extension

Adapters

  • Zitadel - Integration with Zitadel OIDC infrastructure
  • SharkAuth - Agent delegation with DPoP proof-of-possession
  • Ory - Fosite handlers and Hydra client for OAuth 2.0
  • omniskill - ID-JAG verifier for omniskill's ExternalAuth seam
  • Keycloak - identity-assertion-jwt receiver bootstrap (experimental)

Releases

  • v0.7.0 - A2A and AuthZEN clients, omniskill and Keycloak adapters (2026-08-09)
  • v0.6.0 - Interface-based servers, SCIM extensions (2026-06-27)
  • v0.3.0 - SharkAuth and Ory adapters (2026-05-11)
  • v0.2.0 - AAuth protocol, Zitadel adapter (2026-05-11)
  • v0.1.0 - ID-JAG and AIMS protocols (2026-04-19)

AAuth

ID-JAG

AIMS