This release is a pre-release and may not be stable for production use.
ATAR — Agent Trust & Attribution Root
The free, decentralized trust layer for AI agents — the
SSL/CAof the agent era. No servers. No blockchain. No cost.
ATAR gives every AI agent a self-sovereign cryptographic identity (did:agent:)
and lets agents vouch for one another with signed, tamper-evident attestations.
Think of it as a passport + word-of-mouth trust network for software agents:
anyone can verify who an agent is and who vouches for it — offline, for $0.
This is the still-unclaimed top layer of the AI era: transport (MCP/A2A) is solved, but trust & attribution is not. ATAR is the open protocol for it.
Contents
- Why it matters
- Install
- Quickstart
- How it works
- CLI reference
- Visual identity
- Project status
- Honest constraints
- Contributing
Why it matters (the "top layer" thesis)
- Transport is solved. MCP (tools) and A2A (agent-to-agent) are now consolidated under the Linux Foundation. You cannot reinvent HTTP.
- Trust is not. No free, decentralized, serverless "who is this agent and who vouches for it" layer exists in 2026. Central registries reintroduce a server; blockchains cost gas and are empirically hollow (ERC-8004: 59–90% Sybil reviewers).
- ATAR is the gap. Identity + vouching with zero infrastructure. The protocol itself captures no value (a public good, like HTTP) — value accrues to the applications built on top (directories, "Know Your Agent" analytics), exactly as Google built on top of a free HTTP.
Install
ATAR is not yet on PyPI. For now, install from source:
git clone https://github.com/Dominik-8/ATAR.git
cd atar
pip install -e ".[dev]"
PyPI release (
pip install atar) coming soon.
Quickstart
# 1. create two agent identities
atar keygen --name alice
atar keygen --name bob
# 2. alice vouches for bob's competence in "coding"
atar vouch --from alice --for "did:agent:..." --score 0.95 --scope coding \
--out bob-vouch.json
# 3. anyone verifies the vouch offline (no server, no internet)
atar verify bob-vouch.json # -> VALID
# 4. build an agent card (DID + name + vouches) to present on contact
atar card --name bob --out card.json
# 5. render the Know-Your-Agent dashboard from a local trust graph
atar dashboard --seed "did:agent:..." --scope coding --out dash.html
Real vs demo network. agents.toml holds only real running agents
(seed_agent seed + reporting_agent cron). The larger graph in demo.toml is an
illustration — those agents are not real processes and are never in the
default bootstrap. ATAR's value is a trust layer over real agents; demo nodes
exist only to show the shape of a bigger graph.
atar bootstrap --config agents.toml # real agents only
atar bootstrap --config demo.toml # demo illustration, not real
How it works
- Identity — Ed25519 keypair;
did:agent:derived from the public key. Self-resolving, offline-verifiable, $0. - Vouch — a signed attestation: issuer vouches subject for scope@score. Tamper-evident (any change invalidates the signature).
- ATC Carrier — vouches encoded as header-safe tokens + an "agent card" JSON, presented inline over HTTP/A2A/MCP. ATAR rides on top of existing transports; it replaces nothing.
- Transparency graph — vouches are content-addressed (sha256 of their bytes), so they can be gossiped with no operator. Each agent computes transitive trust locally from a seed of trusted roots.
- Revocation + Freshness + Rotation — trust can be actively killed
(revoke), passively expired (TTL), or recovered via key rotation. See
SPEC.md§6–§10.
See SPEC.md for the full wire format and algorithms.
CLI reference
| Command | Purpose |
|---|---|
atar keygen --name N |
create an agent identity, print its did:agent: |
atar vouch --from A --for DID --score S --scope C |
create a signed vouch |
atar verify PATH [--max-age N] |
VALID / REVOKED / EXPIRED / INVALID |
atar revoke PATH |
add a vouch to the local revocation list |
atar add PATH |
add a vouch to the store (rejects revoked/expired) |
atar list / atar scopes |
inspect store / list scopes + counts |
atar card --name N |
build an agent card (DID + vouches) |
atar verify-card PATH |
verify every vouch in an agent card |
atar graph --seed DID --scope C |
print transitive-trust ranking |
atar dashboard --seed DID --scope C |
render Know-Your-Agent HTML dashboard |
atar sync --with <peer> / atar auto-sync |
gossip vouches + revocations between peers |
atar rotate --name N |
generate a new key + signed rotation statement |
atar reissue --name N [--commit] |
re-sign vouches under the new key (commit = +add old-revoked) |
atar bootstrap --config agents.toml |
reproducible agent network |
atar serve [--port P] |
live multi-scope dashboard (http://localhost:P) |
atar audit [--max-age N] |
health-check: counts valid/revoked/expired/invalid per scope |
atar export [--include-keys] FILE |
bundle trust graph (or full identity) to .atpkg |
atar import FILE |
restore a network bundle into the local store |
atar watch [--interval S] [--once] |
monitor health; alert on unhealthy transition |
atar issue --from N --for DID --scope S --score X [--claim C] |
issue a signed capability claim (standalone file) |
atar verify-claim FILE |
verify a signed capability claim (independent of store) |
Visual identity (ATAR-style)
ATAR has its own dark, corporate look - consistent and standalone.
| Token | Value | Use |
|---|---|---|
--bg |
#0a0a0b |
near-black background |
--accent |
#39ff14 |
gift-green / neon (trust, valid, verified) |
--accent-dim |
#1f7a12 |
dimmed green borders/badges |
--accent-blue |
#2f81f7 |
GitHub-blue, for did:agent: identifiers |
--text |
#e8e8ea |
primary text |
--muted |
#8a8a90 |
secondary text |
| Font | Segoe UI / -apple-system | system UI stack |
The canonical tokens live in atar/theme.css — reuse them for
any ATAR UI, web page, or digest so the design stays consistent.
Project status
| Phase | Area | Status |
|---|---|---|
| 1 | Ed25519 identity + sign/verify | ✅ |
| 2 | ATC carrier (tokens + agent cards) | ✅ |
| 3 | Transparency log + transitive trust graph | ✅ |
| 4 / 4b / 4c / 9 | ATAR is used by agents, graph CLI, demo network, ATC in brief |
✅ |
| 6 / 8 / 11 | Know-Your-Agent dashboard (module, CLI, live server) | ✅ |
| 7 | Persistent vouch store (file-backed, dedup) | ✅ |
| 4d / 12 | Real-agent bootstrap (CLI + agents.toml) |
✅ |
| 10 / 15 | Gossip (sync) + auto-sync hook in any agent |
✅ |
| 16 / 17 | Revocation (local + gossip) | ✅ |
| 18 | Revocation in dashboard | ✅ |
| 13 / 25 | Multi-scope dashboard (module + live server) | ✅ |
| 14 | Real agents seeded (seed_agent + reporting_agent) | ✅ |
| 20 | atar scopes CLI |
✅ |
| 22 | Revocation in verify |
✅ |
| 23 | Revocation in add + sync (defense-in-depth) |
✅ |
| 24 | Freshness / TTL (--max-age) |
✅ |
| 27 / 27b | Key rotation + reissue --commit |
✅ |
| 29 | atar audit CLI (trust health-check) |
✅ |
| 30 | atar export / atar import (portable .atpkg bundle) |
✅ |
| 31 | atar watch (cron-ready monitoring + ALERT) |
✅ |
| 26 | Real-agent claim issuance (issue / verify-claim) |
✅ |
All phases implemented and tested (122 tests, CI green). See
SPEC.md for the authoritative protocol specification.
Next: wider real-agent adoption; formal RFC publication (this spec is the draft for it).
Honest constraints
- Sybil resistance is partial. Free, serverless identity means anyone can mint unlimited agents. ATAR provides the mechanism (signed vouches); meaningful reputation emerges from the web-of-trust, not from the protocol. We do not promise Sybil-proofing — that is mathematically incompatible with "free + decentralized + zero-server".
- Bootstrap needs a seed. Adoption is the real risk. We seed ATAR by forcing our own agents (your primary agent) to use it, riding MCP/A2A as carriers rather than competing with them.
Contributing
See CONTRIBUTING.md. Security issues: SECURITY.md.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atar_trust-1.0.0a1.tar.gz.
File metadata
- Download URL: atar_trust-1.0.0a1.tar.gz
- Upload date:
- Size: 72.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdddd8844b5897cfec9a7cd170e1ef65cd4326cbbc1dd328b4973605de0aeb28
|
|
| MD5 |
7aaa6042092a3a89f531e5995c823010
|
|
| BLAKE2b-256 |
31d5ffb5e9f68a721bf38fd3c7fed2b8d3f5ec919015b55b2574d0b24fc15243
|
Provenance
The following attestation bundles were made for atar_trust-1.0.0a1.tar.gz:
Publisher:
release.yml on Dominik-8/ATAR
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atar_trust-1.0.0a1.tar.gz -
Subject digest:
cdddd8844b5897cfec9a7cd170e1ef65cd4326cbbc1dd328b4973605de0aeb28 - Sigstore transparency entry: 2742015553
- Sigstore integration time:
-
Permalink:
Dominik-8/ATAR@4d1984ddf48a3765f239717224cc638ee45e8c7e -
Branch / Tag:
refs/tags/v1.0.0a1 - Owner: https://github.com/Dominik-8
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d1984ddf48a3765f239717224cc638ee45e8c7e -
Trigger Event:
push
-
Statement type:
File details
Details for the file atar_trust-1.0.0a1-py3-none-any.whl.
File metadata
- Download URL: atar_trust-1.0.0a1-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d7a8bd1c2650a224fcf9b7872a93782065ce9366964e3d00c020ce412ca6bf3
|
|
| MD5 |
c16c98fe3fd3ec1a57327f443582131e
|
|
| BLAKE2b-256 |
9ab77b29200ae2813983416f526c7f9d1a1597bfd9cf637ec89d66e5e22e678d
|
Provenance
The following attestation bundles were made for atar_trust-1.0.0a1-py3-none-any.whl:
Publisher:
release.yml on Dominik-8/ATAR
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atar_trust-1.0.0a1-py3-none-any.whl -
Subject digest:
1d7a8bd1c2650a224fcf9b7872a93782065ce9366964e3d00c020ce412ca6bf3 - Sigstore transparency entry: 2742015595
- Sigstore integration time:
-
Permalink:
Dominik-8/ATAR@4d1984ddf48a3765f239717224cc638ee45e8c7e -
Branch / Tag:
refs/tags/v1.0.0a1 - Owner: https://github.com/Dominik-8
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d1984ddf48a3765f239717224cc638ee45e8c7e -
Trigger Event:
push
-
Statement type: