Skip to content

v1.1.0 - AIP for AIP

Latest

Choose a tag to compare

@githubscum githubscum released this 08 Jul 18:34

AIP v1.1.0 - "AIP for AIP"

TL;DR. AIP is now Apache-2.0. The reference implementation is
wire-aligned to the AIP whitepaper, the day-0 cleanup is in, and
the v1.1.0 release is anchored in the Bitcoin blockchain via
OpenTimestamps. License change is the headline because it unlocks
adoption; the technical changes are listed below.

This is the first public release of the Agent Interoperability
Protocol (AIP)
as a standalone, brand-neutral, open-source module.
v1.1.0 aligns the reference implementation to the canonical AIP
whitepaper, ships a real aip-attest-v1 Poseidon-Merkle-in-circuit,
and - most importantly - moves the reference implementation from
AGPL-3.0 to Apache License 2.0 with an explicit patent grant.

The protocol is meant to be adopted. Permissive licensing is the
mechanism. The spec remains CC BY 4.0; the implementation is now
permissive so anyone - including closed-source products - can ship
AIP primitives without contagion to their host project.


What's new in v1.1.0

The headline: Apache-2.0 with explicit patent grant

The reference implementation is now Apache License 2.0. The spec
(under docs/aip-v1.0-spec.md and docs/AIP-whitepaper.md) is
CC BY 4.0. The combination - permissive reference impl + permissive
spec - is what makes AIP a credible foundation for third-party stacks.

The change from AGPL-3.0-or-later to Apache-2.0 is intentional and
documented in docs/AIP-whitepaper-concise.md §10.1. The reasoning,
in two sentences: AGPL was correct for a host product but wrong for
a protocol that aspires to be a public primitive. Apache-2.0
maximizes adoption (no copyleft contagion for adopters) while
preserving an explicit patent grant.

Wire-format alignment to the whitepaper

v1.1.0 is wire-breaking with v1.0.1. The reference impl now
matches the canonical spec.

  • Envelope (§4): messageIdenvelopeId, sender.did
    from, recipient.didto, timestampissuedAt. New
    required fields: expiresAt (default issuedAt + 5 min) and
    previousHash (chain anchor).
  • Audit entry (§10): auditIdentryId, actorDID
    actorAgentType, timestampissuedAt, previousEntryHash
    previousHash. New required field: aipVersion: "1.1.0".
  • DID method (§5): did:aip:<AGENT_TYPE>:<base32> (Crockford
    Base32 of a 128-bit CSPRNG). The v1.0.1 AIP_NAMESPACE env var
    is removed. The AIP module is fully brand-neutral at the contract
    level.
  • DID document (§5.2): W3C verificationMethod array with
    Ed25519VerificationKey2020 keys. v1.0.1's
    publicKey/controller/owner fields are gone.
  • Handshake (§6): 2-step HANDSHAKE_OFFER /
    HANDSHAKE_REPLY with capability intersection. The 4-step
    HELLO/CAPABILITY/ACCEPT/REJECT state machine is gone.
  • Trust levels (§12): numeric 0..3 (SELF_DECLARED,
    HANDSHAKE_SIGNED, ZKP_ATTESTED, MULTI_ISSUER).
  • Workflow states (§13): canonical
    PENDING → RUNNING → COMPLETE | FAILED | CANCELLED.

Day-0 cleanup (2026-07-04)

Two corrections to v1.1.0 applied before the public announcement. No
wire-format change.

  • Real aip-attest-v1 circuit shipped. v1.1.0 originally bundled
    a circom_runtime polynomial-iteration test circuit under the
    filename aip-attest-v1.{wasm,zkey}. The filename promised one
    thing and the bytes delivered another. v1.1.0 cleanup replaces
    these with a real aip-attest-v1 Poseidon-Merkle-in-circuit
    (circuits/aip-attest-v1.circom source committed, verification
    key SHA-256 pinned in src/attestation.js). The single-party
    aip-pots-v1 trusted-setup transcript is committed at
    circuits/aip-attest-v1.pots-transcript.txt.
  • AIP_ERR_051 and AIP_ERR_052 allocated. v1.1.0 originally
    reused AIP_ERR_020 (registered as CAPABILITY_EXPIRED) for
    aipVersion mismatch and AIP_ERR_013 (registered as
    TASK_PAYLOAD_TOO_LARGE) for issuedAt clock-skew. The legacy
    codes retain their original semantics; the new codes are the only
    ones used for envelope-version and envelope-freshness failures
    going forward.

The protocol used to claim itself: dev-logs/

AIP is shipped with a reference implementation of its own
selective-disclosure pattern under dev-logs/. The pattern: a
single Ed25519 key signs two independent hash-chained audit logs -
one private (the source of truth, kept off-disk from the public
repo), one public (a curated projection of the private log, committed
to the repo). The two logs share a key but have no cryptographic
link to each other. Projection, not redaction: a public entry is a
fresh signed entry, with its own entryHash and signature, that
references the source entry by entryId in payload.reissuedFrom.

This is AIP used to claim priority for AIP - without depending on
any third party (no arXiv endorsement, no institutional sign-off).
The v1.1.0 release artifacts are OpenTimestamps-anchored to the
Bitcoin blockchain; the OTS proofs are committed at
dev-logs/ots/. The whitepaper is at docs/AIP-whitepaper.md; the
arXiv-submission-length concise version is at
docs/AIP-whitepaper-concise.md and docs/AIP-whitepaper-concise.pdf.

See dev-logs/SELECTIVE-DISCLOSURE.md for the design pattern and
dev-logs/OPS.md for the priority-proof and distribution playbook.


Quickstart

# Pin the version
npm install github:githubscum/aip-protocol#v1.1.0

# Wire your identity provider (one-time, at startup)
import { setDIDProvider } from '@aip-protocol/aip/didProvider';
import { getOrCreateAgentDID, sign, verify } from './your-aip-bindings.js';

setDIDProvider({
  getDID: (agentType) => getOrCreateAgentDID(agentType),
  sign:   (agentType, bytes) => sign(agentType, bytes),
  verify: (agentType, sig, bytes) => verify(agentType, sig, bytes),
});

# Construct an envelope
import { createMessageEnvelope } from '@aip-protocol/aip/messageEnvelope';
const env = createMessageEnvelope({
  from: 'did:aip:builder:abc123...',
  to:   'did:aip:reviewer:def456...',
  body: { type: 'TASK', task: 'review-pr-42' },
});

# Verify
import { verifyMessageEnvelope } from '@aip-protocol/aip/messageEnvelope';
verifyMessageEnvelope(env, 'reviewer');

For a full end-to-end example, see examples/ and the concise
whitepaper.

Test results

  • npm test - 24/24 passing (8 envelope + 5 audit + 5
    handshake + 6 attestation)
  • npm run smoke - 14/14 passing (brand-neutrality, public
    API surface, circuit artifacts)
  • dev-logs/verify - green (private + public chains signed, no
    drift)

What's deferred to v1.2

  • Halo2 / BN254 / IPA normative proving system (Groth16 is
    currently the permitted variant per §5.3.7)
  • Community Powers-of-Tau ceremony (the single-party
    aip-pots-v1 transcript is committed; the upgrade to a
    multi-party ceremony is mechanical)
  • LIGHTWEIGHT_HANDSHAKE interop mode body (§6.5 - the flag
    is plumbed; the JWT issuance/verification is the v1.2 work)
  • Production routing layer (§11)
  • Remote peer resolution (wire-level)
  • Public npm publish (the GitHub tag is the distribution
    surface until v1.2)

See docs/AIP-LAUNCH.md for the full v1.2 roadmap.

License

  • Reference implementation - Apache License 2.0
    (LICENSE)
  • Specification, whitepaper, concise whitepaper - Creative
    Commons Attribution 4.0 International (CC-BY-4.0)

Attribution

AIP v1.1.0 is released by Isaac Liem
(ORCID 0009-0006-2476-1615).
AIP is brand-neutral at the contract level: the module refuses to
construct a DID, sign an envelope, or write an audit entry until
the host application supplies its own DIDProvider. The brand-
neutrality of the implementation is what makes the open-source
nature of the protocol credible - any host, any deployment, any
founder can use these primitives without leaking their identity.

Security

Vulnerability disclosure: see SECURITY.md. Please do not file
public issues for security-relevant findings.

Links

  • Spec: docs/aip-v1.0-spec.md
  • Whitepaper: docs/AIP-whitepaper.md
  • Concise whitepaper (arXiv-length): docs/AIP-whitepaper-concise.md
    and docs/AIP-whitepaper-concise.pdf
  • Launch document: docs/AIP-LAUNCH.md
  • CHANGELOG: CHANGELOG.md
  • Known limits: KNOWN-LIMITS.md
  • Development log: dev-logs/README.md
  • Selective disclosure pattern: dev-logs/SELECTIVE-DISCLOSURE.md
  • Priority proof / distribution playbook: dev-logs/OPS.md
  • Author ORCID: 0009-0006-2476-1615