AAMP version matrix
AAMP has no single version number: 4 of its 8 repositories have never been tagged, and the string "AAMP 2.3" appears in no file in the corpus — it names a July 2026 IAB Tech Lab announcement.
AAMP is IAB Tech Lab's umbrella for agent-to-agent ad buying, expanded by the hub README as
Agentic Advertising Management Protocols. It ships as 8 separate GitHub repositories
rather than as one specification, and the README sets the versioning policy: Each repository uses independent semantic versioning.
The next bullet promises releases via GitHub tags and release notes. The README has not been edited
since April 2026; the first tag in any AAMP repository was cut on 8 July 2026.
IAB Tech Lab announced "AAMP 2.3" on 30 July 2026, and no file in any repository contains that
string, so the number resolves to the announcement and to nothing in the code. The dates line up
with the agents' minor line: buyer-agent's latest tag is v2.3.0, and
seller-agent was tagged v2.3.3 the day before the release went out. No README,
changelog or manifest in the corpus states that mapping or mentions the announcement, and seller-agent
was tagged v2.4.1 six days after it.
What to pin today
An integration is possible by pinning and vendoring: seller-agent at a tag, the primitives at
v0.5.0, the schemas copied into the implementer's own tree, and the umbrella number
left out of the build. The seller-agent tag matters. Its README records that
v2.3.3 and earlier ship a uv.lock stale against
pyproject.toml, so uv sync --locked fails on those checkouts; the fix landed
in v2.4.0.
What is not available is a version range or a single AAMP version to name in a contract. A commit SHA pins one of the 4 untagged repositories exactly but carries no signal: nothing announces that the repository moved. Vendoring costs the same — a copied schema set has no upstream version, so a change upstream is found by diffing.
The wire contract's package version
iab-agentic-primitives carries five tags and a CHANGELOG with an entry for one of them.
The tag v0.5.0 points to commit
5fdbe57, and that commit's pyproject.toml reads
version = "0.1.0". The bump to 0.5.0 landed one commit later, after the tag. Both
reference agents pin the tag exactly, iab-agentic-primitives[client] @
git+https://github.com/IABTechLab/iab-agentic-primitives.git@v0.5.0, and buyer-agent/uv.lock records the v0.5.0 revision and the version
0.1.0 on two adjacent lines.
A tag pin ignores the number the package reports, so the mismatch only bites a dependency range.
The primitives README says both agent repositories pin a compatible version range; neither does,
and an implementer who follows that README and writes >=0.5,<0.6 gets no candidate,
because the published package reports 0.1.0. The same README opens WORK IN PROGRESS — NOT YET RELEASED
and says the library should not be depended on for production use, a notice that reaches anyone
who inherits the library through an agent's dependency list.
Untagged repositories
None of the 4 untagged repositories sits on the path of a transaction; the four tagged ones
do. agentic-direct declares "version": "1.0.0" in each of its three
package.json files, and registry-agent-example declares the same in its
one, so four manifests carry a version no tag corresponds to. None of the 4 has a
.github/ directory, so none has a workflow that could cut a tag.
| Repository | Version | Kind | Substance | In the hub README |
|---|---|---|---|---|
| agentic-rtb-framework | v1.0 | specification | substantial | Yes |
| iab-agentic-primitives | v0.5.0 | specification | substantial | No |
| seller-agent | v2.4.1 | reference implementation | substantial | Yes |
| agentic-audiences | untagged | specification | partial | Yes |
| agentic-direct | untagged | reference implementation | partial | Yes |
| buyer-agent | v2.3.0 | reference implementation | partial | Yes |
| AAMP | untagged | hub | thin | Yes |
| registry-agent-example | untagged | example | thin | Yes |
agentic-audiences carries no tag. It calls itself "Draft v0.1" from inside a directory
named v1.0, and its catalog-info.yaml still files the project as
LiveRamp/user-context-protocol. Nothing in the repository declares how it connects
to the other 7: the file that would, and three others, are among the empty files in the corpus.
Manifest versions
The policy the README quotes asks for semantic versions. Two tags are two-part rather than
three: ARTF's only tag is v1.0, and the oldest of seller-agent's twelve is
v2.0. For the three-part tags the mismatch is inside the repository.
seller-agent is tagged v2.4.1, its pyproject.toml reads 2.4.1,
and the top released entry in its CHANGELOG is [2.4.1] — 2026-08-05. Then
docs/api/openapi.json in that same repository declares "version": "1.0.0". buyer-agent has four tags, the latest being v2.3.0, which sits 24
commits behind the branch it points into, and its pyproject.toml still reads
version = "0.1.0", its starting value. The repository has no CHANGELOG.
Three of the 8 repositories have CI: the primitives and the two agents. Their nine workflow files all run on pushes and pull requests, and none is triggered by a tag or publishes a release.
The ARTF protobuf
agentic-rtb-framework (ARTF) ships its protobuf twice under v1.0. The
root copy opens edition = "2023"; the copy under rust/proto/ opens
syntax = "proto3", and they disagree about where the telemetry field comes from:
MetricsPayload.metric is typed BidRequest.Metric in the root file and
BidRequest.Imp.Metric in the rust one. Only the second exists. Both copies of the vendored
openrtb.proto define Metric inside Imp, and the root
file's import path is not in its own tree either.
Citing a version
seller-agent v2.4.1 resolves to a commit and to the schemas that commit ships, and it
is the one version string in AAMP a repository will back up. ARTF v1.0 resolves to a
specification document that records a November 2025 release and to a git tag cut in July 2026. There
is no smaller unit to cite: almost every JSON file under the primitives spec/ directory
carries no $id, so an individual schema has no identifier of its own.
Two files under that directory do carry a $id. Both resolve to github.com/atc964/, a personal fork, rather than to an IABTechLab URL.
Frequently asked
- What version of AAMP should I cite?
- A repository name and a tag together, such as "AAMP seller-agent v2.4.1". The 4 untagged repositories have nothing to cite but a commit SHA.
- Why does AAMP not have one version?
- No artifact defines one. The hub README leaves cross-repository alignment to "governance coordination", and the corpus holds no shared manifest and no file that names a set of repository versions as a release. The README does not list all 8 repositories: the wire contract both agents import is missing from it.
- Is AAMP 2.3 a real version?
- No. The only AAMP-plus-number identifier anywhere in the corpus is the mock AGY-AAMP-001, in a seller-agent test fixture.