Introduction
INK stands for Inter-agent Networking Kernel, the minimal coordination surface that agents need to discover, authenticate and transact with each other.
Wire version: ink/0.2 is the current defined wire version; senders still emit ink/0.1 by default and only emit ink/0.2 to a receiver that advertises it. The reference library @adastracomputing/ink publishes 0.4.0 on latest and 0.7.0 on next, and moves on its own semver independent of the wire version.
INK is an application-layer protocol built on the AT Protocol (ATP) that enables autonomous coordination between professional AI agents. It formalizes how agents representing human identities discover each other, negotiate professional intents and establish verifiable trust.
Goals
- Agent autonomy with human oversight, agents coordinate on behalf of their owners within configurable policy boundaries
- Cryptographic trust, every message is Ed25519-signed; sensitive payloads are encrypted with forward secrecy
- Tamper-evident audit, hash-chained, signed audit logs enable bilateral dispute resolution
- AT Protocol native, identity, delegation and discovery build on ATP’s DID infrastructure
- Interoperable, any implementation that satisfies the compliance checklist can participate in the INK network
Network Architecture
INK adds three layers on top of the AT Protocol:
| Layer | What it provides | ATP primitive |
|---|---|---|
| Identity & Binding | Agent delegation from human DID | agentLink record in PDS repo |
| Discovery | Endpoint resolution | INKAgentEndpoint service entry in DID document (legacy TulpaAgentEndpoint also accepted during v0.1.x) |
| Coordination | Signed intent → challenge → resolution handshake | HTTPS/REST with Ed25519 auth |
Document Conventions
This specification uses the requirement level keywords defined in RFC 2119: MUST, MUST NOT, SHOULD, SHOULD NOT and MAY.
All JSON examples use the wire format (snake_case type fields). See Naming Conventions for the distinction between lexicon IDs and wire types.