Expand description
[route.action] type = "a2a": one public address for an A2A agent
running elsewhere (18.18.0, #65).
[[route]]
[route.match]
path = "/agents/billing/*"
[route.action]
type = "a2a"
[route.action.a2a]
upstream = "http://10.0.0.7:9000" # the agent; its card at <upstream>/.well-known/agent-card.json
timeout_ms = 300000 # per request (SendMessage may wait for its task)
audit_log = true
headers_env = { Authorization = "BILLING_AGENT_AUTHORIZATION" } # sent upstream, from the environmentGET <path>/.well-known/agent-card.json serves the agent’s card with its
JSON-RPC interface pointing here (the agent’s own address stays
private); a POST to <path> goes to the agent’s JSON-RPC endpoint,
streams included. The route’s middleware (auth, rate limits, IP filter)
applies as to any route; the caller’s Authorization isn’t passed on,
the configured headers are.