agentrust-trace 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentrust_trace-0.3.0/.github/workflows/docs.yml +72 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/ADOPTERS.md +1 -1
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/CHANGELOG.md +14 -1
- agentrust_trace-0.3.0/CNAME +1 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/MAINTAINERS.md +1 -1
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/NOTICE +2 -2
- agentrust_trace-0.3.0/PKG-INFO +106 -0
- agentrust_trace-0.3.0/README.md +72 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/ROADMAP.md +2 -2
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/docs/assets/icon.svg +5 -3
- agentrust_trace-0.3.0/docs/glossary.md +68 -0
- agentrust_trace-0.3.0/docs/index.md +73 -0
- agentrust_trace-0.3.0/docs/integration/agt.md +139 -0
- agentrust_trace-0.3.0/docs/integration/cmcp.md +148 -0
- agentrust_trace-0.3.0/docs/platforms/amd-sev-snp.md +65 -0
- agentrust_trace-0.3.0/docs/platforms/index.md +34 -0
- agentrust_trace-0.3.0/docs/platforms/intel-tdx.md +68 -0
- agentrust_trace-0.3.0/docs/platforms/nvidia-h100.md +76 -0
- agentrust_trace-0.3.0/docs/quickstart.md +198 -0
- agentrust_trace-0.3.0/docs/schema.md +165 -0
- agentrust_trace-0.3.0/docs/stylesheets/extra.css +247 -0
- agentrust_trace-0.3.0/docs/trust-levels.md +114 -0
- agentrust_trace-0.3.0/docs/tutorials/agt-adapter.md +183 -0
- agentrust_trace-0.3.0/docs/tutorials/anchoring-to-the-registry.md +172 -0
- agentrust_trace-0.3.0/docs/tutorials/hardware-attestation-platforms.md +212 -0
- agentrust_trace-0.3.0/docs/tutorials/integrating-with-cmcp.md +171 -0
- agentrust_trace-0.3.0/docs/tutorials/signing-your-first-trust-record.md +191 -0
- agentrust_trace-0.3.0/docs/tutorials/verifying-a-trust-record.md +259 -0
- agentrust_trace-0.3.0/docs/tutorials/verifying-the-audit-chain.md +251 -0
- agentrust_trace-0.3.0/docs/verification.md +129 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/examples/amd-sev-snp.json +2 -2
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/examples/intel-tdx.json +2 -2
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/examples/nvidia-h100.json +2 -2
- agentrust_trace-0.3.0/examples/tpm2.json +52 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/mkdocs.yml +62 -8
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/pyproject.toml +2 -1
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/spec/trace-v0.1.md +37 -2
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/src/agentrust_trace/__init__.py +5 -0
- agentrust_trace-0.3.0/src/agentrust_trace/adapters/__init__.py +5 -0
- agentrust_trace-0.3.0/src/agentrust_trace/adapters/agt.py +197 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/src/agentrust_trace/models.py +15 -2
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/src/agentrust_trace/schema/trace-v0.1.json +1 -1
- agentrust_trace-0.3.0/src/agentrust_trace/sign.py +223 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/src/agentrust_trace/validate.py +1 -1
- agentrust_trace-0.3.0/tests/test_agt_adapter.py +224 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/tests/test_models.py +13 -0
- agentrust_trace-0.3.0/tests/test_sign.py +297 -0
- agentrust_trace-0.2.0/.github/workflows/docs.yml +0 -43
- agentrust_trace-0.2.0/PKG-INFO +0 -167
- agentrust_trace-0.2.0/README.md +0 -134
- agentrust_trace-0.2.0/docs/stylesheets/extra.css +0 -24
- agentrust_trace-0.2.0/src/agentrust_trace/sign.py +0 -80
- agentrust_trace-0.2.0/tests/test_sign.py +0 -121
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/ISSUE_TEMPLATE/spec_change.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/workflows/ci.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/workflows/contributor-check.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/workflows/publish.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/workflows/require-maintainer-approval.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/.github/workflows/sbom.yml +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/ANTITRUST.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/CHARTER.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/CODE_OF_CONDUCT.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/CONTRIBUTING.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/GOVERNANCE.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/LICENSE +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/LIMITATIONS.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/SECURITY.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/docs/crosswalks/owasp-agentic-top-10.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/examples/README.md +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/requirements-docs.txt +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/schema/trace-claim.json +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/src/agentrust_trace/py.typed +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/tests/__init__.py +0 -0
- {agentrust_trace-0.2.0 → agentrust_trace-0.3.0}/tests/test_validate.py +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "spec/**"
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
- "requirements-docs.txt"
|
|
11
|
+
- "README.md"
|
|
12
|
+
- "CHANGELOG.md"
|
|
13
|
+
- "CONTRIBUTING.md"
|
|
14
|
+
- "GOVERNANCE.md"
|
|
15
|
+
- "ROADMAP.md"
|
|
16
|
+
- "LIMITATIONS.md"
|
|
17
|
+
- "CNAME"
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: write
|
|
22
|
+
|
|
23
|
+
concurrency:
|
|
24
|
+
group: docs-deploy
|
|
25
|
+
cancel-in-progress: false
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
deploy:
|
|
29
|
+
name: Build and deploy docs
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
with:
|
|
35
|
+
fetch-depth: 0
|
|
36
|
+
|
|
37
|
+
- uses: actions/setup-python@v6
|
|
38
|
+
with:
|
|
39
|
+
python-version: "3.11"
|
|
40
|
+
cache: pip
|
|
41
|
+
|
|
42
|
+
- name: Install docs dependencies
|
|
43
|
+
run: |
|
|
44
|
+
pip install -r requirements-docs.txt
|
|
45
|
+
pip install -e ".[dev]"
|
|
46
|
+
|
|
47
|
+
- name: Configure git for gh-deploy
|
|
48
|
+
run: |
|
|
49
|
+
git config user.name "github-actions[bot]"
|
|
50
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
51
|
+
|
|
52
|
+
- name: Assemble docs build directory
|
|
53
|
+
run: |
|
|
54
|
+
BUILD=.docs_build
|
|
55
|
+
mkdir -p $BUILD
|
|
56
|
+
|
|
57
|
+
if [ -d docs ]; then cp -r docs $BUILD/docs; fi
|
|
58
|
+
if [ -d spec ]; then cp -r spec $BUILD/spec; fi
|
|
59
|
+
if [ -d examples ]; then cp -r examples $BUILD/examples; fi
|
|
60
|
+
|
|
61
|
+
for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME; do
|
|
62
|
+
if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi
|
|
63
|
+
done
|
|
64
|
+
|
|
65
|
+
echo "Build dir contains $(find $BUILD -type f | wc -l) files"
|
|
66
|
+
|
|
67
|
+
- name: Generate build config
|
|
68
|
+
run: |
|
|
69
|
+
sed 's|^docs_dir: \.$|docs_dir: .docs_build|' mkdocs.yml > .mkdocs_build.yml
|
|
70
|
+
|
|
71
|
+
- name: Build and deploy to GitHub Pages
|
|
72
|
+
run: mkdocs gh-deploy --force --clean --config-file .mkdocs_build.yml
|
|
@@ -8,4 +8,4 @@ To add your organization, open a pull request editing this file.
|
|
|
8
8
|
|
|
9
9
|
| Organization | Usage |
|
|
10
10
|
|---|---|
|
|
11
|
-
|
|
|
11
|
+
| OPAQUE Systems | Founding contributor — developed the initial specification, reference implementation, and TRACE registry infrastructure |
|
|
@@ -9,6 +9,19 @@ Format: [Semantic Versioning](https://semver.org/). Spec versions follow `MAJOR.
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [0.3.0] — 2026-06-30
|
|
13
|
+
|
|
14
|
+
### Security
|
|
15
|
+
|
|
16
|
+
- `verify_record` now requires an explicit trusted key. Self-verification from the embedded `cnf.jwk` is no longer the default; use `allow_embedded_key=True` to opt in.
|
|
17
|
+
- Verification enforces freshness (`iat` / `max_age_seconds`, default 24h) and an optional `expected_nonce`. JWK `kty` / `crv` are validated.
|
|
18
|
+
|
|
19
|
+
### Breaking
|
|
20
|
+
|
|
21
|
+
- **BREAKING:** Canonicalization is now RFC 8785 (JCS). Trust records are NOT cross-verifiable with 0.2.0 (the prior `json.dumps` canonicalization was non-conformant).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
12
25
|
## [0.1.0] — 2026-06-23
|
|
13
26
|
|
|
14
27
|
Initial public draft. Announced at Confidential Computing Summit, San Francisco.
|
|
@@ -35,7 +48,7 @@ Initial public draft. Announced at Confidential Computing Summit, San Francisco.
|
|
|
35
48
|
|
|
36
49
|
### Open questions
|
|
37
50
|
|
|
38
|
-
Seven open questions requiring
|
|
51
|
+
Seven open questions requiring community input before v0.2 are documented in §7 of the spec.
|
|
39
52
|
|
|
40
53
|
---
|
|
41
54
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
trace.agentrust-io.com
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Affiliation | GitHub | Contact |
|
|
6
6
|
|---|---|---|---|
|
|
7
|
-
| Imran Siddique | OPAQUE Systems | @imraan |
|
|
7
|
+
| Imran Siddique | OPAQUE Systems | @imraan | maintainers@agentrust.io |
|
|
8
8
|
|
|
9
9
|
The Project Lead has final decision authority on specification changes, AAIF/CoSAI submission scope, conformance requirements, and Maintainer appointments.
|
|
10
10
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
TRACE
|
|
2
|
-
Copyright 2026
|
|
2
|
+
Copyright 2026 AgenTrust Authors
|
|
3
3
|
|
|
4
|
-
This product includes software developed by the
|
|
4
|
+
This product includes software developed by the AgenTrust project
|
|
5
5
|
(https://github.com/agentrust-io/trace-spec).
|
|
6
6
|
|
|
7
7
|
---
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentrust-trace
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: TRACE v0.1 — hardware-attested governance records for AI agents
|
|
5
|
+
Project-URL: Homepage, https://github.com/agentrust-io/trace-spec
|
|
6
|
+
Project-URL: Repository, https://github.com/agentrust-io/trace-spec
|
|
7
|
+
Project-URL: Issues, https://github.com/agentrust-io/trace-spec/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/agentrust-io/trace-spec/blob/main/CHANGELOG.md
|
|
9
|
+
License: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
License-File: NOTICE
|
|
12
|
+
Keywords: ai-governance,attestation,confidential-computing,eat,rats,tee,trace
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
+
Classifier: Topic :: Security
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Requires-Dist: cryptography>=42.0
|
|
24
|
+
Requires-Dist: jsonschema>=4.20
|
|
25
|
+
Requires-Dist: pydantic>=2.0
|
|
26
|
+
Requires-Dist: rfc8785>=0.1.2
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
32
|
+
Requires-Dist: types-jsonschema; extra == 'dev'
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
<p align="center">
|
|
36
|
+
<img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE"/>
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
# TRACE: Trust Runtime Attestation and Compliance Evidence
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<a href="https://trace.agentrust-io.com">
|
|
43
|
+
<img src="https://img.shields.io/badge/%F0%9F%93%96_Full_Documentation-trace.agentrust--io.com-8251EE?style=for-the-badge&logoColor=white" alt="Full Documentation" height="40">
|
|
44
|
+
</a>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<a href="spec/trace-v0.1.md">Specification</a> |
|
|
49
|
+
<a href="schema/trace-claim.json">Schema</a> |
|
|
50
|
+
<a href="examples/">Examples</a> |
|
|
51
|
+
<a href="https://github.com/agentrust-io/trace-registry">Registry</a> |
|
|
52
|
+
<a href="https://github.com/agentrust-io/trace-tests">Test Suite</a> |
|
|
53
|
+
<a href="https://github.com/agentrust-io/cmcp">Reference Impl</a>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
[](LICENSE)
|
|
57
|
+
[](spec/trace-v0.1.md)
|
|
58
|
+
[](https://pypi.org/project/agentrust-trace/)
|
|
59
|
+
[](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml)
|
|
60
|
+
[](https://discord.gg/grgzFEHgkj)
|
|
61
|
+
|
|
62
|
+
> **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026.
|
|
63
|
+
|
|
64
|
+
An open specification for hardware-attested AI agent governance records. TRACE defines the format, anchoring protocol, and verification rules for cryptographically provable evidence that an AI agent ran under a specific policy, in a verified hardware environment, on classified data, invoking identified tools — bound into a single signed artifact rooted in silicon attestation.
|
|
65
|
+
|
|
66
|
+
A TRACE Trust Record answers: _what ran, where, under which policy, touching which data, calling which tools_ — in a form any third party can verify without trusting the operator.
|
|
67
|
+
|
|
68
|
+
## Quick start
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
pip install agentrust-trace
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
from agentrust_trace import TrustRecord, sign_record
|
|
76
|
+
|
|
77
|
+
record = TrustRecord(
|
|
78
|
+
subject="spiffe://trust.example.org/agent/payments-processor",
|
|
79
|
+
model_id="claude-sonnet-4-6",
|
|
80
|
+
platform="amd-sev-snp",
|
|
81
|
+
policy_hash="sha256:b2c3d4...",
|
|
82
|
+
)
|
|
83
|
+
signed = sign_record(record, key=signing_key)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Resources
|
|
87
|
+
|
|
88
|
+
| | |
|
|
89
|
+
|---|---|
|
|
90
|
+
| 📖 Full documentation | [trace.agentrust-io.com](https://trace.agentrust-io.com) |
|
|
91
|
+
| 📄 Specification | [spec/trace-v0.1.md](spec/trace-v0.1.md) |
|
|
92
|
+
| 🔍 Schema | [schema/trace-claim.json](schema/trace-claim.json) |
|
|
93
|
+
| 📦 PyPI | [agentrust-trace](https://pypi.org/project/agentrust-trace/) |
|
|
94
|
+
| 🧪 Test suite | [trace-tests](https://github.com/agentrust-io/trace-tests) |
|
|
95
|
+
| 🗂 Registry | [trace-registry](https://github.com/agentrust-io/trace-registry) |
|
|
96
|
+
| 🔗 Reference implementation | [cmcp](https://github.com/agentrust-io/cmcp) |
|
|
97
|
+
| 💬 Discussions | [GitHub Discussions](https://github.com/orgs/agentrust-io/discussions) |
|
|
98
|
+
| 📋 Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
99
|
+
|
|
100
|
+
## Standards alignment
|
|
101
|
+
|
|
102
|
+
Targeting the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) at the Linux Foundation. Active standardization track in [CoSAI WS4](https://github.com/oasis-open-projects/coalition-for-secure-ai). Builds on [RFC 9711 (EAT)](https://www.rfc-editor.org/rfc/rfc9711), [RFC 9334 (RATS)](https://www.rfc-editor.org/rfc/rfc9334), and SCITT draft-22.
|
|
103
|
+
|
|
104
|
+
## Contributing
|
|
105
|
+
|
|
106
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) and [GOVERNANCE.md](GOVERNANCE.md). All contributors must agree to the [ANTITRUST.md](ANTITRUST.md) policy.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# TRACE: Trust Runtime Attestation and Compliance Evidence
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://trace.agentrust-io.com">
|
|
9
|
+
<img src="https://img.shields.io/badge/%F0%9F%93%96_Full_Documentation-trace.agentrust--io.com-8251EE?style=for-the-badge&logoColor=white" alt="Full Documentation" height="40">
|
|
10
|
+
</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="spec/trace-v0.1.md">Specification</a> |
|
|
15
|
+
<a href="schema/trace-claim.json">Schema</a> |
|
|
16
|
+
<a href="examples/">Examples</a> |
|
|
17
|
+
<a href="https://github.com/agentrust-io/trace-registry">Registry</a> |
|
|
18
|
+
<a href="https://github.com/agentrust-io/trace-tests">Test Suite</a> |
|
|
19
|
+
<a href="https://github.com/agentrust-io/cmcp">Reference Impl</a>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
[](LICENSE)
|
|
23
|
+
[](spec/trace-v0.1.md)
|
|
24
|
+
[](https://pypi.org/project/agentrust-trace/)
|
|
25
|
+
[](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml)
|
|
26
|
+
[](https://discord.gg/grgzFEHgkj)
|
|
27
|
+
|
|
28
|
+
> **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026.
|
|
29
|
+
|
|
30
|
+
An open specification for hardware-attested AI agent governance records. TRACE defines the format, anchoring protocol, and verification rules for cryptographically provable evidence that an AI agent ran under a specific policy, in a verified hardware environment, on classified data, invoking identified tools — bound into a single signed artifact rooted in silicon attestation.
|
|
31
|
+
|
|
32
|
+
A TRACE Trust Record answers: _what ran, where, under which policy, touching which data, calling which tools_ — in a form any third party can verify without trusting the operator.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install agentrust-trace
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from agentrust_trace import TrustRecord, sign_record
|
|
42
|
+
|
|
43
|
+
record = TrustRecord(
|
|
44
|
+
subject="spiffe://trust.example.org/agent/payments-processor",
|
|
45
|
+
model_id="claude-sonnet-4-6",
|
|
46
|
+
platform="amd-sev-snp",
|
|
47
|
+
policy_hash="sha256:b2c3d4...",
|
|
48
|
+
)
|
|
49
|
+
signed = sign_record(record, key=signing_key)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Resources
|
|
53
|
+
|
|
54
|
+
| | |
|
|
55
|
+
|---|---|
|
|
56
|
+
| 📖 Full documentation | [trace.agentrust-io.com](https://trace.agentrust-io.com) |
|
|
57
|
+
| 📄 Specification | [spec/trace-v0.1.md](spec/trace-v0.1.md) |
|
|
58
|
+
| 🔍 Schema | [schema/trace-claim.json](schema/trace-claim.json) |
|
|
59
|
+
| 📦 PyPI | [agentrust-trace](https://pypi.org/project/agentrust-trace/) |
|
|
60
|
+
| 🧪 Test suite | [trace-tests](https://github.com/agentrust-io/trace-tests) |
|
|
61
|
+
| 🗂 Registry | [trace-registry](https://github.com/agentrust-io/trace-registry) |
|
|
62
|
+
| 🔗 Reference implementation | [cmcp](https://github.com/agentrust-io/cmcp) |
|
|
63
|
+
| 💬 Discussions | [GitHub Discussions](https://github.com/orgs/agentrust-io/discussions) |
|
|
64
|
+
| 📋 Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
65
|
+
|
|
66
|
+
## Standards alignment
|
|
67
|
+
|
|
68
|
+
Targeting the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) at the Linux Foundation. Active standardization track in [CoSAI WS4](https://github.com/oasis-open-projects/coalition-for-secure-ai). Builds on [RFC 9711 (EAT)](https://www.rfc-editor.org/rfc/rfc9711), [RFC 9334 (RATS)](https://www.rfc-editor.org/rfc/rfc9334), and SCITT draft-22.
|
|
69
|
+
|
|
70
|
+
## Contributing
|
|
71
|
+
|
|
72
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) and [GOVERNANCE.md](GOVERNANCE.md). All contributors must agree to the [ANTITRUST.md](ANTITRUST.md) policy.
|
|
@@ -9,7 +9,7 @@ Announced at Confidential Computing Summit, San Francisco, June 23 2026.
|
|
|
9
9
|
- Wire formats: EAT/JWT and CBOR-COSE
|
|
10
10
|
- Hardware roots: NVIDIA H100/Blackwell, Intel TDX, AMD SEV-SNP, Azure MAA, GCP Confidential Space, AWS Nitro
|
|
11
11
|
- JSON Schema and three hardware examples
|
|
12
|
-
- Reference implementation: cMCP Phase 1 (
|
|
12
|
+
- Reference implementation: cMCP Phase 1 (Cedar policy enforcement, TRACE Level 2 emission)
|
|
13
13
|
|
|
14
14
|
**Not in v0.1:** MCP profile (normative), A2A profile, vendor platform annexes, OWASP/ATLAS cross-walks, encrypted claims envelope.
|
|
15
15
|
|
|
@@ -45,4 +45,4 @@ Driven by founding-member feedback and open questions from §7 of the spec.
|
|
|
45
45
|
|
|
46
46
|
## Influencing the roadmap
|
|
47
47
|
|
|
48
|
-
Open a GitHub issue with the `spec` or `roadmap` label.
|
|
48
|
+
Open a GitHub issue with the `spec` or `roadmap` label. Contributor and community feedback from the CC Summit period (June–September 2026) has priority for v0.2 scope.
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
<defs>
|
|
3
3
|
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
4
|
<stop offset="0%" stop-color="#f5f3ff"/>
|
|
5
|
-
<stop offset="100%" stop-color="#
|
|
5
|
+
<stop offset="100%" stop-color="#ede9fe"/>
|
|
6
6
|
</linearGradient>
|
|
7
7
|
<linearGradient id="brand" x1="0" y1="0" x2="1" y2="1">
|
|
8
|
-
<stop offset="0%" stop-color="#
|
|
9
|
-
<stop offset="
|
|
8
|
+
<stop offset="0%" stop-color="#5BD2BE"/>
|
|
9
|
+
<stop offset="50%" stop-color="#8251EE"/>
|
|
10
|
+
<stop offset="100%" stop-color="#C661F7"/>
|
|
10
11
|
</linearGradient>
|
|
11
12
|
</defs>
|
|
12
13
|
<rect width="400" height="400" fill="url(#bg)"/>
|
|
14
|
+
<!-- Shield -->
|
|
13
15
|
<path d="M200,58 L326,112 L326,224 C326,298 268,340 200,360 C132,340 74,298 74,224 L74,112 Z"
|
|
14
16
|
fill="url(#brand)" opacity="0.10" stroke="url(#brand)" stroke-width="3.5" stroke-linejoin="round"/>
|
|
15
17
|
<!-- Eye outline -->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Glossary
|
|
2
|
+
|
|
3
|
+
Terms used in the TRACE specification and documentation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**Appraisal**
|
|
8
|
+
The process of evaluating a TEE evidence bundle against a reference integrity manifest (RIM) to produce an `appraisal.status` verdict. An `"affirming"` verdict means the measured environment matches the expected state. Defined in IETF RFC 9334 (RATS).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
**cnf / JWK**
|
|
13
|
+
The TRACE `cnf` field (from RFC 7800) carries a JSON Web Key (`jwk` sub-field) that contains the Ed25519 public key used to sign the record. It is included in the signed payload so the verifier does not need to retrieve the key out-of-band.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
**Conformance**
|
|
18
|
+
A trust record is conformant if it passes all test cases required at its declared trust level. Conformance is verified by the `trace-tests` test suite. Partial conformance (record passes some but not all required tests) is not valid.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
**EAT — Entity Attestation Token**
|
|
23
|
+
A JWT-based format for conveying evidence about a hardware or software entity. TRACE records use the EAT `eat_profile` claim to identify the specific TRACE profile version. Defined in IETF draft-ietf-rats-eat.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
**GatewayClaim**
|
|
28
|
+
A cMCP claim embedded in a TRACE trust record that binds the record to a specific cMCP session. Contains the session ID, gateway DID, and the Cedar policy bundle hash that governed the session.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
**JCS — JSON Canonicalization Scheme**
|
|
33
|
+
RFC 8785. A deterministic serialization of JSON objects: Unicode code-point-ordered keys, no whitespace, IEEE 754 double-precision number encoding. TRACE uses JCS to canonicalize the record before computing the Ed25519 signature.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
**RIM — Reference Integrity Manifest**
|
|
38
|
+
A signed document describing the expected firmware and software measurements for a TEE environment. During Level 1 appraisal, the verifier compares the TEE's runtime measurements against the RIM. The `runtime.rim_uri` field optionally points to a RIM.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
**RATS — Remote Attestation Procedures**
|
|
43
|
+
The IETF working group and architecture (RFC 9334) that defines the roles and flows for remote attestation: Attester (the hardware), Verifier (checks evidence against RIM), Relying Party (consumes the resulting attestation result). TRACE Level 1 and 2 follow the RATS architecture.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
**SCITT — Supply Chain Integrity, Transparency, and Trust**
|
|
48
|
+
An IETF draft standard for append-only transparency logs of software and attestation artifacts. TRACE Level 2 records include a SCITT receipt URI in the `transparency` field, anchoring the record to a public or shared log.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
**SPIFFE / SPIRE**
|
|
53
|
+
SPIFFE (Secure Production Identity Framework For Everyone) defines URI-based workload identities of the form `spiffe://<trust-domain>/<workload-path>`. TRACE requires the `subject` field to be a SPIFFE URI or a DID. SPIRE is the reference implementation.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Trust Level**
|
|
58
|
+
A numeric value (0, 1, or 2) that summarizes the strength of the guarantees carried by a trust record. See [Trust Levels](trust-levels.md) for the full definition of each level.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
**Trust Record**
|
|
63
|
+
A signed JSON document emitted by an AI agent at the end of a governed session. It asserts the agent's identity, model, policy, data class, tool invocations, and (at Level 1+) hardware attestation state. Defined in full in the [TRACE Specification](../spec/trace-v0.1.md).
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
**Transparency**
|
|
68
|
+
In the TRACE context, transparency means that a trust record has been submitted to an append-only log (SCITT) and can be independently audited by any party with access to the log. The `transparency` field holds the receipt URI. Required at Level 2.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# TRACE
|
|
2
|
+
|
|
3
|
+
**Trust Runtime Attestation and Compliance Evidence** — an open specification for hardware-attested AI agent governance records.
|
|
4
|
+
|
|
5
|
+
TRACE defines the format, anchoring protocol, and verification rules for cryptographically provable evidence that an AI agent ran under a specific policy, in a verified hardware environment, on classified data, invoking identified tools — bound into a single signed artifact rooted in silicon attestation.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<div class="grid cards" markdown>
|
|
10
|
+
|
|
11
|
+
- :material-rocket-launch: **Get Started**
|
|
12
|
+
|
|
13
|
+
Install the library, sign your first Trust Record, and verify it end-to-end in minutes.
|
|
14
|
+
|
|
15
|
+
[Quickstart →](quickstart.md)
|
|
16
|
+
|
|
17
|
+
- :material-file-document: **Specification**
|
|
18
|
+
|
|
19
|
+
The normative TRACE v0.1 specification — envelope format, claim types, signing rules, and verification algorithm.
|
|
20
|
+
|
|
21
|
+
[Read the spec →](../spec/trace-v0.1.md)
|
|
22
|
+
|
|
23
|
+
- :material-connection: **Integration**
|
|
24
|
+
|
|
25
|
+
Connect TRACE to AGT and cMCP for end-to-end agent governance pipelines.
|
|
26
|
+
|
|
27
|
+
[Integration guides →](integration/agt.md)
|
|
28
|
+
|
|
29
|
+
- :material-check-all: **Conformance Tests**
|
|
30
|
+
|
|
31
|
+
197 tests across 7 modules. Verify your implementation against the spec.
|
|
32
|
+
|
|
33
|
+
[Test suite →](https://tests.agentrust-io.com){ target=_blank }
|
|
34
|
+
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
## What a Trust Record proves
|
|
38
|
+
|
|
39
|
+
A TRACE Trust Record answers — in a form any third party can verify without trusting the operator:
|
|
40
|
+
|
|
41
|
+
| Question | TRACE claim |
|
|
42
|
+
|---|---|
|
|
43
|
+
| What model ran? | `model.model_id` + `model.weights_digest` |
|
|
44
|
+
| Where did it run? | `runtime.platform` + `runtime.measurement` |
|
|
45
|
+
| Under which policy? | `policy.bundle_hash` + `policy.enforcement_mode` |
|
|
46
|
+
| What data did it touch? | `data_class` |
|
|
47
|
+
| Which tools were called? | `tool_transcript.hash` + `tool_transcript.call_count` |
|
|
48
|
+
| Is the record independently anchored? | `anchoring.receipt_uri` (SCITT) |
|
|
49
|
+
|
|
50
|
+
## Standards alignment
|
|
51
|
+
|
|
52
|
+
TRACE is built on open IETF/IRTF standards and designed for CoSAI WS4 interoperability:
|
|
53
|
+
|
|
54
|
+
- **RFC 9711** — CBOR Web Token (CWT) / EAT claim envelope
|
|
55
|
+
- **RFC 9334** — RATS architecture (attester, verifier, relying-party roles)
|
|
56
|
+
- **SCITT draft-22** — transparency ledger anchoring
|
|
57
|
+
- **CoSAI WS4** — AI agent digital lifecycle controls (contributed spec language)
|
|
58
|
+
|
|
59
|
+
## Quick reference
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install agentrust-trace
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from agentrust_trace import TrustRecord
|
|
67
|
+
|
|
68
|
+
record = TrustRecord.sign(claims, signing_key)
|
|
69
|
+
receipt = record.anchor() # SCITT ledger
|
|
70
|
+
record.verify(verifying_key) # raises on invalid
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
[Full API reference →](schema.md) · [Changelog →](../CHANGELOG.md) · [GitHub →](https://github.com/agentrust-io/trace-spec){ target=_blank }
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Integration: AGT
|
|
2
|
+
|
|
3
|
+
[AGT (Agent Governance Toolkit)](https://github.com/microsoft/agent-governance-toolkit) is the most widely adopted agent governance framework (4,100+ stars, 100+ contributors). It provides Cedar policy enforcement, SPIFFE/SVID identity, and Merkle-chained audit logs for any agent framework.
|
|
4
|
+
|
|
5
|
+
AGT emits TRACE v0.1 Trust Records via `TRACEAuditSink` — see [ADR 0032](https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/adr/0032-agt-emits-trace-v01-trust-records.md) for the full design.
|
|
6
|
+
|
|
7
|
+
## What AGT emits
|
|
8
|
+
|
|
9
|
+
AGT emits **Level 0 (software-only)** TRACE records. The record is signed with an Ed25519 key held in the operator's key store — not a TEE-bound key. For Level 2 hardware-rooted records, deploy AGT inside [cMCP](cmcp.md) or another TEE runtime.
|
|
10
|
+
|
|
11
|
+
| TRACE field | Source in AGT |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `subject` | `agent_did` passed to `govern()` |
|
|
14
|
+
| `policy.bundle_hash` | SHA-256 of the Cedar policy bundle bytes at session start |
|
|
15
|
+
| `policy.enforcement_mode` | Always `enforce` (Phase 1) |
|
|
16
|
+
| `tool_transcript.hash` | SHA-256 of the canonical JSON of the Merkle `AuditEntry` list |
|
|
17
|
+
| `tool_transcript.call_count` | Count of `AuditEntry` items in the session |
|
|
18
|
+
| `runtime.platform` | `software-only` |
|
|
19
|
+
| `runtime.measurement` | SHA-256 of the Merkle chain tip |
|
|
20
|
+
| `appraisal.status` | `affirming` (Phase 1) |
|
|
21
|
+
| `model`, `data_class`, `build_provenance` | Injected from `TraceConfig` |
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install agentmesh agentrust-trace
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Quick start: TraceAGTAdapter
|
|
30
|
+
|
|
31
|
+
`TraceAGTAdapter` eliminates the ~50-line field-mapping boilerplate. Install:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install agentrust-trace
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
One-liner upgrade path for any AGT-governed session:
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from agentrust_trace.adapters import TraceAGTAdapter, AGTSessionResult
|
|
41
|
+
from agentrust_trace import sign_record, generate_key
|
|
42
|
+
|
|
43
|
+
adapter = TraceAGTAdapter(
|
|
44
|
+
model_provider="anthropic",
|
|
45
|
+
model_id="claude-sonnet-4-6",
|
|
46
|
+
model_version="20251001",
|
|
47
|
+
build_provenance_digest="sha256:e5f6a7b8...",
|
|
48
|
+
transparency="https://registry.agentrust.io/claim/...",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
session = AGTSessionResult(
|
|
52
|
+
agent_did="spiffe://trust.example.org/agent/my-agent",
|
|
53
|
+
policy_bundle_bytes=Path("policy.cedar").read_bytes(),
|
|
54
|
+
audit_entries=govern_fn.get_audit_entries(),
|
|
55
|
+
merkle_chain_tip=govern_fn.chain_tip,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
record = adapter.build_trust_record(session)
|
|
59
|
+
signed = sign_record(record, generate_key()) # or load_signing_key() for production
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
→ Full walkthrough: [TraceAGTAdapter tutorial](../tutorials/agt-adapter.md)
|
|
63
|
+
|
|
64
|
+
## Manual wiring (legacy)
|
|
65
|
+
|
|
66
|
+
The following is the raw field-mapping approach — kept for reference. Prefer `TraceAGTAdapter` for new integrations.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from agentmesh.governance import govern, GovernanceConfig
|
|
70
|
+
from agentmesh.governance.trace_sink import TraceConfig
|
|
71
|
+
|
|
72
|
+
trace_config = TraceConfig(
|
|
73
|
+
output_path="session.trace.json",
|
|
74
|
+
model_provider="anthropic",
|
|
75
|
+
model_id="claude-sonnet-4-6",
|
|
76
|
+
model_version="20251001",
|
|
77
|
+
data_class="confidential",
|
|
78
|
+
build_provenance_slsa_level=2,
|
|
79
|
+
build_provenance_digest="sha256:e5f6a7b8...",
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
config = GovernanceConfig(
|
|
83
|
+
policy_path="policy.cedar",
|
|
84
|
+
trace=trace_config,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
governed_fn = govern(
|
|
88
|
+
my_tool,
|
|
89
|
+
agent_did="spiffe://trust.example.org/agent/my-agent",
|
|
90
|
+
config=config,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
result = governed_fn(input)
|
|
94
|
+
path = governed_fn.close_session()
|
|
95
|
+
print(f"Trust Record written to: {path}")
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Key management
|
|
99
|
+
|
|
100
|
+
Key material is managed entirely by `agentrust_trace.load_signing_key()`. AGT does not hold keys directly.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Set the signing key path via environment variable
|
|
104
|
+
export AGENTRUST_TRACE_KEY_PATH=/run/secrets/trace-signing-key.pem
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
For production, store the key in a secrets manager (AWS Secrets Manager, HashiCorp Vault, Kubernetes Secret) and inject via environment variable or volume mount.
|
|
108
|
+
|
|
109
|
+
## Verifying the emitted record
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
agentrust-trace verify session.trace.json --pubkey trace-key.pem.pub
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Upgrading to Level 2 (hardware-rooted)
|
|
116
|
+
|
|
117
|
+
Deploy your AGT-governed agent inside cMCP. The cMCP runtime:
|
|
118
|
+
|
|
119
|
+
1. Measures the Cedar policy bundle into the TEE before any code runs
|
|
120
|
+
2. Generates a TEE-bound key for the TRACE record
|
|
121
|
+
3. Emits a Level 2 record that supersedes AGT's Level 0 record for the same session
|
|
122
|
+
|
|
123
|
+
The two records are linked by a shared `subject` and `tool_transcript.hash` — AGT's record and cMCP's record are mutually verifiable.
|
|
124
|
+
|
|
125
|
+
→ [Integration guide: cMCP](cmcp.md)
|
|
126
|
+
|
|
127
|
+
## Framework support
|
|
128
|
+
|
|
129
|
+
AGT instruments any Python callable via `govern()`. Confirmed compatible frameworks:
|
|
130
|
+
|
|
131
|
+
| Framework | Notes |
|
|
132
|
+
|---|---|
|
|
133
|
+
| LangGraph | Wrap tool nodes with `govern()` |
|
|
134
|
+
| CrewAI | Wrap task tools |
|
|
135
|
+
| AutoGen | Wrap function tools |
|
|
136
|
+
| Mastra | Via adapter contract |
|
|
137
|
+
| Raw Python | Direct function wrapping |
|
|
138
|
+
|
|
139
|
+
For the full integration list, see the [AGT integrations repo](https://github.com/agentrust-io/integrations).
|