diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 79ab227..32596da 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -55,7 +55,7 @@ jobs: if [ -d docs ]; then cp -r docs $BUILD/docs; fi - for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME; do + for fname in index.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md CHARTER.md CODE_OF_CONDUCT.md SECURITY.md PRIVACY.md ROADMAP.md LIMITATIONS.md CNAME; do if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi done diff --git a/README.md b/README.md index f1c7ce4..9dfe2a4 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ ### The secure, confidential profile for agent-to-agent (A2A) delegation

- - Documentation + + Documentation

diff --git a/index.md b/index.md new file mode 100644 index 0000000..f83ccf4 --- /dev/null +++ b/index.md @@ -0,0 +1,83 @@ +--- +title: Secure, confidential agent-to-agent delegation +description: cA2A is a trust profile on top of the Agent2Agent protocol. It adds attested, attenuated delegation, a sealed peer channel, and an offline-verifiable provenance record, without replacing the transport. +--- + +# cA2A + +cA2A (Confidential A2A) is the secure, confidential way to do agent-to-agent delegation on the [Agent2Agent (A2A)](https://a2a-protocol.org/) protocol. It layers attested, attenuated delegation, a sealed peer channel, and an offline-verifiable provenance record on top of A2A, without replacing the transport. + +**Agent A delegates to B. B delegates part of it to C. Who authorized what, did B stay inside the authority A actually held, and can you prove it for every hop?** + +!!! tip "TL;DR" + - A2A's Signed Agent Card answers one question: did the domain owner issue this card. It does not cover integrity, authority, confidentiality, or provenance. + - cA2A is a profile on top of A2A, not a competing transport, the way TRACE profiles RATS and EAT rather than reinventing them. + - Install with `pip install ca2a-runtime`. The same package does offline chain verification and runs the live peer runtime. + - Developer Preview. One bound worth reading before you rely on it: peer appraisal has been demonstrated one-directional, so mutual simultaneous attestation is still outstanding. See [Limitations](LIMITATIONS.md). + +```bash +pip install ca2a-runtime +ca2a verify-chain --chain ./examples/minimal/chain.json +``` + +## The gap it closes + +A2A won the agent-to-agent transport war. Its trust model stops at the front door. + +The Signed Agent Card proves the domain owner issued the card. It does not answer: + +- **Integrity.** Is the peer running attested, unmodified, governed code, or a tampered agent wearing a valid card. +- **Authority.** When A delegates to B, does A actually hold the authority it is passing, and is B's grant a provable subset of it. +- **Confidentiality.** The task payload A sends B crosses a network and lands in B's memory. If B is in another trust domain, nothing seals that payload to B's attested measurement. +- **Provenance.** Across A to B to C, there is no unbroken, offline-verifiable chain of who delegated what to whom under which policy. + +A2A leaves the runtime credential layer to implementers. The common answers, mTLS and OAuth scopes, secure the pipe and assert an identity. They do not attenuate authority, attest runtime integrity, or seal payloads to a measurement. + +## The four primitives + +1. **Attenuated delegation.** Each hop carries a signed delegation credential whose scope is a provable subset of its parent. Child scope cannot exceed parent, depth is bounded, and replay across chains is rejected. +2. **Runtime attestation.** A peer proves it is running attested, measured code before it is trusted with a delegated task. +3. **Sealed peer channel.** The task payload is sealed to the peer's attested measurement, so it decrypts only inside the verified enclave. +4. **Provenance record.** Each hop emits a TRACE record referencing the parent record hash and delegation credential id, producing an offline-verifiable delegation DAG. + +## Where to start + +
+ +- __Run it__ + + --- + + Verify a delegation chain offline, then stand up the live peer runtime. + + [Quick Start](docs/quickstart.md) + +- __Understand it__ + + --- + + The architecture, the trust boundaries, and how a hop becomes a provenance record. + + [How It Works](docs/concepts.md) + +- __Read the profile__ + + --- + + The normative cA2A profile on A2A, with the delegation chain, sealed channel, and conformance rules. + + [Profile](docs/spec/profile.md) + +- __Check the bounds__ + + --- + + What has run against real silicon, what is one-directional, and what is not appraised at all. + + [Limitations](LIMITATIONS.md) + +
+ +## How it fits the rest of the stack + +cA2A is the delegation layer of the AgenTrust chain. [Agent Manifest](https://manifest.agentrust-io.com) declares what an agent is and what it may do, and supplies the attenuated delegation credential. [cMCP](https://cmcp.agentrust-io.com) enforces policy at the agent-to-tool boundary and shares the TEE provider abstraction. [TRACE](https://trace.agentrust-io.com) is the evidence format each hop's provenance record is written in. diff --git a/mkdocs.yml b/mkdocs.yml index 6401e85..ef0bb78 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,184 +1,185 @@ -site_name: cA2A -site_description: The secure, confidential profile for agent-to-agent (A2A) delegation. Attested, attenuated delegation with a sealed peer channel and offline-verifiable provenance, on top of the Agent2Agent (A2A) protocol. -site_url: https://ca2a.agentrust-io.com -repo_url: https://github.com/agentrust-io/ca2a -repo_name: agentrust-io/ca2a -edit_uri: edit/main/ -docs_dir: . -exclude_docs: | - .github/ - node_modules/ - benchmarks/ - src/ - tests/ - schemas/ - examples/ - LICENSE - NOTICE - ADOPTERS.md - MAINTAINERS.md - SECURITY.md - CHARTER.md - CODE_OF_CONDUCT.md - pyproject.toml - .gitignore - -theme: - name: material - font: false - logo: docs/assets/icon.svg - favicon: docs/assets/icon.svg - custom_dir: overrides - palette: - - scheme: default - primary: custom - accent: custom - toggle: - icon: material/brightness-4 - name: Switch to dark mode - - scheme: slate - primary: custom - accent: custom - toggle: - icon: material/brightness-7 - name: Switch to light mode - features: - - navigation.instant - - navigation.tracking - - navigation.tabs - - navigation.tabs.sticky - - navigation.sections - - navigation.top - - navigation.path - - search.suggest - - search.highlight - - content.code.copy - - content.tabs.link - - toc.follow - - header.autohide - icon: - repo: fontawesome/brands/github - -plugins: - - search - - llmstxt: - full_output: llms-full.txt - markdown_description: >- - cA2A (Confidential A2A) is the secure, confidential way to do - agent-to-agent delegation on the Agent2Agent (A2A) protocol. It is a - trust profile, not a competing transport: it adds attested, attenuated - delegation (each hop's authority is a provable subset of its parent's), - runtime attestation of the peer, a sealed peer channel that binds the - task payload to the peer's attested measurement, and an - offline-verifiable provenance record per hop. If you are looking for a - secure version of A2A for multi-agent systems, this is the AgenTrust - profile for it. Reuses the delegation semantics from agent-manifest and - the TEE and policy primitives from cMCP. Developer preview. - sections: - Getting started: - - README.md - - docs/quickstart.md - - docs/concepts.md - - docs/configuration.md - Specification: - - docs/SPEC.md - - docs/spec/profile.md - - docs/spec/delegation-chain.md - - docs/spec/attestation.md - - docs/spec/threat-model.md - - minify: - minify_html: true - - mkdocstrings: - default_handler: python - handlers: - python: - paths: [src] - options: - docstring_style: google - show_source: false - show_root_heading: true - show_root_full_path: false - show_symbol_type_heading: true - show_symbol_type_toc: true - members_order: source - separate_signature: true - show_signature_annotations: true - unwrap_annotated: true - -markdown_extensions: - - admonition - - pymdownx.details - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.tabbed: - alternate_style: true - - pymdownx.highlight: - anchor_linenums: true - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.emoji: - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg - - attr_list - - md_in_html - - tables - - toc: - permalink: true - -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/agentrust-io/ca2a - generator: false - -extra_css: - # Shared AgenTrust editorial design system. Deliberately the only stylesheet: - # a local override here is how this site drifted to the Material default - # violet last time. Change the shared file instead. - - https://agentrust-io.com/design-system.css - -nav: - - Home: README.md - - Quick Start: docs/quickstart.md - - How It Works: docs/concepts.md - - Configuration: docs/configuration.md - - Tutorials: - - Verify a delegation chain: docs/tutorials/verify-a-delegation-chain.md - - Authoring a delegation credential: docs/tutorials/authoring-a-delegation-credential.md - - Emit and verify provenance: docs/tutorials/emit-and-verify-provenance.md - - Reproducing the claims: docs/tutorials/reproducing-the-claims.md - - Integrating with A2A: docs/tutorials/integrating-with-a2a.md - - Specification: - - Overview: docs/SPEC.md - - A2A Profile: docs/spec/profile.md - - Transport Binding: docs/spec/transport.md - - Component Model: docs/spec/component-model.md - - Inbound Peer-Call Decision: docs/spec/call-graph.md - - Delegation Chain: docs/spec/delegation-chain.md - - Provenance DAG: docs/spec/provenance-dag.md - - Sealed Peer Channel: docs/spec/sealed-channel.md - - Attestation: docs/spec/attestation.md - - Mutual Attestation: docs/spec/mutual-attestation.md - - Scope-Policy Intersection: docs/spec/cedar-policy.md - - TRACE A2A Profile: docs/spec/trace-a2a-profile.md - - Verification Library: docs/spec/verification-library.md - - Conformance: docs/spec/conformance.md - - Error Codes: docs/spec/error-codes.md - - Failure Modes: docs/spec/failure-modes.md - - Threat Model: docs/spec/threat-model.md - - Testing: - - Hardware Validation: docs/hardware-validation.md - - Project: - - Limitations: LIMITATIONS.md - - Changelog: CHANGELOG.md - - Contributing: CONTRIBUTING.md - - Governance: GOVERNANCE.md - - Roadmap: ROADMAP.md - - Privacy: PRIVACY.md - -extra_javascript: - # Shared cross-project top navigation (TRACE / Manifest / cMCP / cA2A / ...) - - https://agentrust-io.com/supernav.js +site_name: cA2A +site_description: The secure, confidential profile for agent-to-agent (A2A) delegation. Attested, attenuated delegation with a sealed peer channel and offline-verifiable provenance, on top of the Agent2Agent (A2A) protocol. +site_url: https://ca2a.agentrust-io.com +repo_url: https://github.com/agentrust-io/ca2a +repo_name: agentrust-io/ca2a +edit_uri: edit/main/ +docs_dir: . +exclude_docs: | + .github/ + node_modules/ + benchmarks/ + src/ + tests/ + schemas/ + examples/ + LICENSE + NOTICE + README.md + ADOPTERS.md + MAINTAINERS.md + pyproject.toml + .gitignore + +theme: + name: material + font: false + logo: docs/assets/icon.svg + favicon: docs/assets/icon.svg + custom_dir: overrides + palette: + - scheme: default + primary: custom + accent: custom + toggle: + icon: material/brightness-4 + name: Switch to dark mode + - scheme: slate + primary: custom + accent: custom + toggle: + icon: material/brightness-7 + name: Switch to light mode + features: + - navigation.instant + - navigation.tracking + - navigation.tabs + - navigation.tabs.sticky + - navigation.sections + - navigation.top + - navigation.path + - search.suggest + - search.highlight + - content.code.copy + - content.tabs.link + - toc.follow + - header.autohide + icon: + repo: fontawesome/brands/github + +plugins: + - search + - llmstxt: + full_output: llms-full.txt + markdown_description: >- + cA2A (Confidential A2A) is the secure, confidential way to do + agent-to-agent delegation on the Agent2Agent (A2A) protocol. It is a + trust profile, not a competing transport: it adds attested, attenuated + delegation (each hop's authority is a provable subset of its parent's), + runtime attestation of the peer, a sealed peer channel that binds the + task payload to the peer's attested measurement, and an + offline-verifiable provenance record per hop. If you are looking for a + secure version of A2A for multi-agent systems, this is the AgenTrust + profile for it. Reuses the delegation semantics from agent-manifest and + the TEE and policy primitives from cMCP. Developer preview. + sections: + Getting started: + - index.md + - docs/quickstart.md + - docs/concepts.md + - docs/configuration.md + Specification: + - docs/SPEC.md + - docs/spec/profile.md + - docs/spec/delegation-chain.md + - docs/spec/attestation.md + - docs/spec/threat-model.md + - minify: + minify_html: true + - mkdocstrings: + default_handler: python + handlers: + python: + paths: [src] + options: + docstring_style: google + show_source: false + show_root_heading: true + show_root_full_path: false + show_symbol_type_heading: true + show_symbol_type_toc: true + members_order: source + separate_signature: true + show_signature_annotations: true + unwrap_annotated: true + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - attr_list + - md_in_html + - tables + - toc: + permalink: true + +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/agentrust-io/ca2a + generator: false + +extra_css: + # Shared AgenTrust editorial design system. Deliberately the only stylesheet: + # a local override here is how this site drifted to the Material default + # violet last time. Change the shared file instead. + - https://agentrust-io.com/design-system.css + +nav: + - Home: index.md + - Quick Start: docs/quickstart.md + - How It Works: docs/concepts.md + - Configuration: docs/configuration.md + - Tutorials: + - Verify a delegation chain: docs/tutorials/verify-a-delegation-chain.md + - Authoring a delegation credential: docs/tutorials/authoring-a-delegation-credential.md + - Emit and verify provenance: docs/tutorials/emit-and-verify-provenance.md + - Reproducing the claims: docs/tutorials/reproducing-the-claims.md + - Integrating with A2A: docs/tutorials/integrating-with-a2a.md + - Specification: + - Overview: docs/SPEC.md + - A2A Profile: docs/spec/profile.md + - Transport Binding: docs/spec/transport.md + - Component Model: docs/spec/component-model.md + - Inbound Peer-Call Decision: docs/spec/call-graph.md + - Delegation Chain: docs/spec/delegation-chain.md + - Provenance DAG: docs/spec/provenance-dag.md + - Sealed Peer Channel: docs/spec/sealed-channel.md + - Attestation: docs/spec/attestation.md + - Mutual Attestation: docs/spec/mutual-attestation.md + - Scope-Policy Intersection: docs/spec/cedar-policy.md + - TRACE A2A Profile: docs/spec/trace-a2a-profile.md + - Verification Library: docs/spec/verification-library.md + - Conformance: docs/spec/conformance.md + - Error Codes: docs/spec/error-codes.md + - Failure Modes: docs/spec/failure-modes.md + - Threat Model: docs/spec/threat-model.md + - Testing: + - Hardware Validation: docs/hardware-validation.md + - Project: + - Limitations: LIMITATIONS.md + - Changelog: CHANGELOG.md + - Contributing: CONTRIBUTING.md + - Governance: GOVERNANCE.md + - Technical Charter: CHARTER.md + - Code of Conduct: CODE_OF_CONDUCT.md + - Security: SECURITY.md + - Roadmap: ROADMAP.md + - Privacy: PRIVACY.md + +extra_javascript: + # Shared cross-project top navigation (TRACE / Manifest / cMCP / cA2A / ...) + - https://agentrust-io.com/supernav.js diff --git a/overrides/main.html b/overrides/main.html index c42c424..162762f 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -20,14 +20,6 @@ that differs from sibling repositories. #} -{% block htmltitle %} - {% if page and page.is_homepage %} - Secure, confidential agent-to-agent delegation - {{ config.site_name }} - {% else %} - {{ super() }} - {% endif %} -{% endblock %} - {% block extrahead %} {{ super() }} {% set page_desc = page.meta.description if page and page.meta and page.meta.description else config.site_description %} @@ -37,7 +29,7 @@ - + @@ -47,7 +39,7 @@ - +