agentrust-trace 0.1.0__tar.gz → 0.2.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.
Files changed (50) hide show
  1. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/workflows/ci.yml +4 -1
  2. agentrust_trace-0.2.0/.github/workflows/contributor-check.yml +42 -0
  3. agentrust_trace-0.2.0/.github/workflows/docs.yml +43 -0
  4. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/workflows/publish.yml +4 -1
  5. agentrust_trace-0.2.0/.github/workflows/require-maintainer-approval.yml +84 -0
  6. agentrust_trace-0.2.0/.github/workflows/sbom.yml +30 -0
  7. agentrust_trace-0.2.0/ADOPTERS.md +11 -0
  8. agentrust_trace-0.2.0/ANTITRUST.md +26 -0
  9. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/CHANGELOG.md +19 -0
  10. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/CHARTER.md +3 -1
  11. agentrust_trace-0.2.0/LIMITATIONS.md +55 -0
  12. agentrust_trace-0.2.0/NOTICE +21 -0
  13. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/PKG-INFO +57 -11
  14. agentrust_trace-0.2.0/README.md +134 -0
  15. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/SECURITY.md +1 -1
  16. agentrust_trace-0.2.0/docs/crosswalks/owasp-agentic-top-10.md +65 -0
  17. agentrust_trace-0.2.0/docs/stylesheets/extra.css +24 -0
  18. agentrust_trace-0.2.0/examples/README.md +11 -0
  19. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/examples/amd-sev-snp.json +7 -8
  20. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/examples/intel-tdx.json +8 -9
  21. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/examples/nvidia-h100.json +9 -10
  22. agentrust_trace-0.2.0/mkdocs.yml +125 -0
  23. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/pyproject.toml +2 -1
  24. agentrust_trace-0.2.0/requirements-docs.txt +6 -0
  25. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/schema/trace-claim.json +37 -14
  26. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/spec/trace-v0.1.md +28 -12
  27. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/src/agentrust_trace/__init__.py +14 -2
  28. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/src/agentrust_trace/models.py +25 -4
  29. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/src/agentrust_trace/schema/trace-v0.1.json +33 -10
  30. agentrust_trace-0.2.0/src/agentrust_trace/sign.py +80 -0
  31. agentrust_trace-0.2.0/tests/test_models.py +152 -0
  32. agentrust_trace-0.2.0/tests/test_sign.py +121 -0
  33. agentrust_trace-0.2.0/tests/test_validate.py +77 -0
  34. agentrust_trace-0.1.0/README.md +0 -90
  35. agentrust_trace-0.1.0/tests/test_models.py +0 -61
  36. agentrust_trace-0.1.0/tests/test_validate.py +0 -44
  37. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  38. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  39. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/ISSUE_TEMPLATE/spec_change.md +0 -0
  40. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  41. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/CODE_OF_CONDUCT.md +0 -0
  42. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/CONTRIBUTING.md +0 -0
  43. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/GOVERNANCE.md +0 -0
  44. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/LICENSE +0 -0
  45. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/MAINTAINERS.md +0 -0
  46. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/ROADMAP.md +0 -0
  47. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/docs/assets/icon.svg +0 -0
  48. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/src/agentrust_trace/py.typed +0 -0
  49. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/src/agentrust_trace/validate.py +0 -0
  50. {agentrust_trace-0.1.0 → agentrust_trace-0.2.0}/tests/__init__.py +0 -0
@@ -5,6 +5,9 @@ on:
5
5
  branches: ["main", "feat/**", "fix/**"]
6
6
  pull_request:
7
7
 
8
+ env:
9
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
10
+
8
11
  jobs:
9
12
  test:
10
13
  runs-on: ubuntu-latest
@@ -15,7 +18,7 @@ jobs:
15
18
  steps:
16
19
  - uses: actions/checkout@v4
17
20
 
18
- - uses: actions/setup-python@v5
21
+ - uses: actions/setup-python@v4
19
22
  with:
20
23
  python-version: ${{ matrix.python-version }}
21
24
 
@@ -0,0 +1,42 @@
1
+ name: Contributor reputation check
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened]
6
+ issues:
7
+ types: [opened]
8
+ workflow_dispatch:
9
+ inputs:
10
+ username:
11
+ description: GitHub username to check
12
+ required: true
13
+
14
+ permissions:
15
+ contents: read
16
+ issues: write
17
+ pull-requests: write
18
+
19
+ jobs:
20
+ check:
21
+ runs-on: ubuntu-latest
22
+ if: |
23
+ github.actor != 'dependabot[bot]' &&
24
+ github.actor != 'github-actions[bot]' &&
25
+ github.actor != 'copilot-swe-agent[bot]' &&
26
+ github.actor != 'claude-code[bot]' &&
27
+ github.actor != 'imran-siddique'
28
+ steps:
29
+ - name: Checkout org action
30
+ uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
31
+ with:
32
+ repository: agentrust-io/.github
33
+ ref: main
34
+ persist-credentials: false
35
+ sparse-checkout: |
36
+ scripts
37
+ .github/actions/contributor-check
38
+
39
+ - name: Run contributor check
40
+ uses: ./.github/actions/contributor-check
41
+ with:
42
+ github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,43 @@
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
+ workflow_dispatch:
18
+
19
+ permissions:
20
+ contents: write
21
+
22
+ jobs:
23
+ deploy:
24
+ name: Build and deploy docs
25
+ runs-on: ubuntu-latest
26
+
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - uses: actions/setup-python@v6
33
+ with:
34
+ python-version: "3.11"
35
+ cache: pip
36
+
37
+ - name: Install docs dependencies
38
+ run: |
39
+ pip install -r requirements-docs.txt
40
+ pip install -e ".[dev]"
41
+
42
+ - name: Build and deploy to GitHub Pages
43
+ run: mkdocs gh-deploy --force --clean
@@ -9,13 +9,16 @@ permissions:
9
9
  contents: read
10
10
  id-token: write # OIDC trusted publishing — no stored API token needed
11
11
 
12
+ env:
13
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
14
+
12
15
  jobs:
13
16
  build:
14
17
  runs-on: ubuntu-latest
15
18
  steps:
16
19
  - uses: actions/checkout@v4
17
20
 
18
- - uses: actions/setup-python@v5
21
+ - uses: actions/setup-python@v4
19
22
  with:
20
23
  python-version: "3.11"
21
24
 
@@ -0,0 +1,84 @@
1
+ name: Require maintainer approval
2
+
3
+ on:
4
+ pull_request_target:
5
+ types: [opened, synchronize, reopened]
6
+ branches: [main]
7
+ # Re-evaluate the gate when a review is submitted or dismissed so an
8
+ # approval clears the failing status without waiting for a new push.
9
+ # Note: pull_request_review does not support a branches filter, so the
10
+ # base-branch check lives in the job-level `if` below.
11
+ pull_request_review:
12
+ types: [submitted, dismissed]
13
+
14
+ permissions:
15
+ contents: read
16
+ pull-requests: read
17
+ statuses: write
18
+
19
+ jobs:
20
+ gate:
21
+ runs-on: ubuntu-latest
22
+ if: github.event.pull_request.base.ref == 'main'
23
+ steps:
24
+ - name: Check for maintainer approval
25
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
26
+ with:
27
+ script: |
28
+ const MAINTAINERS = ['imran-siddique'];
29
+
30
+ const author = context.payload.pull_request.user.login;
31
+ if (MAINTAINERS.includes(author)) {
32
+ core.info(`Author ${author} is a maintainer, skipping gate`);
33
+ return;
34
+ }
35
+
36
+ const association = context.payload.pull_request.author_association;
37
+ if (association === 'MEMBER' || association === 'OWNER') {
38
+ core.info(`Author is ${association}, skipping gate`);
39
+ return;
40
+ }
41
+
42
+ // Both pull_request_target and pull_request_review payloads
43
+ // carry the PR at context.payload.pull_request.
44
+ const prNumber = context.payload.pull_request.number;
45
+
46
+ // Re-fetch the PR so we compare against the head SHA at
47
+ // evaluation time, not a possibly stale SHA from the payload.
48
+ const { data: pr } = await github.rest.pulls.get({
49
+ owner: context.repo.owner,
50
+ repo: context.repo.repo,
51
+ pull_number: prNumber,
52
+ });
53
+ const headSha = pr.head.sha;
54
+
55
+ // Paginate: listReviews otherwise returns only the first 30.
56
+ const reviews = await github.paginate(github.rest.pulls.listReviews, {
57
+ owner: context.repo.owner,
58
+ repo: context.repo.repo,
59
+ pull_number: prNumber,
60
+ });
61
+
62
+ // Only a maintainer's most recent non-comment review counts,
63
+ // and it must approve the current head commit. An approval of
64
+ // an older commit does not clear the gate after a later push
65
+ // (prevents approve-then-swap).
66
+ const latestByMaintainer = new Map();
67
+ for (const review of reviews) {
68
+ if (
69
+ review.user &&
70
+ review.user.type === 'User' &&
71
+ MAINTAINERS.includes(review.user.login) &&
72
+ review.state !== 'COMMENTED'
73
+ ) {
74
+ latestByMaintainer.set(review.user.login, review);
75
+ }
76
+ }
77
+
78
+ const approved = [...latestByMaintainer.values()].some(
79
+ (r) => r.state === 'APPROVED' && r.commit_id === headSha
80
+ );
81
+
82
+ if (!approved) {
83
+ core.setFailed('Waiting for maintainer approval of the current head commit before merging.');
84
+ }
@@ -0,0 +1,30 @@
1
+ name: SBOM
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ release:
7
+ types: [published]
8
+
9
+ env:
10
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
11
+
12
+ permissions:
13
+ contents: write
14
+ id-token: write
15
+
16
+ jobs:
17
+ sbom:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: Generate SBOM
22
+ uses: anchore/sbom-action@v0
23
+ with:
24
+ format: spdx-json
25
+ output-file: sbom.spdx.json
26
+ - name: Upload SBOM artifact
27
+ uses: actions/upload-artifact@v4
28
+ with:
29
+ name: sbom
30
+ path: sbom.spdx.json
@@ -0,0 +1,11 @@
1
+ # ADOPTERS
2
+
3
+ Organizations using or evaluating the TRACE specification.
4
+
5
+ To add your organization, open a pull request editing this file.
6
+
7
+ ---
8
+
9
+ | Organization | Usage |
10
+ |---|---|
11
+ | Opaque Systems | Founding contributor — developed the initial specification, reference implementation, and TRACE registry infrastructure |
@@ -0,0 +1,26 @@
1
+ # Antitrust Policy
2
+
3
+ TRACE is an open specification project hosted under the agentrust-io organization and targeting donation to the Agentic AI Foundation (AAIF) under the Linux Foundation. Participation in this project is subject to antitrust and competition laws.
4
+
5
+ ## Prohibited topics
6
+
7
+ The following topics must not be discussed in any project forum, issue, PR, mailing list, meeting, or chat channel:
8
+
9
+ - Prices, pricing strategies, or cost structures of any product or service
10
+ - Market allocation, geographic territories, or customer segmentation
11
+ - Bids, contracts, or terms with any customer or competitor
12
+ - Whether to deal with, or boycott, any company or individual
13
+ - Production volumes, capacity plans, or sales forecasts
14
+ - Any other competitively sensitive business information
15
+
16
+ ## What is appropriate
17
+
18
+ Project discussions must be limited to technical matters: specification design, cryptographic protocols, SDK implementation, conformance test coverage, and interoperability. Commercial decisions are for each organization to make independently.
19
+
20
+ ## Reporting
21
+
22
+ If you observe discussion that appears to violate this policy, stop the discussion immediately and report it to the Project Lead via private GitHub message or email. Do not continue the discussion or document it further in project channels.
23
+
24
+ ## Questions
25
+
26
+ If you are uncertain whether a topic is appropriate for project discussion, consult your organization's legal counsel before participating.
@@ -39,6 +39,25 @@ Seven open questions requiring founding-member input before v0.2 are documented
39
39
 
40
40
  ---
41
41
 
42
+ ## [0.2.0] — TBD
43
+
44
+ ### Specification
45
+
46
+ - Extend `subject` field to accept DID URIs (any `did:` method) in addition to SPIFFE SVIDs.
47
+ Previously `^spiffe://` only; now `^(spiffe://|did:)`. Additive, backward-compatible.
48
+ DID-native runtimes (e.g. AGT `did:mesh:` identities) no longer require a parallel SPIFFE identity.
49
+ Closes: microsoft/agent-governance-toolkit ADR-0032, agentrust-io/trace-spec#35.
50
+
51
+ ### Schema
52
+
53
+ - `schema/trace-claim.json`: `subject` pattern updated to `^(spiffe://|did:)`, description updated.
54
+
55
+ ### Reference Implementation
56
+
57
+ - `TrustRecord.subject` pattern updated to `r"^(spiffe://|did:)"`.
58
+
59
+ ---
60
+
42
61
  ## Upcoming
43
62
 
44
63
  See [ROADMAP.md](ROADMAP.md) for planned changes in v0.2 and v1.0.
@@ -1,7 +1,9 @@
1
1
  # Technical Charter — TRACE
2
2
 
3
3
  **Proposed hosting**: CoSAI (Coalition for Secure AI) for the technical workstream; Linux Foundation entity hosting the Model Context Protocol for specification, IP, trademark, and conformance mark.
4
- **Status**: Pre-acceptance draft — effective upon host organization acceptance.
4
+ **Status**: Pre-acceptance draft — effective upon host organization acceptance.
5
+
6
+ > **Note for external contributors:** This charter is a working draft and has not yet been accepted by a host organization. Governance terms, IP policy, and conformance mark ownership described here are proposed, not final. Do not implement production systems based on governance commitments in this document until v1.0 ratification.
5
7
  **Version**: 0.1 (aligned with spec v0.1)
6
8
 
7
9
  ---
@@ -0,0 +1,55 @@
1
+ # Known Limitations
2
+
3
+ This document describes what TRACE does not do, and where layered defenses are needed. Honest scope boundaries prevent misplaced trust.
4
+
5
+ ## What a TRACE claim does not prevent
6
+
7
+ **Operator-forged software-only records**
8
+ A TRACE claim at Level 0 (software-only signing) is signed by a key held in software. A privileged operator with root access can produce a valid-looking Level 0 record for a run that never happened, or that violated policy. Level 0 is suitable for development and audit-trail tooling only — not for third-party verification.
9
+
10
+ **Replay of a valid past record**
11
+ A TRACE claim proves a specific run happened; it does not prevent a verifier from being shown a valid record from an earlier run. Verifiers that rely on recency must check the `iat` and `exp` claims, require nonce binding to a challenge, or anchor records to a public transparency log and check for freshness.
12
+
13
+ **Policy correctness**
14
+ The `policy.bundle_hash` field attests that a specific policy was in force at runtime. It does not attest that the policy achieves the intended security outcome. Policy review is a separate control.
15
+
16
+ **What happened inside the model**
17
+ The call transcript records tool invocations, arguments, and responses that are observable at the gateway boundary. It does not record the model's internal chain-of-thought, intermediate reasoning, or context window contents. Reasoning that influences behavior without producing a tool call is not captured.
18
+
19
+ **Cross-boundary data propagation**
20
+ The call graph summary uses temporal adjacency to approximate data flow between tool calls. It cannot definitively prove which specific data from one tool response influenced which subsequent call. The `provenance_disclaimer` field in every call graph summary is required for this reason.
21
+
22
+ **TEE side-channel attacks**
23
+ Hardware attestation proves the TRACE signing key and policy engine were measured in silicon before execution. It does not protect against side-channel attacks (cache timing, power analysis) targeting the TEE itself. TEE-level side-channel defense is the responsibility of the TEE platform vendor.
24
+
25
+ **Revocation of the signing key after issuance**
26
+ If the TRACE signing key is compromised after records are issued, existing records remain cryptographically valid. Key monitoring, rapid revocation, and transparency log integration are the required controls — TRACE provides the anchoring mechanism but cannot detect compromise itself.
27
+
28
+ ## What Level 0 does not provide
29
+
30
+ Level 0 (software-only signing) is suitable for development, internal audit trails, and staging environments. It does not satisfy:
31
+
32
+ - EU AI Act Art. 12 (tamper-evident logging) — requires Level 1+
33
+ - DORA Art. 9 (ICT risk management) — requires Level 1+ with transparency log anchoring
34
+ - Any claim of hardware-rooted trust — the signing key is held in software and can be extracted by a privileged operator
35
+
36
+ ## What the SDK does not do
37
+
38
+ - **Evaluate Cedar policy** — the SDK includes the Cedar policy field in the claim; evaluation requires the Cedar engine (included in AGT or cMCP)
39
+ - **Store or index records** — the SDK produces and verifies TRACE claim documents; storage, rotation, and retrieval are the caller's responsibility
40
+ - **Anchor to a transparency log** — the SDK generates records suitable for SCITT anchoring; submission to a transparency log requires a separate SCITT client
41
+ - **Replace a secrets manager** — signing private keys must be stored in a secrets manager (Azure Key Vault, AWS Secrets Manager, HSM); do not store them on disk without protection
42
+ - **Provide an authoritative verification service** — the self-hosted verifier confirms cryptographic validity against the issuer's key; authoritative third-party verification with SLA is a separate commercial service
43
+
44
+ ## Performance
45
+
46
+ Hardware attestation adds latency at the point of claim generation (not per-tool-call):
47
+
48
+ | Provider | Typical claim signing latency |
49
+ |---|---|
50
+ | Software (Level 0) | < 1 ms |
51
+ | TPM | 50–200 ms |
52
+ | SEV-SNP | 10–50 ms |
53
+ | TDX | 10–50 ms |
54
+
55
+ Claim verification (signature check + schema validation) is < 5 ms in all cases.
@@ -0,0 +1,21 @@
1
+ TRACE
2
+ Copyright 2026 AgentTrust Authors
3
+
4
+ This product includes software developed by the AgentTrust project
5
+ (https://github.com/agentrust-io/trace-spec).
6
+
7
+ ---
8
+
9
+ Third-party components used by the Python SDK:
10
+
11
+ pydantic
12
+ License: MIT
13
+ https://github.com/pydantic/pydantic
14
+
15
+ jsonschema
16
+ License: MIT
17
+ https://github.com/python-jsonschema/jsonschema
18
+
19
+ jcs (dev dependency — RFC 8785 canonical JSON)
20
+ License: MIT
21
+ https://github.com/nicowillis/jcs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentrust-trace
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: TRACE v0.1 — hardware-attested governance records for AI agents
5
5
  Project-URL: Homepage, https://github.com/agentrust-io/trace-spec
6
6
  Project-URL: Repository, https://github.com/agentrust-io/trace-spec
@@ -8,6 +8,7 @@ Project-URL: Issues, https://github.com/agentrust-io/trace-spec/issues
8
8
  Project-URL: Changelog, https://github.com/agentrust-io/trace-spec/blob/main/CHANGELOG.md
9
9
  License: Apache-2.0
10
10
  License-File: LICENSE
11
+ License-File: NOTICE
11
12
  Keywords: ai-governance,attestation,confidential-computing,eat,rats,tee,trace
12
13
  Classifier: Development Status :: 3 - Alpha
13
14
  Classifier: Intended Audience :: Developers
@@ -19,6 +20,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
20
  Classifier: Topic :: Security
20
21
  Classifier: Typing :: Typed
21
22
  Requires-Python: >=3.11
23
+ Requires-Dist: cryptography>=42.0
22
24
  Requires-Dist: jsonschema>=4.20
23
25
  Requires-Dist: pydantic>=2.0
24
26
  Provides-Extra: dev
@@ -29,13 +31,29 @@ Requires-Dist: ruff>=0.4; extra == 'dev'
29
31
  Requires-Dist: types-jsonschema; extra == 'dev'
30
32
  Description-Content-Type: text/markdown
31
33
 
32
- <p align="center">
34
+ <p align="center">
33
35
  <img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE"/>
34
36
  </p>
35
37
 
36
- # TRACE Trust Runtime Attestation and Compliance Evidence
38
+ # TRACE: Trust Runtime Attestation and Compliance Evidence
39
+
40
+ [![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](LICENSE)
41
+ [![AAIF](https://img.shields.io/badge/Targeting-AAIF_%2F_Linux_Foundation-6366f1)](https://agenticai.foundation)
42
+ [![Spec](https://img.shields.io/badge/Spec-v0.2-0ea5e9)](spec/trace-v0.1.md)
43
+ [![PyPI](https://img.shields.io/pypi/v/agentrust-trace)](https://pypi.org/project/agentrust-trace/)
44
+ [![Discord](https://dcbadge.limes.pink/api/server/9JWNpH7E?style=flat)](https://discord.gg/9JWNpH7E)
45
+
46
+ > **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026. May have breaking changes before v1.0.
47
+
48
+ <p align="center">
49
+ <a href="spec/trace-v0.1.md">Specification</a> &nbsp;|&nbsp;
50
+ <a href="schema/trace-claim.json">Schema</a> &nbsp;|&nbsp;
51
+ <a href="examples/">Examples</a> &nbsp;|&nbsp;
52
+ <a href="https://github.com/agentrust-io/trace-registry">Registry</a> &nbsp;|&nbsp;
53
+ <a href="https://github.com/agentrust-io/cmcp">Reference Impl</a>
54
+ </p>
37
55
 
38
- 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.
56
+ 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.
39
57
 
40
58
  ## What a TRACE Trust Record Is
41
59
 
@@ -43,7 +61,7 @@ An open specification for hardware-attested AI agent governance records. TRACE d
43
61
  {
44
62
  "eat_profile": "tag:agentrust.io,2026:trace-v0.1",
45
63
  "iat": 1750676142,
46
- "subject": "spiffe://trust.example.org/agent/payments-processor/prod",
64
+ "subject": "spiffe://trust.example.org/agent/payments-processor/prod", // or "did:mesh:spiffe://..."
47
65
  "model": {
48
66
  "provider": "anthropic",
49
67
  "model_id": "claude-sonnet-4-6",
@@ -84,11 +102,21 @@ An open specification for hardware-attested AI agent governance records. TRACE d
84
102
 
85
103
  The record is a single EAT envelope (RFC 9711). Each field is independently verifiable. No callback to the issuer is required.
86
104
 
105
+ ### Supported platforms
106
+
107
+ | Platform | v0.1 | v0.2 (planned) | Notes |
108
+ |---|---|---|---|
109
+ | `intel-tdx` | Yes | Yes | |
110
+ | `amd-sev-snp` | Yes | Yes | |
111
+ | `nvidia-h100` | Yes | Yes | |
112
+ | `gpu-cc` | No | Planned | Generic GPU confidential compute |
113
+ | `opaque` | Yes | Yes | Explicit opt-in; contact maintainers |
114
+
87
115
  ## Specification
88
116
 
89
- - [`spec/trace-v0.1.md`](spec/trace-v0.1.md) full specification
90
- - [`schema/trace-claim.json`](schema/trace-claim.json) JSON Schema
91
- - [`examples/`](examples/) example Trust Records for Intel TDX, AMD SEV-SNP, and NVIDIA H100
117
+ - [`spec/trace-v0.1.md`](spec/trace-v0.1.md) -- full specification
118
+ - [`schema/trace-claim.json`](schema/trace-claim.json) -- JSON Schema
119
+ - [`examples/`](examples/) -- example Trust Records for Intel TDX, AMD SEV-SNP, and NVIDIA H100
92
120
 
93
121
  ## Standards composition
94
122
 
@@ -98,7 +126,7 @@ TRACE profiles existing standards rather than replacing them:
98
126
  |---|---|
99
127
  | RATS / EAT (RFC 9711) | Wire envelope and claim model |
100
128
  | SLSA Provenance v1.0 | Build-time provenance (`build_provenance`) |
101
- | SPIFFE SVID | Workload identity (`subject`) |
129
+ | SPIFFE SVID / DID URI | Workload identity (`subject`) |
102
130
  | SCITT | Append-only transparency anchoring (`transparency`) |
103
131
  | EAR (draft-ietf-rats-ar4si) | Verifier appraisal output (`appraisal`) |
104
132
  | MCP / A2A | Agent tool-call transcript surface (`tool_transcript`) |
@@ -106,15 +134,33 @@ TRACE profiles existing standards rather than replacing them:
106
134
 
107
135
  ## Reference implementation
108
136
 
109
- [agentrust-io/cmcp](https://github.com/agentrust-io/cmcp) Confidential MCP Gateway. Hardware-attested policy enforcement at the MCP tool-call boundary on Intel TDX, AMD SEV-SNP, and NVIDIA H100/Blackwell.
137
+ [agentrust-io/cmcp](https://github.com/agentrust-io/cmcp) -- Confidential MCP Runtime. Hardware-attested policy enforcement at the MCP tool-call boundary on Intel TDX, AMD SEV-SNP, and NVIDIA H100/Blackwell.
110
138
 
111
139
  ## Registry
112
140
 
113
141
  A public append-only Merkle registry of TRACE Trust Record anchors: [agentrust-io/trace-registry](https://github.com/agentrust-io/trace-registry).
114
142
 
143
+ ## Install
144
+
145
+ ```bash
146
+ pip install agentrust-trace
147
+ ```
148
+
149
+ ```python
150
+ from agentrust_trace import TrustRecord, sign_record, load_signing_key
151
+
152
+ key = load_signing_key() # reads TRACE_PRIVATE_KEY_PEM or generates ephemeral
153
+ record = sign_record(payload, key)
154
+ TrustRecord.model_validate(record) # validate before writing
155
+ ```
156
+
115
157
  ## Status
116
158
 
117
- Draft v0.1 publishing at Confidential Computing Summit, San Francisco, June 23 2026. Targeting submission to the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) under the Linux Foundation.
159
+ v0.2. `subject` now accepts DID URIs (`did:`) in addition to SPIFFE SVIDs. `slsa_level: 0` supported for software-only deployments. Published at Confidential Computing Summit, San Francisco, June 23 2026. Targeting submission to the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) under the Linux Foundation.
160
+
161
+ ## Community
162
+
163
+ Questions, feedback, integration help: [Discord](https://discord.gg/9JWNpH7E).
118
164
 
119
165
  ## License
120
166
 
@@ -0,0 +1,134 @@
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
+ [![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](LICENSE)
8
+ [![AAIF](https://img.shields.io/badge/Targeting-AAIF_%2F_Linux_Foundation-6366f1)](https://agenticai.foundation)
9
+ [![Spec](https://img.shields.io/badge/Spec-v0.2-0ea5e9)](spec/trace-v0.1.md)
10
+ [![PyPI](https://img.shields.io/pypi/v/agentrust-trace)](https://pypi.org/project/agentrust-trace/)
11
+ [![Discord](https://dcbadge.limes.pink/api/server/9JWNpH7E?style=flat)](https://discord.gg/9JWNpH7E)
12
+
13
+ > **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026. May have breaking changes before v1.0.
14
+
15
+ <p align="center">
16
+ <a href="spec/trace-v0.1.md">Specification</a> &nbsp;|&nbsp;
17
+ <a href="schema/trace-claim.json">Schema</a> &nbsp;|&nbsp;
18
+ <a href="examples/">Examples</a> &nbsp;|&nbsp;
19
+ <a href="https://github.com/agentrust-io/trace-registry">Registry</a> &nbsp;|&nbsp;
20
+ <a href="https://github.com/agentrust-io/cmcp">Reference Impl</a>
21
+ </p>
22
+
23
+ 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.
24
+
25
+ ## What a TRACE Trust Record Is
26
+
27
+ ```json
28
+ {
29
+ "eat_profile": "tag:agentrust.io,2026:trace-v0.1",
30
+ "iat": 1750676142,
31
+ "subject": "spiffe://trust.example.org/agent/payments-processor/prod", // or "did:mesh:spiffe://..."
32
+ "model": {
33
+ "provider": "anthropic",
34
+ "model_id": "claude-sonnet-4-6",
35
+ "version": "20251001",
36
+ "weights_digest": "sha256:a3f8d2c1..."
37
+ },
38
+ "runtime": {
39
+ "platform": "amd-sev-snp",
40
+ "measurement": "sha384:c9e4b1d2e3f4...",
41
+ "rim_uri": "https://kdsintf.amd.com/vcek/v1/..."
42
+ },
43
+ "policy": {
44
+ "bundle_hash": "sha256:b2c3d4e5...",
45
+ "enforcement_mode": "enforce",
46
+ "version": "1.2.0"
47
+ },
48
+ "data_class": "confidential",
49
+ "tool_transcript": {
50
+ "hash": "sha256:d4e5f6a7...",
51
+ "call_count": 3
52
+ },
53
+ "build_provenance": {
54
+ "slsa_level": 2,
55
+ "builder": "https://github.com/slsa-framework/slsa-github-generator",
56
+ "digest": "sha256:e5f6a7b8..."
57
+ },
58
+ "appraisal": {
59
+ "status": "affirming",
60
+ "verifier": "https://trust-authority.example.org",
61
+ "policy_ref": "https://trust-authority.example.org/policy/agent-v1"
62
+ },
63
+ "transparency": "https://registry.agentrust.io/claim/trace-2026-06-23T09:15:42Z-f2a8d1",
64
+ "cnf": {
65
+ "jwk": {"kty": "EC", "crv": "P-256", "x": "MEkwEw...", "y": "..."}
66
+ }
67
+ }
68
+ ```
69
+
70
+ The record is a single EAT envelope (RFC 9711). Each field is independently verifiable. No callback to the issuer is required.
71
+
72
+ ### Supported platforms
73
+
74
+ | Platform | v0.1 | v0.2 (planned) | Notes |
75
+ |---|---|---|---|
76
+ | `intel-tdx` | Yes | Yes | |
77
+ | `amd-sev-snp` | Yes | Yes | |
78
+ | `nvidia-h100` | Yes | Yes | |
79
+ | `gpu-cc` | No | Planned | Generic GPU confidential compute |
80
+ | `opaque` | Yes | Yes | Explicit opt-in; contact maintainers |
81
+
82
+ ## Specification
83
+
84
+ - [`spec/trace-v0.1.md`](spec/trace-v0.1.md) -- full specification
85
+ - [`schema/trace-claim.json`](schema/trace-claim.json) -- JSON Schema
86
+ - [`examples/`](examples/) -- example Trust Records for Intel TDX, AMD SEV-SNP, and NVIDIA H100
87
+
88
+ ## Standards composition
89
+
90
+ TRACE profiles existing standards rather than replacing them:
91
+
92
+ | Primitive | Role in TRACE |
93
+ |---|---|
94
+ | RATS / EAT (RFC 9711) | Wire envelope and claim model |
95
+ | SLSA Provenance v1.0 | Build-time provenance (`build_provenance`) |
96
+ | SPIFFE SVID / DID URI | Workload identity (`subject`) |
97
+ | SCITT | Append-only transparency anchoring (`transparency`) |
98
+ | EAR (draft-ietf-rats-ar4si) | Verifier appraisal output (`appraisal`) |
99
+ | MCP / A2A | Agent tool-call transcript surface (`tool_transcript`) |
100
+ | AIBOM (SPDX 3.0 / CycloneDX 1.7) | Model component inventory (`model`) |
101
+
102
+ ## Reference implementation
103
+
104
+ [agentrust-io/cmcp](https://github.com/agentrust-io/cmcp) -- Confidential MCP Runtime. Hardware-attested policy enforcement at the MCP tool-call boundary on Intel TDX, AMD SEV-SNP, and NVIDIA H100/Blackwell.
105
+
106
+ ## Registry
107
+
108
+ A public append-only Merkle registry of TRACE Trust Record anchors: [agentrust-io/trace-registry](https://github.com/agentrust-io/trace-registry).
109
+
110
+ ## Install
111
+
112
+ ```bash
113
+ pip install agentrust-trace
114
+ ```
115
+
116
+ ```python
117
+ from agentrust_trace import TrustRecord, sign_record, load_signing_key
118
+
119
+ key = load_signing_key() # reads TRACE_PRIVATE_KEY_PEM or generates ephemeral
120
+ record = sign_record(payload, key)
121
+ TrustRecord.model_validate(record) # validate before writing
122
+ ```
123
+
124
+ ## Status
125
+
126
+ v0.2. `subject` now accepts DID URIs (`did:`) in addition to SPIFFE SVIDs. `slsa_level: 0` supported for software-only deployments. Published at Confidential Computing Summit, San Francisco, June 23 2026. Targeting submission to the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) under the Linux Foundation.
127
+
128
+ ## Community
129
+
130
+ Questions, feedback, integration help: [Discord](https://discord.gg/9JWNpH7E).
131
+
132
+ ## License
133
+
134
+ Creative Commons Attribution 4.0 International (CC BY 4.0)