Skip to main content

Transport Overview

ANIP separates the governed capability contract from the wire format used to reach it. HTTP and stdio are the complete generated transport paths across all five runtimes. gRPC is a functional Python/Go core binding for protobuf-first environments, but it currently trails the newest approval-grant workflow.

That distinction matters:

ANIP capability contract = what the agent is allowed to do and how execution is governed
transport binding = how protocol messages move between client and service
interface adapter = optional derived surface such as REST, GraphQL, or MCP

Changing transport should not change the service's public capability semantics.

Available transports

TransportWire formatRuntimesBest for
HTTPREST-like endpointsAll 5Web services, browsers, Studio
stdioJSON-RPC 2.0 on stdin/stdoutAll 5CLI tools, local agents, subprocess communication
gRPCProtobuf over HTTP/2Python, GoHigh-performance internal services where core transport coverage is sufficient

The native transports expose the same core protocol operations:

OperationPurpose
DiscoveryFind service metadata and endpoint/method locations.
JWKSFetch public verification keys.
ManifestFetch signed capability declarations.
Token issuanceMint scoped delegation tokens.
Permission discoveryAsk what is available, restricted, or denied before invocation.
InvokeExecute one bounded capability.
AuditQuery protocol-level execution evidence.
CheckpointsVerify tamper-evident audit history.

Choosing a transport

HTTP is the default. Start here for deployed services, browser access, Studio integration, Registry examples, and service-to-service calls. All five runtimes support it, and the generated REST, GraphQL, and MCP interface adapters mount on HTTP.

stdio is for local process communication. Use it when an agent or developer tool launches the ANIP service as a subprocess and communicates over stdin/stdout without opening a network port. This is useful for local agent clients, IDE integrations, and sandboxed environments.

gRPC is for internal platform environments where protobuf, HTTP/2, typed generated clients, or service-mesh conventions matter. It is currently implemented in Python and Go for the core transport operations. Use HTTP or stdio for full current generated-service parity.

Support Matrix

TargetHTTPstdiogRPC
PythonYesYesYes
TypeScriptYesYesPlanned
GoYesYesYes
JavaYesYesPlanned
C#YesYesPlanned

The generator can emit HTTP and stdio runners from the same package or service definition:

anip generate \
--package [email protected] \
--target typescript \
--transport http,stdio \
--output ./generated/my-service

Framework selection is independent from transport selection. For example, TypeScript can generate Hono, Express, or Fastify HTTP hosts while preserving the same ANIP contract.

Auth by Transport

TransportAuth carrierNotes
HTTPAuthorization: Bearer <token> headerBest fit for deployed services, OIDC/API-key bootstrap, and browser/tooling integration.
stdioauth object in JSON-RPC paramsThere are no HTTP headers, so generated stdio bindings carry auth inside the request payload.
gRPCauthorization metadataSame bearer-token model, carried through gRPC metadata.

The token semantics are the same regardless of carrier. API keys or OIDC tokens can bootstrap a principal; ANIP delegation tokens are used for bounded agent execution.

Native Transports vs Interface Adapters

Transports are how native ANIP protocol messages are carried:

  • Native ANIP over HTTP.
  • Native ANIP over stdio.
  • Native ANIP over gRPC.

Interface adapters are derived product surfaces generated from ANIP capabilities:

  • REST/OpenAPI.
  • GraphQL.
  • MCP.

Adapters are useful for interoperability, but they are not the source of governance. The ANIP capability contract remains the authority for permissions, approvals, failures, cost, lineage, audit, and verification.

Practical Patterns

PatternRecommended surface
Public or internal deployed serviceNative ANIP HTTP
Local tool launched by an agentNative ANIP stdio
Existing MCP client needs accessMCP adapter derived from ANIP capabilities
Existing application wants OpenAPIREST adapter derived from ANIP capabilities
Internal platform with protobuf standardsNative ANIP gRPC where supported
Studio project design and testingNative ANIP HTTP

Next Steps