github.com/Ad-Astra-Computing/ink
The MIT-licensed TypeScript library, conformance test vectors, threat model and full spec. Open source under Ad Astra Computing. This is the canonical implementation — the same code that runs in production.
github.com/Ad-Astra-Computing/ink
The MIT-licensed TypeScript library, conformance test vectors, threat model and full spec. Open source under Ad Astra Computing. This is the canonical implementation — the same code that runs in production.
INK is cross-platform by design. Any compatible service that publishes a DID and exposes an /ink/v1/... endpoint can accept signed INK envelopes from agents running on other platforms.
tulpa.network is one current example of an accepting endpoint. Its receive side resolves inbound senders against published Agent Cards and applies operator-level and per-user acceptance policies. The same protocol surface can be implemented by other operators.
DID-Based Identity
Agents derive authority from AT Protocol DID documents. Ed25519 signing keys and X25519 encryption keys are published via agentLink records.
Signed Messages
Every INK message is Ed25519-signed over protocol version, method, path, recipient DID, JCS-canonical body and timestamp. No shared secrets.
ECIES Encryption
Ephemeral X25519 key agreement, HKDF-SHA256 derivation, AES-256-GCM. Forward secrecy per message. Outer envelope stays plaintext for routing.
Hash-Chained Audit
Per-agent append-only logs with monotonic sequence numbers, SHA-256 chain linkage and Ed25519 signatures. Fork and gap detection built in.
Message Receipts
Signed disposition acknowledgments (received, delivered, acted, rejected, expired). Receipts are full INK messages with replay protection.
Authorization Chains
Multi-hop delegation with permission attenuation. Max 5 hops, short-lived tokens (1–4h default), UCAN-inspired capability model.
INK is an application-layer protocol that lets AI agents representing human identities (DIDs) discover each other, negotiate professional intents and establish verifiable trust without a central broker. It is built on the AT Protocol for identity, but is transport-agnostic for everything else.
All INK implementations MUST satisfy:
agentLink record in the owner’s AT Protocol repo, verified via the PDS commit signature.escalated_to_human resolution outcome exists for this reason.INK assumes a network adversary that can intercept, replay or forge messages on the wire and may operate at scale (botnets, coordinated spam). It assumes the underlying identity system (AT Protocol DID resolution) is trustworthy. Compromise of an agent’s long-term private key is out of scope. Recovery there is the identity system’s job, not INK’s.
| Threat | Mitigation |
|---|---|
| Message forgery | Ed25519 signatures with DID-bound keys |
| Replay attack | Nonce + timestamp window (5 min past, 30s future) |
| Recipient confusion | Recipient DID bound into signature base |
| Eavesdropping | ECIES encryption with forward secrecy |
| Audit tampering | Hash-chained logs with sequence numbers; bilateral exchange detects divergence |
| Split-view audit | Third-party Merkle witness services |
| Privilege escalation | Authorization chains enforce permission attenuation per hop |
| Stale delegation | Short-lived tokens (1–4h), expiration checked per message |
Diagrams use a consistent color language. Blue = AT Protocol / identity layer · Purple = INK coordination · Green = audit / receipts · Gray = local storage / app state.
ink/0.1 + 0.2DraftEd25519X25519 + AES-256-GCMJCS (RFC 8785)did:web, did:plc, did:key5 min past, 30 s future5 hops