Releases: githubscum/aip-protocol
Release list
v1.1.0 - AIP for AIP
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):messageId→envelopeId,sender.did→
from,recipient.did→to,timestamp→issuedAt. New
required fields:expiresAt(defaultissuedAt + 5 min) and
previousHash(chain anchor). - Audit entry (
§10):auditId→entryId,actorDID→
actorAgentType,timestamp→issuedAt,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.1AIP_NAMESPACEenv var
is removed. The AIP module is fully brand-neutral at the contract
level. - DID document (
§5.2): W3CverificationMethodarray with
Ed25519VerificationKey2020keys. v1.0.1's
publicKey/controller/ownerfields are gone. - Handshake (
§6): 2-stepHANDSHAKE_OFFER/
HANDSHAKE_REPLYwith capability intersection. The 4-step
HELLO/CAPABILITY/ACCEPT/REJECT state machine is gone. - Trust levels (
§12): numeric0..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-v1circuit shipped. v1.1.0 originally bundled
acircom_runtimepolynomial-iteration test circuit under the
filenameaip-attest-v1.{wasm,zkey}. The filename promised one
thing and the bytes delivered another. v1.1.0 cleanup replaces
these with a realaip-attest-v1Poseidon-Merkle-in-circuit
(circuits/aip-attest-v1.circomsource committed, verification
key SHA-256 pinned insrc/attestation.js). The single-party
aip-pots-v1trusted-setup transcript is committed at
circuits/aip-attest-v1.pots-transcript.txt. AIP_ERR_051andAIP_ERR_052allocated. v1.1.0 originally
reusedAIP_ERR_020(registered asCAPABILITY_EXPIRED) for
aipVersionmismatch andAIP_ERR_013(registered as
TASK_PAYLOAD_TOO_LARGE) forissuedAtclock-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-v1transcript is committed; the upgrade to a
multi-party ceremony is mechanical) LIGHTWEIGHT_HANDSHAKEinterop 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
anddocs/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
v1.0.1 — initial standalone release
@aip-protocol/aip v1.0.1 — initial standalone release
The first standalone release of the AIP module, extracted from the host application. Brand-neutral: it does not depend on, refer to, or leak the identity of the host application.
Install
npm install github:githubscum/aip-protocol#v1.0.1What's in this release
Spec↔code alignment
- §4.2 message types: code now uses the 10 types named in spec (
HANDSHAKE_OFFER,HANDSHAKE_REPLY,TASK,RESULT,ERROR,AUDIT,ROUTING_DECISION,KEY_ROTATION,REVOCATION,ACK) - §6 handshake: 2-step
HANDSHAKE_OFFER/HANDSHAKE_REPLY(decision: "accept" | "reject") replaces the pre-1.0 4-step model HandshakeStateMachineAPI:sendOffer()/sendReply();runLocal()preserved- State machine constants:
OFFER_SENT,REPLY_SENT,ESTABLISHED,REJECTED(matches spec §6.1) - §5.3.7: Groth16 (
groth16-bn254-v1) permitted variant retained - JSDoc section references in
src/constants.jscorrected throughout
Brand-leak cleanup
IKE-SPEC-AIP-001references removed from README, LICENSE, constants.js"Ike Analytics"copyright replaced with"AIP Protocol contributors"in LICENSE- Stale 4-message model references removed from JSDoc across
src/handshake.js,src/messageEnvelope.js,src/peerRegistry.js,tests/handshake.test.js
Governance
- README.md: real install path, corrected spec TOC, status line
- SECURITY.md: vulnerability disclosure policy
- CONTRIBUTING.md: PR process + brand-neutrality requirement
- KNOWN-LIMITS.md: explicit v1.0.1 scope (single-party ceremony, Groth16 placeholder, etc.)
- CHANGELOG.md
Bug fixes
attestation.jsJSDoc: removed contradiction between "placeholder test circuit" and "v0.3: real circuit" — current status is "Groth16 permitted variant; fullaip-attest-v1circuit is the v1.1 follow-up"messageEnvelope.js:HELLOreference corrected toHANDSHAKE_OFFERpeerRegistry.js: JSDocHELLO→HANDSHAKE_OFFER
Verified
npm test— 10/10 (6 attestation + 4 handshake)npm run smoke— 14/14 (brand-neutrality, tests, public API surface, circuit artifacts)src/brand-neutrality CI — clean- PSP (host application) integration smoke — 18/18 with
file:install
Out of scope (deferred to v1.1+)
- Halo2 / BN254 / IPA normative proving system
- Community Powers-of-Tau ceremony (
aip-pots-v1is single-party) - Full
aip-attest-v1Poseidon-Merkle-in-circuit implementation - Remote peer resolution (wire-level)
LIGHTWEIGHT_HANDSHAKEinterop mode (§6.5)- Production routing layer (§11)
- Public npm publish