vouch-protocol 1.6.0__tar.gz → 1.6.2__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 (143) hide show
  1. vouch_protocol-1.6.2/PKG-INFO +822 -0
  2. vouch_protocol-1.6.2/README.md +546 -0
  3. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/pyproject.toml +2 -2
  4. vouch_protocol-1.6.2/tests/test_attribution.py +152 -0
  5. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_delegation_chain.py +16 -15
  6. vouch_protocol-1.6.2/tests/test_security_hardening.py +65 -0
  7. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_signer_vc.py +18 -24
  8. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_verifier_vc.py +1 -1
  9. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/async_verifier.py +1 -31
  10. vouch_protocol-1.6.2/vouch/attribution.py +595 -0
  11. vouch_protocol-1.6.2/vouch/attribution_cli.py +292 -0
  12. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/bridge/audio_routes.py +1 -3
  13. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/bridge/config.py +3 -27
  14. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/bridge/server.py +3 -22
  15. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/cli.py +51 -2
  16. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/did_web.py +1 -3
  17. vouch_protocol-1.6.2/vouch/integrations/_common.py +91 -0
  18. vouch_protocol-1.6.2/vouch/integrations/a2a.py +81 -0
  19. vouch_protocol-1.6.2/vouch/integrations/autogen/tool.py +44 -0
  20. vouch_protocol-1.6.2/vouch/integrations/crewai/tool.py +53 -0
  21. vouch_protocol-1.6.2/vouch/integrations/langchain/tool.py +104 -0
  22. vouch_protocol-1.6.2/vouch/integrations/mcp/__init__.py +5 -0
  23. vouch_protocol-1.6.2/vouch/integrations/mcp/server.py +94 -0
  24. vouch_protocol-1.6.2/vouch/integrations/mlflow.py +101 -0
  25. vouch_protocol-1.6.2/vouch/integrations/safetensors.py +126 -0
  26. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/jcs.py +14 -32
  27. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/multikey.py +2 -10
  28. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/onboard.py +25 -17
  29. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/revocation.py +7 -47
  30. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/signer.py +22 -55
  31. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/ssrf.py +1 -1
  32. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/status_list.py +1 -24
  33. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/verification.py +5 -5
  34. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/verifier.py +1 -111
  35. vouch_protocol-1.6.2/vouch_protocol.egg-info/PKG-INFO +822 -0
  36. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch_protocol.egg-info/SOURCES.txt +8 -9
  37. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch_protocol.egg-info/requires.txt +1 -1
  38. vouch_protocol-1.6.0/PKG-INFO +0 -498
  39. vouch_protocol-1.6.0/README.md +0 -222
  40. vouch_protocol-1.6.0/tests/test_attenuation_vectors.py +0 -74
  41. vouch_protocol-1.6.0/tests/test_phase1_delegation.py +0 -53
  42. vouch_protocol-1.6.0/tests/test_phase2_hardening.py +0 -53
  43. vouch_protocol-1.6.0/tests/test_phase3_hardening.py +0 -69
  44. vouch_protocol-1.6.0/tests/test_pro.py +0 -336
  45. vouch_protocol-1.6.0/tests/test_sensitive_vault.py +0 -91
  46. vouch_protocol-1.6.0/vouch/attenuation.py +0 -481
  47. vouch_protocol-1.6.0/vouch/ephemeral.py +0 -165
  48. vouch_protocol-1.6.0/vouch/integrations/autogen/tool.py +0 -59
  49. vouch_protocol-1.6.0/vouch/integrations/crewai/tool.py +0 -68
  50. vouch_protocol-1.6.0/vouch/integrations/langchain/tool.py +0 -122
  51. vouch_protocol-1.6.0/vouch/integrations/mcp/__init__.py +0 -5
  52. vouch_protocol-1.6.0/vouch/integrations/mcp/server.py +0 -474
  53. vouch_protocol-1.6.0/vouch/sensitive_vault.py +0 -191
  54. vouch_protocol-1.6.0/vouch_protocol.egg-info/PKG-INFO +0 -498
  55. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/LICENSE +0 -0
  56. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/MANIFEST.in +0 -0
  57. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/setup.cfg +0 -0
  58. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_async_verifier.py +0 -0
  59. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_audio_bridge.py +0 -0
  60. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_auditor.py +0 -0
  61. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_behavioral_attestation.py +0 -0
  62. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_bridge.py +0 -0
  63. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_c2pa_formats.py +0 -0
  64. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_cache.py +0 -0
  65. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_canary.py +0 -0
  66. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_data_integrity.py +0 -0
  67. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_git_workflow.py +0 -0
  68. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_hasura_integration.py +0 -0
  69. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_heartbeat.py +0 -0
  70. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_hybrid.py +0 -0
  71. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_hybrid_interop.py +0 -0
  72. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_jcs.py +0 -0
  73. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_jcs_interop.py +0 -0
  74. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_media_badge.py +0 -0
  75. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_media_native.py +0 -0
  76. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_merkle.py +0 -0
  77. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_multikey.py +0 -0
  78. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_nonce.py +0 -0
  79. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_quorum.py +0 -0
  80. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_reputation.py +0 -0
  81. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_revocation.py +0 -0
  82. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_scan.py +0 -0
  83. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_signer.py +0 -0
  84. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_signer_reputation.py +0 -0
  85. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_status_list.py +0 -0
  86. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_trust_entropy.py +0 -0
  87. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_vc.py +0 -0
  88. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/tests/test_verifier.py +0 -0
  89. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/__init__.py +0 -0
  90. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/audio.py +0 -0
  91. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/auditor.py +0 -0
  92. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/behavioral_attestation.py +0 -0
  93. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/bridge/__init__.py +0 -0
  94. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/cache.py +0 -0
  95. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/canary.py +0 -0
  96. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/config.py +0 -0
  97. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/data_integrity.py +0 -0
  98. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/data_integrity_hybrid.py +0 -0
  99. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/heartbeat.py +0 -0
  100. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/adk.py +0 -0
  101. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/amnesia.py +0 -0
  102. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/autogen/__init__.py +0 -0
  103. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/autogpt/__init__.py +0 -0
  104. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/autogpt/commands.py +0 -0
  105. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/crewai/__init__.py +0 -0
  106. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/google.py +0 -0
  107. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/hasura/__init__.py +0 -0
  108. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/hasura/webhook.py +0 -0
  109. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/langchain/__init__.py +0 -0
  110. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/n8n.py +0 -0
  111. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/streamlit/__init__.py +0 -0
  112. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/streamlit/seal.py +0 -0
  113. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/vertex_ai/__init__.py +0 -0
  114. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/integrations/vertex_ai/tool.py +0 -0
  115. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/keys.py +0 -0
  116. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/kms.py +0 -0
  117. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/media/__init__.py +0 -0
  118. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/media/badge.py +0 -0
  119. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/media/c2pa.py +0 -0
  120. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/media/native.py +0 -0
  121. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/merkle.py +0 -0
  122. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/metrics.py +0 -0
  123. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/nonce.py +0 -0
  124. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/quorum.py +0 -0
  125. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/ratelimit.py +0 -0
  126. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/registry.py +0 -0
  127. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/reputation.py +0 -0
  128. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/scan/__init__.py +0 -0
  129. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/scan/detector.py +0 -0
  130. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/scan/patterns.py +0 -0
  131. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/seal.py +0 -0
  132. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/__init__.py +0 -0
  133. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/demo.py +0 -0
  134. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/flight_recorder.py +0 -0
  135. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/permissions.py +0 -0
  136. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/shield.py +0 -0
  137. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/shield/trust_registry.py +0 -0
  138. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/status_list_fetcher.py +0 -0
  139. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/trust_entropy.py +0 -0
  140. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch/vc.py +0 -0
  141. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch_protocol.egg-info/dependency_links.txt +0 -0
  142. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch_protocol.egg-info/entry_points.txt +0 -0
  143. {vouch_protocol-1.6.0 → vouch_protocol-1.6.2}/vouch_protocol.egg-info/top_level.txt +0 -0
@@ -0,0 +1,822 @@
1
+ Metadata-Version: 2.4
2
+ Name: vouch-protocol
3
+ Version: 1.6.2
4
+ Summary: The Identity & Reputation Standard for AI Agents
5
+ Author-email: Vouch Protocol Contributors <hello@vouch-protocol.com>
6
+ License: Apache License 2.0
7
+ ==================
8
+
9
+ Copyright 2025 Vouch Protocol Contributors
10
+
11
+ Licensed under the Apache License, Version 2.0 (the "License");
12
+ you may not use this file except in compliance with the License.
13
+ You may obtain a copy of the License at
14
+
15
+ http://www.apache.org/licenses/LICENSE-2.0
16
+
17
+ Unless required by applicable law or agreed to in writing, software
18
+ distributed under the License is distributed on an "AS IS" BASIS,
19
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ See the License for the specific language governing permissions and
21
+ limitations under the License.
22
+
23
+ NOTE: The Vouch Protocol specification may be contributed to W3C
24
+ Verifiable Credentials Working Group as a separate standards track.
25
+
26
+ ================================================================================
27
+
28
+ Apache License
29
+ Version 2.0, January 2004
30
+ http://www.apache.org/licenses/
31
+
32
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
33
+
34
+ 1. Definitions.
35
+
36
+ "License" shall mean the terms and conditions for use, reproduction,
37
+ and distribution as defined by Sections 1 through 9 of this document.
38
+
39
+ "Licensor" shall mean the copyright owner or entity authorized by
40
+ the copyright owner that is granting the License.
41
+
42
+ "Legal Entity" shall mean the union of the acting entity and all
43
+ other entities that control, are controlled by, or are under common
44
+ control with that entity. For the purposes of this definition,
45
+ "control" means (i) the power, direct or indirect, to cause the
46
+ direction or management of such entity, whether by contract or
47
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
48
+ outstanding shares, or (iii) beneficial ownership of such entity.
49
+
50
+ "You" (or "Your") shall mean an individual or Legal Entity
51
+ exercising permissions granted by this License.
52
+
53
+ "Source" form shall mean the preferred form for making modifications,
54
+ including but not limited to software source code, documentation
55
+ source, and configuration files.
56
+
57
+ "Object" form shall mean any form resulting from mechanical
58
+ transformation or translation of a Source form, including but
59
+ not limited to compiled object code, generated documentation,
60
+ and conversions to other media types.
61
+
62
+ "Work" shall mean the work of authorship, whether in Source or
63
+ Object form, made available under the License, as indicated by a
64
+ copyright notice that is included in or attached to the work
65
+ (an example is provided in the Appendix below).
66
+
67
+ "Derivative Works" shall mean any work, whether in Source or Object
68
+ form, that is based on (or derived from) the Work and for which the
69
+ editorial revisions, annotations, elaborations, or other modifications
70
+ represent, as a whole, an original work of authorship. For the purposes
71
+ of this License, Derivative Works shall not include works that remain
72
+ separable from, or merely link (or bind by name) to the interfaces of,
73
+ the Work and Derivative Works thereof.
74
+
75
+ "Contribution" shall mean any work of authorship, including
76
+ the original version of the Work and any modifications or additions
77
+ to that Work or Derivative Works thereof, that is intentionally
78
+ submitted to Licensor for inclusion in the Work by the copyright owner
79
+ or by an individual or Legal Entity authorized to submit on behalf of
80
+ the copyright owner. For the purposes of this definition, "submitted"
81
+ means any form of electronic, verbal, or written communication sent
82
+ to the Licensor or its representatives, including but not limited to
83
+ communication on electronic mailing lists, source code control systems,
84
+ and issue tracking systems that are managed by, or on behalf of, the
85
+ Licensor for the purpose of discussing and improving the Work, but
86
+ excluding communication that is conspicuously marked or otherwise
87
+ designated in writing by the copyright owner as "Not a Contribution."
88
+
89
+ "Contributor" shall mean Licensor and any individual or Legal Entity
90
+ on behalf of whom a Contribution has been received by Licensor and
91
+ subsequently incorporated within the Work.
92
+
93
+ 2. Grant of Copyright License. Subject to the terms and conditions of
94
+ this License, each Contributor hereby grants to You a perpetual,
95
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
96
+ copyright license to reproduce, prepare Derivative Works of,
97
+ publicly display, publicly perform, sublicense, and distribute the
98
+ Work and such Derivative Works in Source or Object form.
99
+
100
+ 3. Grant of Patent License. Subject to the terms and conditions of
101
+ this License, each Contributor hereby grants to You a perpetual,
102
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
103
+ (except as stated in this section) patent license to make, have made,
104
+ use, offer to sell, sell, import, and otherwise transfer the Work,
105
+ where such license applies only to those patent claims licensable
106
+ by such Contributor that are necessarily infringed by their
107
+ Contribution(s) alone or by combination of their Contribution(s)
108
+ with the Work to which such Contribution(s) was submitted. If You
109
+ institute patent litigation against any entity (including a
110
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
111
+ or a Contribution incorporated within the Work constitutes direct
112
+ or contributory patent infringement, then any patent licenses
113
+ granted to You under this License for that Work shall terminate
114
+ as of the date such litigation is filed.
115
+
116
+ 4. Redistribution. You may reproduce and distribute copies of the
117
+ Work or Derivative Works thereof in any medium, with or without
118
+ modifications, and in Source or Object form, provided that You
119
+ meet the following conditions:
120
+
121
+ (a) You must give any other recipients of the Work or
122
+ Derivative Works a copy of this License; and
123
+
124
+ (b) You must cause any modified files to carry prominent notices
125
+ stating that You changed the files; and
126
+
127
+ (c) You must retain, in the Source form of any Derivative Works
128
+ that You distribute, all copyright, patent, trademark, and
129
+ attribution notices from the Source form of the Work,
130
+ excluding those notices that do not pertain to any part of
131
+ the Derivative Works; and
132
+
133
+ (d) If the Work includes a "NOTICE" text file as part of its
134
+ distribution, then any Derivative Works that You distribute must
135
+ include a readable copy of the attribution notices contained
136
+ within such NOTICE file, excluding those notices that do not
137
+ pertain to any part of the Derivative Works, in at least one
138
+ of the following places: within a NOTICE text file distributed
139
+ as part of the Derivative Works; within the Source form or
140
+ documentation, if provided along with the Derivative Works; or,
141
+ within a display generated by the Derivative Works, if and
142
+ wherever such third-party notices normally appear. The contents
143
+ of the NOTICE file are for informational purposes only and
144
+ do not modify the License. You may add Your own attribution
145
+ notices within Derivative Works that You distribute, alongside
146
+ or as an addendum to the NOTICE text from the Work, provided
147
+ that such additional attribution notices cannot be construed
148
+ as modifying the License.
149
+
150
+ You may add Your own copyright statement to Your modifications and
151
+ may provide additional or different license terms and conditions
152
+ for use, reproduction, or distribution of Your modifications, or
153
+ for any such Derivative Works as a whole, provided Your use,
154
+ reproduction, and distribution of the Work otherwise complies with
155
+ the conditions stated in this License.
156
+
157
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
158
+ any Contribution intentionally submitted for inclusion in the Work
159
+ by You to the Licensor shall be under the terms and conditions of
160
+ this License, without any additional terms or conditions.
161
+ Notwithstanding the above, nothing herein shall supersede or modify
162
+ the terms of any separate license agreement you may have executed
163
+ with Licensor regarding such Contributions.
164
+
165
+ 6. Trademarks. This License does not grant permission to use the trade
166
+ names, trademarks, service marks, or product names of the Licensor,
167
+ except as required for reasonable and customary use in describing the
168
+ origin of the Work and reproducing the content of the NOTICE file.
169
+
170
+ 7. Disclaimer of Warranty. Unless required by applicable law or
171
+ agreed to in writing, Licensor provides the Work (and each
172
+ Contributor provides its Contributions) on an "AS IS" BASIS,
173
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
174
+ implied, including, without limitation, any warranties or conditions
175
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
176
+ PARTICULAR PURPOSE. You are solely responsible for determining the
177
+ appropriateness of using or redistributing the Work and assume any
178
+ risks associated with Your exercise of permissions under this License.
179
+
180
+ 8. Limitation of Liability. In no event and under no legal theory,
181
+ whether in tort (including negligence), contract, or otherwise,
182
+ unless required by applicable law (such as deliberate and grossly
183
+ negligent acts) or agreed to in writing, shall any Contributor be
184
+ liable to You for damages, including any direct, indirect, special,
185
+ incidental, or consequential damages of any character arising as a
186
+ result of this License or out of the use or inability to use the
187
+ Work (including but not limited to damages for loss of goodwill,
188
+ work stoppage, computer failure or malfunction, or any and all
189
+ other commercial damages or losses), even if such Contributor
190
+ has been advised of the possibility of such damages.
191
+
192
+ 9. Accepting Warranty or Additional Liability. While redistributing
193
+ the Work or Derivative Works thereof, You may choose to offer,
194
+ and charge a fee for, acceptance of support, warranty, indemnity,
195
+ or other liability obligations and/or rights consistent with this
196
+ License. However, in accepting such obligations, You may act only
197
+ on Your own behalf and on Your sole responsibility, not on behalf
198
+ of any other Contributor, and only if You agree to indemnify,
199
+ defend, and hold each Contributor harmless for any liability
200
+ incurred by, or claims asserted against, such Contributor by reason
201
+ of your accepting any such warranty or additional liability.
202
+
203
+ END OF TERMS AND CONDITIONS
204
+
205
+ Project-URL: Homepage, https://github.com/vouch-protocol/vouch
206
+ Project-URL: Bug Tracker, https://github.com/vouch-protocol/vouch/issues
207
+ Project-URL: Documentation, https://vouch-protocol.com
208
+ Keywords: ai,agents,identity,cryptography,did,verifiable-credentials
209
+ Classifier: Development Status :: 4 - Beta
210
+ Classifier: Intended Audience :: Developers
211
+ Classifier: License :: OSI Approved :: Apache Software License
212
+ Classifier: Programming Language :: Python :: 3
213
+ Classifier: Programming Language :: Python :: 3.9
214
+ Classifier: Programming Language :: Python :: 3.10
215
+ Classifier: Programming Language :: Python :: 3.11
216
+ Classifier: Programming Language :: Python :: 3.12
217
+ Classifier: Topic :: Security :: Cryptography
218
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
219
+ Requires-Python: >=3.9
220
+ Description-Content-Type: text/markdown
221
+ License-File: LICENSE
222
+ Requires-Dist: jwcrypto>=1.5.0
223
+ Requires-Dist: python-dateutil
224
+ Requires-Dist: cryptography
225
+ Requires-Dist: pydantic>=2.0.0
226
+ Requires-Dist: httpx>=0.24.0
227
+ Requires-Dist: pqcrypto>=0.4.0
228
+ Provides-Extra: langchain
229
+ Requires-Dist: langchain>=0.1.0; extra == "langchain"
230
+ Provides-Extra: crewai
231
+ Requires-Dist: crewai>=0.1.0; extra == "crewai"
232
+ Provides-Extra: autogen
233
+ Requires-Dist: pyautogen>=0.2.0; extra == "autogen"
234
+ Provides-Extra: mcp
235
+ Requires-Dist: mcp>=1.2.0; extra == "mcp"
236
+ Provides-Extra: vertex
237
+ Requires-Dist: google-cloud-aiplatform>=1.0.0; extra == "vertex"
238
+ Provides-Extra: streamlit
239
+ Requires-Dist: streamlit>=1.0.0; extra == "streamlit"
240
+ Provides-Extra: server
241
+ Requires-Dist: fastapi>=0.100.0; extra == "server"
242
+ Requires-Dist: uvicorn>=0.23.0; extra == "server"
243
+ Provides-Extra: enterprise
244
+ Requires-Dist: redis>=5.0.0; extra == "enterprise"
245
+ Requires-Dist: prometheus-client>=0.17.0; extra == "enterprise"
246
+ Provides-Extra: aws
247
+ Requires-Dist: aioboto3>=12.0.0; extra == "aws"
248
+ Provides-Extra: gcp
249
+ Requires-Dist: google-cloud-kms>=2.0.0; extra == "gcp"
250
+ Provides-Extra: azure
251
+ Requires-Dist: azure-keyvault-keys>=4.0.0; extra == "azure"
252
+ Provides-Extra: pq
253
+ Provides-Extra: tracing
254
+ Requires-Dist: opentelemetry-api>=1.20.0; extra == "tracing"
255
+ Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "tracing"
256
+ Requires-Dist: opentelemetry-instrumentation-httpx>=0.40b0; extra == "tracing"
257
+ Provides-Extra: media
258
+ Requires-Dist: Pillow>=10.0.0; extra == "media"
259
+ Requires-Dist: base58>=2.1.0; extra == "media"
260
+ Requires-Dist: qrcode>=7.4.0; extra == "media"
261
+ Requires-Dist: c2pa-python>=0.5.0; extra == "media"
262
+ Provides-Extra: dev
263
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
264
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
265
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
266
+ Requires-Dist: black>=23.0.0; extra == "dev"
267
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
268
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
269
+ Requires-Dist: Pillow>=10.0.0; extra == "dev"
270
+ Requires-Dist: base58>=2.1.0; extra == "dev"
271
+ Requires-Dist: qrcode>=7.4.0; extra == "dev"
272
+ Requires-Dist: c2pa-python>=0.5.0; extra == "dev"
273
+ Provides-Extra: all
274
+ Requires-Dist: vouch-protocol[autogen,crewai,dev,enterprise,langchain,mcp,server,streamlit,tracing,vertex]; extra == "all"
275
+ Dynamic: license-file
276
+
277
+ # Vouch Protocol™
278
+
279
+ <p align="center">
280
+ <img src="docs/assets/vouch-wordmark.png" alt="Vouch Protocol" width="400">
281
+ </p>
282
+
283
+ <sub><em>Vouch Protocol™ — common-law trademark.</em></sub>
284
+
285
+ <p align="center">The Open Standard for Identity & Provenance of AI Agents</strong>
286
+ </p>
287
+
288
+ <p align="center">
289
+ <a href="https://c2pa.org"><img src="https://img.shields.io/badge/C2PA-Member-0891b2?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek0xMCAMTdsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=" alt="C2PA Member"></a>
290
+ <a href="https://contentauthenticity.org"><img src="https://img.shields.io/badge/CAI-Member-f97316?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptMCAyLjE4bDcgMy4xMnY1LjdjMCA0LjgzLTMuMjMgOS4zNi03IDEwLjU4VjMuMTh6Ii8+PC9zdmc+" alt="CAI Member"></a>
291
+ <a href="https://identity.foundation"><img src="https://img.shields.io/badge/DIF-Member-6F2DA8?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIvPjwvc3ZnPg==" alt="DIF Member"></a>
292
+ <a href="https://lfaidata.foundation"><img src="https://img.shields.io/badge/Linux_Foundation-Member-333333?style=for-the-badge&logo=linux-foundation&logoColor=white" alt="Linux Foundation Member"></a>
293
+ </p>
294
+
295
+ <p align="center">
296
+ <a href="https://github.com/vouch-protocol/vouch"><img src="https://img.shields.io/badge/Protected_by-Vouch_Protocol-00C853?style=flat&labelColor=333&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsPSIjMDBDODUzIiBkPSJNMTIgMjBMMiA0aDRsNiAxMC41TDE4IDRoNEwxMiAyMHoiLz48L3N2Zz4=" alt="Protected by Vouch"></a>
297
+ <a href="https://www.bestpractices.dev/projects/11688"><img src="https://www.bestpractices.dev/projects/11688/badge" alt="OpenSSF Silver"></a>
298
+ <a href="https://codecov.io/gh/vouch-protocol/vouch"><img src="https://codecov.io/gh/vouch-protocol/vouch/branch/main/graph/badge.svg" alt="Code Coverage"></a>
299
+ <a href="https://discord.gg/mMqx5cG9Y"><img src="https://img.shields.io/badge/Discord-Join_Community-7289da?logo=discord&logoColor=white" alt="Discord"></a>
300
+ </p>
301
+
302
+ <p align="center">
303
+ <a href="https://github.com/vouch-protocol/vouch/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="Apache 2.0 License"></a>
304
+ </p>
305
+
306
+ ---
307
+
308
+ ## Quick Start
309
+
310
+ ```bash
311
+ pip install vouch-protocol
312
+
313
+ # One command to configure SSH signing + Vouch branding
314
+ vouch git init
315
+
316
+ # All future commits are now signed and show ✅ Verified on GitHub
317
+ git commit -m "Secure commit"
318
+ ```
319
+
320
+ ---
321
+
322
+ ## What's New in v1.0
323
+
324
+ Vouch Protocol v1.0 aligns directly with the open standard:
325
+
326
+ - **Verifiable Credentials** as the credential format (replacing v0.x JWS tokens).
327
+ - **Data Integrity proofs** with the `eddsa-jcs-2022` cryptosuite (no JOSE, no Base64-wrapped payload, the credential remains human-readable JSON).
328
+ - **Multikey verification methods** in DID Documents (algorithm-agnostic, ML-DSA-44 ready).
329
+ - **Hybrid post-quantum profile** (`hybrid-eddsa-mldsa44-jcs-2026`) as an optional add-on for regulated deployments aligning with NIST CNSA 2.0 / NSM-10 timelines.
330
+ - **Three-way cross-implementation interop** verified across Python, TypeScript, and Go.
331
+
332
+ The legacy v0.x JWS API (`Signer.sign()`, `Verifier.verify()`) continues to work unchanged for a deprecation window. New code should prefer `Signer.sign_credential()` and `Verifier.verify_credential()`. See the Specification at [vouch-protocol.com/specs/SPEC/](https://vouch-protocol.com/specs/SPEC/) for the full specification.
333
+
334
+ ---
335
+
336
+ > **The Open Standard for AI Agent Identity & Accountability**
337
+ >
338
+ > When Anthropic launched MCP, they solved "how agents call tools."
339
+ > They didn't solve "how we TRUST those agents."
340
+ >
341
+ > **Vouch Protocol is the SSL certificate for AI agents.**
342
+
343
+ Vouch is not one tool, it is a set of them. Here is the whole map.
344
+
345
+ ### On the command line
346
+ - **`vouch init`** generate an agent identity (a DID and keypair).
347
+ - **`vouch sign` / `vouch verify`** sign a payload and verify it.
348
+ - **`vouch git`** sign every git commit cryptographically, set up in one command, with a verified badge for your README.
349
+ - **`vouch scan`** find leaked Vouch key material in your code before it ships (a private key in a file, a seed in an env var, a DID document that accidentally carries a private key).
350
+ - **`vouch attribute`** separate who wrote which line. When an AI assistant and a human both edit a file, this records the AI's lines under the AI's own key and your lines under yours, so when a line causes an incident you can prove which of you wrote it. See [the Claude Code integration](vouch/integrations/claude-code/README.md).
351
+ - **`vouch media`** sign images, with C2PA support.
352
+
353
+ ### For your agents
354
+ - **MCP server (`vouch-mcp`)** a standalone Model Context Protocol server so any MCP client (Claude Desktop, Cursor, any agent) can create an identity, sign and verify credentials, scan for leaked keys, and decode DIDs, out of the box.
355
+ - **Identity Sidecar** keeps signing keys out of the model's context, so a prompt injection cannot read them.
356
+ - **Vouch Shield** a runtime check that inspects every tool call against your rules, like a customs officer at the door.
357
+ - **Continuous trust** heartbeats and session vouchers, so trust is a live signal that has to be renewed, not a badge that is issued once and trusted forever.
358
+
359
+ ### Framework integrations (coming soon)
360
+ Standalone packages that drop Vouch into the agent framework you already use. Each one issues a verifiable credential for a tool call, with optional delegation back to a human principal. Landing on PyPI with v1.6.2.
361
+ - **`vouch-langchain`** a LangChain tool that signs each tool call before it leaves the agent.
362
+ - **`vouch-crewai`** a CrewAI tool, with supervisor-to-worker delegation that can only narrow authority, never widen it.
363
+ - **`vouch-a2a`** binds an A2A (Agent2Agent) Agent Card to a Vouch identity, so two agents can verify each other before they collaborate.
364
+ - **`vouch-mlflow`** signs an MLflow model artifact at registration time, bound to a content digest so any change to the weights breaks the signature.
365
+ - **`vouch-safetensors`** embeds a credential in a `.safetensors` header, complementary to OpenSSF Model Signing, so a model carries who produced it.
366
+
367
+ The standalone **`vouch-mcp`** package above ships alongside these in v1.6.2.
368
+
369
+ ### SDKs, in the language you use
370
+ Python, TypeScript, and Go are the full reference implementations. A Rust core with idiomatic Swift, JVM (Java and Kotlin), .NET, and C wrappers shares one codebase, so every language produces byte-identical output, verified against shared test vectors. A WebAssembly build is included for the browser and the edge. See the table further down for status per language.
371
+
372
+ ### Robots and embodied agents
373
+ A robot is an agent with a body, so the same primitives apply: a `did:vouch:agent` identity, delegation chains for who authorized it, and continuous trust for whether it is still behaving. Vouch adds a hardware-root-of-trust profile, so a robot's secure element (a TPM or a secure enclave) anchors its DID and signs its heartbeats, binding identity to the physical device rather than a config file. This is the open identity layer; richer robot-lifecycle tooling builds on top of it. See the open `did:vouch:agent` profile in [docs/specs/](docs/specs/).
374
+
375
+ ### Inside your AI tools
376
+ - **Claude Skill**, **OpenAI Custom GPT**, and **Gemini Gem** packages that teach your AI assistant how to add Vouch to your code, running on your own AI subscription.
377
+
378
+ ### Media and the web
379
+ - **C2PA Content Credentials** for images.
380
+ - **Vouch Sonic** an audio watermark that carries provenance through sound.
381
+ - **Browser extension** for Chrome and Edge that signs and verifies content on the page.
382
+
383
+ ### For your repositories
384
+ - **Gatekeeper GitHub App** verifies commit signatures on every pull request and blocks leaked Vouch keys before they merge.
385
+
386
+ ### For the ecosystem
387
+ - **Agent Trust Index** an open benchmark that scans agents in the wild and measures how many can actually prove who they are. (Spoiler: today, almost none.)
388
+
389
+ [Read the spec →](https://github.com/vouch-protocol/vouch/blob/main/docs/vouch_guide.md) | [Join Discord →](https://discord.gg/mMqx5cG9Y)
390
+
391
+ ---
392
+
393
+ ## The Problem
394
+
395
+ AI agents are making real-world API calls with **ZERO cryptographic proof** of:
396
+ - **WHO** they are
397
+ - **WHAT** they intended to do
398
+ - **WHEN** they did it
399
+
400
+ **Examples of the risk:**
401
+ - Healthcare AI accesses patient data → HIPAA violation risk
402
+ - Financial AI makes unauthorized trades → Liability nightmare
403
+ - Customer service AI leaks data → Compliance failure
404
+
405
+ **Current solutions:**
406
+ - **DIY JWT signing** → No agent-specific features, security mistakes easy
407
+ - **Nothing** → Most people just YOLO it and hope for the best
408
+
409
+ ---
410
+
411
+ ## The Solution
412
+
413
+ **Vouch Protocol** provides cryptographic identity for AI agents, modeled after SSL/TLS:
414
+
415
+ - **Verifiable Credentials** (VC Data Model 2.0)
416
+ - **Data Integrity proofs** (`eddsa-jcs-2022` cryptosuite, no JOSE/JWS dependency)
417
+ - **Decentralized Identifiers** (`did:web`, `did:key`)
418
+ - **Multikey verification methods** (algorithm-agnostic, post-quantum ready)
419
+ - **Hybrid post-quantum profile** (optional Ed25519 + ML-DSA-44 composite, `hybrid-eddsa-mldsa44-jcs-2026`)
420
+ - **Human-readable JSON** (proof attaches as a sibling object, no Base64-wrapped opaque payload)
421
+ - **Framework-agnostic** (works with MCP, LangChain, CrewAI, AutoGPT, AutoGen, Vertex AI)
422
+ - **Cross-language interop** (Python, TypeScript, Go, byte-identical canonical form)
423
+ - **Backward-compatible** (legacy v0.x JWS API still supported during deprecation window)
424
+ - **Open source** (Apache 2.0 license, CC0 prior-art portfolio)
425
+
426
+ **Think of it as:**
427
+ - SSL certificate = Proves website identity
428
+ - **Vouch Protocol = Proves AI agent identity**
429
+
430
+ ---
431
+
432
+ ## How It Works
433
+
434
+ ### The Workflow
435
+
436
+ ```mermaid
437
+ flowchart LR
438
+ P["👤 Principal<br/>did:web:user.example.com"]
439
+ A["🤖 AI Agent<br/>did:web:agent.example.com<br/>+ Identity Sidecar"]
440
+ C["📄 Vouch Credential<br/>VC + Data Integrity<br/>(eddsa-jcs-2022)"]
441
+ API["🔐 API Endpoint"]
442
+ V{"✅ Verified"}
443
+
444
+ P -->|"Delegation VC"| A
445
+ A -->|"sign_credential(intent)"| C
446
+ C -->|"HTTP body<br/>application/vc+vouch"| API
447
+ API -->|"verify_credential()"| V
448
+ ```
449
+
450
+ **4 Simple Steps:**
451
+ 1. **Generate Identity**: Create an Ed25519 keypair and a DID, publish a DID Document with a Multikey verification method.
452
+ 2. **Sign Action**: Agent's sidecar issues a Verifiable Credential carrying `action`, `target`, and `resource`, secured by an `eddsa-jcs-2022` Data Integrity proof.
453
+ 3. **Send to API**: Transmit the credential as the HTTP request body with `Content-Type: application/vc+vouch` (or via the legacy `Vouch-Token` header for v0.x compatibility; the prior `application/vouch+credential+json` Content-Type is retained as a transitional alias).
454
+ 4. **Verify**: API resolves the issuer's DID, validates the Data Integrity proof, checks temporal claims and the resource binding, returns a `CredentialPassport`.
455
+
456
+ ### The Trust Model
457
+
458
+ ```mermaid
459
+ flowchart TB
460
+ subgraph IDENTITY["Identity Layer"]
461
+ DID["DID<br/>did:web / did:key"]
462
+ MK["Multikey<br/>algorithm-agnostic key encoding"]
463
+ end
464
+ subgraph FORMAT["Credential Layer"]
465
+ VC["Verifiable Credential<br/>(VC Data Model 2.0)"]
466
+ INTENT["Intent payload<br/>action · target · resource"]
467
+ end
468
+ subgraph CRYPTO["Cryptographic Proof"]
469
+ JCS["JCS canonicalization (RFC 8785)"]
470
+ DEFAULT["eddsa-jcs-2022<br/>(Ed25519, default)"]
471
+ HYBRID["hybrid-eddsa-mldsa44-jcs-2026<br/>(Ed25519 + ML-DSA-44, optional)"]
472
+ end
473
+ IDENTITY --> FORMAT
474
+ FORMAT --> CRYPTO
475
+ JCS --> DEFAULT
476
+ JCS --> HYBRID
477
+ ```
478
+
479
+ **Trust = Verifiable Credentials + Data Integrity + Decentralized Identifiers + Multikey, with optional hybrid post-quantum signatures.** The same math that secures SSL/TLS, plus the standardized primitives that secure verifiable credentials elsewhere on the web, applied to AI agents.
480
+
481
+ ---
482
+
483
+ ## Why Vouch Protocol?
484
+
485
+ ### vs. DIY JWT
486
+
487
+ | Feature | Vouch Protocol | DIY JWT |
488
+ |---------|---------------|---------|
489
+ | **Agent-specific** | ✅ (designed for agents) | ❌ (generic) |
490
+ | **MCP integration** | ✅ (native) | ❌ (manual) |
491
+ | **Framework integrations** | ✅ (LangChain, CrewAI, etc.) | ❌ |
492
+ | **Audit trail format** | ✅ (VC standardized) | ❌ (custom) |
493
+ | **standards-aligned** | ✅ (`eddsa-jcs-2022` Data Integrity) | ❌ |
494
+ | **Multikey verification methods** | ✅ (algorithm-agnostic) | ❌ |
495
+ | **Hybrid post-quantum signatures** | ✅ (`hybrid-eddsa-mldsa44-jcs-2026`) | ❌ |
496
+ | **Cross-implementation interop tests** | ✅ (Python, TypeScript, Go) | ❌ |
497
+ | **Security best practices** | ✅ (built-in) | ⚠️ (easy to mess up) |
498
+
499
+ ---
500
+
501
+ ## Quick Start
502
+
503
+ ### 1. Install
504
+ ```bash
505
+ pip install vouch-protocol
506
+ ```
507
+
508
+ ### 2. Generate Identity
509
+ ```bash
510
+ vouch init --domain your-agent.com
511
+ ```
512
+
513
+ ### 3. Sign an Action (Agent Side)
514
+
515
+ **v1.0 path (VC + Data Integrity, recommended):**
516
+ ```python
517
+ from vouch import Signer
518
+ import os
519
+
520
+ signer = Signer(
521
+ private_key=os.environ['VOUCH_PRIVATE_KEY'],
522
+ did=os.environ['VOUCH_DID']
523
+ )
524
+
525
+ credential = signer.sign_credential(intent={
526
+ 'action': 'read_database',
527
+ 'target': 'users_table',
528
+ 'resource': 'https://api.example.com/v1/users',
529
+ })
530
+ # Send credential as the JSON body of the API request, content-type
531
+ # application/vc+vouch (legacy: application/vouch+credential+json)
532
+ ```
533
+
534
+ **Legacy v0.x path (JWS, still supported):**
535
+ ```python
536
+ token = signer.sign({'action': 'read_database', 'target': 'users'})
537
+ # Include token in Vouch-Token header
538
+ ```
539
+
540
+ ### 4. Verify (API Side)
541
+
542
+ **v1.0 path:**
543
+ ```python
544
+ from fastapi import FastAPI, Request, HTTPException
545
+ from vouch import Verifier
546
+
547
+ app = FastAPI()
548
+
549
+ @app.post("/api/resource")
550
+ async def protected_route(request: Request):
551
+ credential = await request.json()
552
+ public_key = '{"kty":"OKP", ...}' # Resolved from did:web or trusted root
553
+
554
+ is_valid, passport = Verifier.verify_credential(credential, public_key=public_key)
555
+ if not is_valid:
556
+ raise HTTPException(status_code=401, detail="Untrusted Agent")
557
+
558
+ return {
559
+ "status": "Verified",
560
+ "agent": passport.sub,
561
+ "intent": passport.intent,
562
+ }
563
+ ```
564
+
565
+ **Legacy v0.x path:**
566
+ ```python
567
+ from vouch import Verifier
568
+
569
+ @app.post("/api/legacy")
570
+ def legacy_route(vouch_token: str = Header(alias="Vouch-Token")):
571
+ is_valid, passport = Verifier.verify(vouch_token, public_key_jwk=public_key)
572
+ if not is_valid:
573
+ raise HTTPException(status_code=401, detail="Untrusted Agent")
574
+ return {"status": "Verified", "agent": passport.sub}
575
+ ```
576
+
577
+ **That's it.** A few lines to sign, a few to verify, on either path.
578
+
579
+ ---
580
+
581
+ ## Integrations
582
+
583
+ Works with all major AI frameworks out-of-the-box:
584
+
585
+ - **Model Context Protocol (MCP)**: native integration for Claude Desktop and Cursor
586
+ - **LangChain**: sign tool calls automatically
587
+ - **CrewAI**: multi-agent identity management
588
+ - **AutoGPT**: autonomous agent signing
589
+ - **AutoGen**: Microsoft multi-agent framework
590
+ - **Google Vertex AI**: sign function calls
591
+ - **Google ADK**: native ADK tool integration
592
+ - **n8n**: low-code agent workflows
593
+
594
+ [See all integrations →](https://github.com/vouch-protocol/vouch/tree/main/vouch/integrations)
595
+
596
+ ---
597
+
598
+ ## Enterprise Features
599
+
600
+ - **Key Rotation**: automatic rotating keys for production
601
+ - **Voice AI Signing**: sign audio frames in real-time
602
+ - **Cloud KMS**: AWS KMS, GCP Cloud KMS, Azure Key Vault
603
+ - **Reputation Scoring**: track agent behavior over time
604
+ - **Revocation Registry**: blacklist compromised keys
605
+ - **Redis Caching**: production-scale verification
606
+ - **Hybrid Post-Quantum Profile**: optional Ed25519 + ML-DSA-44 composite signatures (`hybrid-eddsa-mldsa44-jcs-2026`) for regulated deployments aligning with NIST CNSA 2.0 / NSM-10 migration timelines
607
+
608
+ ### Hybrid Post-Quantum Example
609
+
610
+ ```python
611
+ # Optional v1.0 profile, requires `pip install pqcrypto`
612
+ credential = signer.sign_credential_hybrid(intent={
613
+ 'action': 'submit_clinical_finding',
614
+ 'target': 'trial:NCT00000001',
615
+ 'resource': 'https://fda-submissions.example.com/api/findings',
616
+ })
617
+ # Carries both Ed25519 and ML-DSA-44 signatures over the same JCS canonical form.
618
+ # Verification REQUIRES both to validate.
619
+ ```
620
+
621
+ ---
622
+
623
+ ## Use Cases
624
+
625
+ ### Financial Services
626
+ ```python
627
+ # SEC-compliant trade logging
628
+ agent.sign({'action': 'execute_trade', 'amount': 10000, 'symbol': 'AAPL'})
629
+ ```
630
+
631
+ ### Customer Service
632
+ ```python
633
+ # Data access accountability
634
+ agent.sign({'action': 'read_customer_data', 'customer_id': 'cust_abc'})
635
+ ```
636
+
637
+ ### Healthcare AI
638
+ ```python
639
+ # HIPAA-compliant audit trail
640
+ agent.sign({'action': 'access_phi', 'patient_id': '12345'})
641
+ ```
642
+
643
+ To keep this space free from patent capture, the project publishes **61 defensive prior-art disclosures** under CC0, covering cryptographic identity, media provenance, voice biometrics, AI safety, post-quantum cryptography, AI coding governance, and per-region human-or-AI code authorship. See [docs/disclosures](docs/disclosures/README.md).
644
+
645
+ ---
646
+
647
+ ## Use cases
648
+
649
+ - **Financial services.** A signed, accountable record of every trade or transfer an agent makes.
650
+ - **Healthcare.** An auditable trail for every access to patient data.
651
+ - **Customer service.** Proof of which agent touched which customer record, and on whose authority.
652
+ - **Agent to agent.** When one organization's agent calls another's, each can verify the other before acting.
653
+
654
+ [See full examples →](https://github.com/vouch-protocol/vouch/tree/main/examples)
655
+
656
+ ---
657
+
658
+ ## Documentation
659
+
660
+ - [Quick Start](https://github.com/vouch-protocol/vouch#quick-start)
661
+ - [Vouch Specification (v1.6 normative)](https://vouch-protocol.com/specs/)
662
+ - [Hybrid Post-Quantum Implementation Guide](https://github.com/vouch-protocol/vouch/blob/main/docs/hybrid-pq-implementation-guide.md)
663
+ - [Protocol Specification (developer guide)](https://github.com/vouch-protocol/vouch/blob/main/docs/vouch_guide.md)
664
+ - [Integration Guides](https://github.com/vouch-protocol/vouch/tree/main/vouch/integrations)
665
+ - [Threat Model and Security Considerations](https://github.com/vouch-protocol/vouch/blob/main/docs/THREAT_MODEL.md)
666
+ - [Defensive Prior Art Disclosures (61 PADs, CC0)](https://github.com/vouch-protocol/vouch/tree/main/docs/disclosures)
667
+ - [FAQ and Discussions](https://github.com/vouch-protocol/vouch/discussions)
668
+
669
+ ---
670
+
671
+ ## Community
672
+
673
+ - **Discord** - Ask questions, share use cases → [Join now](https://discord.gg/mMqx5cG9Y)
674
+ - **GitHub Discussions** - Technical discussions → [Start a discussion](https://github.com/vouch-protocol/vouch/discussions)
675
+ - **Twitter/X** - Updates and announcements → [@Vouch_Protocol](https://x.com/Vouch_Protocol)
676
+
677
+ ---
678
+
679
+ ## Roadmap
680
+
681
+ ### v1.6 (current release)
682
+
683
+ - [x] **Verifiable Credentials + Data Integrity** (`eddsa-jcs-2022` cryptosuite)
684
+ - [x] **Multikey verification methods** (algorithm-agnostic, multibase + multicodec)
685
+ - [x] **Hybrid post-quantum profile** (`hybrid-eddsa-mldsa44-jcs-2026`, NIST CNSA 2.0 / NSM-10 aligned)
686
+ - [x] **Three-language reference implementation** (Python, TypeScript, Go) with byte-identical canonical form via RFC 8785 JCS, verified against shared test vectors
687
+ - [x] **Specification drafted** and submitted to the open standards group for incubation
688
+ - [x] **55 Prior Art Disclosures** (CC0 defensive publications)
689
+ - [x] Identity Sidecar architecture (LLM-isolated keys)
690
+ - [x] Heartbeat Protocol with adaptive Trust Entropy
691
+ - [x] Resource-bound delegation chains with capability narrowing
692
+ - [x] MCP integration (Claude Desktop, Cursor)
693
+ - [x] Framework adapters (LangChain, CrewAI, AutoGPT, AutoGen, Vertex AI, Google ADK, n8n)
694
+ - [x] C2PA Content Credentials integration
695
+ - [x] Audio watermarking (Vouch Sonic, sub-band steganography)
696
+ - [x] DID-linked voice biometric enrollment
697
+ - [x] Browser extension (Chrome / Edge content signing)
698
+ - [x] GitHub App and Cloudflare Workers verification gateway
699
+
700
+ ### Next (v1.7 and beyond)
701
+
702
+ - [ ] Independent third-party cryptographic security audit (Trail of Bits / NCC Group / Cure53)
703
+ - [ ] Specification stabilization and external review
704
+ - [ ] Algorithm Quorum verification (M-of-N cryptosuite diversity, per PAD-046)
705
+ - [ ] Verifiable Delay Function rate-limiting for high-stakes agent actions (per PAD-047)
706
+ - [ ] Cryptographic Weight Binding for model-intrinsic AI identity (per PAD-043)
707
+ - [ ] Ephemeral ZK-State Channels for high-frequency agent-to-agent negotiation (per PAD-044)
708
+ - [ ] Retrieval-anchored proof of non-hallucination (per PAD-045)
709
+ - [ ] Standardized agent ledger metadata schema (per PAD-042)
710
+ - [ ] Edge-first WASM + ONNX client-side processing
711
+ - [ ] Hardware key support (YubiKey, TPM, Secure Enclave)
712
+ - [ ] Native Rust implementation for edge and embedded deployments
713
+
714
+ [View full roadmap and issue tracker →](https://github.com/vouch-protocol/vouch/issues)
715
+
716
+ ---
717
+
718
+ ## License
719
+
720
+ **Apache License 2.0**: See [LICENSE](https://github.com/vouch-protocol/vouch/blob/main/LICENSE)
721
+
722
+ You can use this freely in commercial and open-source projects.
723
+
724
+ The 61 defensive prior-art disclosures are released under **CC0 1.0 Universal** to ensure ecosystem freedom from patent capture.
725
+
726
+ *The Vouch Protocol specification is being developed as a open standard submission via the open standards group. The implementation is also being proposed to the Linux Foundation's AI & Data Foundation.*
727
+
728
+ ---
729
+
730
+ ## Acknowledgments
731
+
732
+ Inspired by:
733
+ - **SSL/TLS** (the gold standard for identity)
734
+ - **OAuth 2.0** (federated identity done right)
735
+ - **Verifiable Credentials** (the future of digital identity)
736
+
737
+ Built by [Ramprasad Gaddam](https://www.linkedin.com/in/rampy) ([Twitter/X](https://x.com/rampyg))
738
+
739
+ ---
740
+
741
+ ## Contributing
742
+
743
+ Contributions welcome. See [CONTRIBUTING.md](https://github.com/vouch-protocol/vouch/blob/main/CONTRIBUTING.md).
744
+
745
+ **Areas where help is most useful:**
746
+ - [ ] Additional framework integrations (Haystack, Semantic Kernel, LlamaIndex, others)
747
+ - [ ] Cross-implementation interop test vectors (additional edge cases for JCS, VC, hybrid PQ)
748
+ - [ ] Tutorials and worked examples for regulated-sector deployments
749
+ - [ ] Independent security review and audit
750
+ - [ ] Reference implementations in additional languages (Rust, Java, .NET)
751
+
752
+ ---
753
+
754
+ **Star this repo if you find it useful.**
755
+
756
+ [Star on GitHub](https://github.com/vouch-protocol/vouch) | [Join Discord](https://discord.gg/mMqx5cG9Y) | [Follow on X](https://x.com/Vouch_Protocol)
757
+
758
+ ---
759
+
760
+ ## Prior Art Disclosures
761
+
762
+ To ensure ecosystem freedom, we publish **55 defensive prior art disclosures** (CC0 public domain) covering novel methods across cryptographic identity, media provenance, voice biometrics, AI safety, post-quantum cryptography, AI coding assistant governance, and content authenticity:
763
+
764
+ | ID | Title | Category |
765
+ |----|-------|----------|
766
+ | [PAD-001](docs/disclosures/PAD-001-cryptographic-agent-identity.md) | Cryptographic Agent Identity | Identity |
767
+ | [PAD-002](docs/disclosures/PAD-002-chain-of-custody.md) | Chain of Custody Delegation | Identity |
768
+ | [PAD-003](docs/disclosures/PAD-003-identity-sidecar.md) | Identity Sidecar Pattern | Architecture |
769
+ | [PAD-004](docs/disclosures/PAD-004-smart-scan-verification.md) | DOM-Traversing Signature Matching | Verification |
770
+ | [PAD-005](docs/disclosures/PAD-005-reverse-lookup-registry.md) | Detached Signature Recovery | Verification |
771
+ | [PAD-006](docs/disclosures/PAD-006-trust-graph-url-chaining.md) | URL-Based Credential Chaining | Trust |
772
+ | [PAD-007](docs/disclosures/PAD-007-ghost-signature-telemetry.md) | Automated Provenance via Input Telemetry | Provenance |
773
+ | [PAD-008](docs/disclosures/PAD-008-hybrid-ssh-verification.md) | Hybrid Identity Bootstrapping | Identity |
774
+ | [PAD-009](docs/disclosures/PAD-009-localhost-identity-bridge.md) | Unified Local Identity via Localhost Bridge | Architecture |
775
+ | [PAD-010](docs/disclosures/PAD-010-semantic-consent-signing.md) | Context-Adaptive Semantic Consent | Privacy |
776
+ | [PAD-011](docs/disclosures/PAD-011-hierarchical-discovery-protocol.md) | Hierarchical Discovery Protocol | Discovery |
777
+ | [PAD-012](docs/disclosures/PAD-012-vouch-covenant.md) | Executable Usage Covenants in Media Manifests | Media / Rights |
778
+ | [PAD-013](docs/disclosures/PAD-013-vouch-airgap.md) | Air-Gapped Identity via Psychoacoustic Steganography | Audio |
779
+ | [PAD-014](docs/disclosures/PAD-014-vouch-sonic.md) | Robust Acoustic Provenance via Steganography | Audio |
780
+ | [PAD-015](docs/disclosures/PAD-015-ambient-witness-protocol.md) | Ambient Witness Protocol (BLE Crowdsourcing) | IoT / Provenance |
781
+ | [PAD-016](docs/disclosures/PAD-016-dynamic-credential-renewal.md) | Dynamic Credential Renewal ("Heartbeat Protocol") | Identity |
782
+ | [PAD-017](docs/disclosures/PAD-017-cryptographic-proof-of-reasoning.md) | Cryptographic Proof of Reasoning | AI Safety |
783
+ | [PAD-018](docs/disclosures/PAD-018-model-lineage-provenance.md) | Model Lineage Provenance ("Birth Certificate Protocol") | AI Safety |
784
+ | [PAD-019](docs/disclosures/PAD-019-glass-channel-protocol.md) | Transparent Agent Communication | AI Safety |
785
+ | [PAD-020](docs/disclosures/PAD-020-ratchet-lock-protocol.md) | Capability Acquisition Containment | AI Safety |
786
+ | [PAD-021](docs/disclosures/PAD-021-inverse-capability-protocol.md) | Graduated Autonomy via Inverse Capability Scaling | AI Safety |
787
+ | [PAD-022](docs/disclosures/PAD-022-swarm-limits-protocol.md) | Agent Population Governance | AI Safety |
788
+ | [PAD-023](docs/disclosures/PAD-023-content-policy-watermarking.md) | Machine-Readable Content Usage Policies in Audio Watermarks | Audio / Rights |
789
+ | [PAD-024](docs/disclosures/PAD-024-temporal-video-fingerprinting.md) | Temporal Perceptual Hashing for Video Provenance | Video |
790
+ | [PAD-025](docs/disclosures/PAD-025-edge-first-content-provenance.md) | Edge-First Content Provenance via Client-Side WASM | Architecture |
791
+ | [PAD-026](docs/disclosures/PAD-026-did-linked-voiceprint-enrollment.md) | DID-Linked Voice Biometric Enrollment | Voice / Biometrics |
792
+ | [PAD-027](docs/disclosures/PAD-027-shamir-split-biometric-recovery.md) | Shamir Secret Sharing of Biometric Enrollment Data | Recovery / Biometrics |
793
+ | [PAD-028](docs/disclosures/PAD-028-cross-modal-identity-provenance.md) | Unified Cross-Modal Identity-Bound Provenance | Multi-Modal / Identity |
794
+ | [PAD-029](docs/disclosures/PAD-029-eldear-scam-protection-identity.md) | Identity-Verified Communication Shield | Elder Safety / Voice |
795
+ | [PAD-030](docs/disclosures/PAD-030-zk-reputation-portability.md) | Zero-Knowledge Reputation Portability | Privacy / Trust |
796
+ | [PAD-031](docs/disclosures/PAD-031-canary-provenance-honeypots.md) | Adversarial Provenance Honeypots | Adversarial Detection |
797
+ | [PAD-032](docs/disclosures/PAD-032-cryptographic-mortality-protocol.md) | Cryptographic Mortality Protocol | Identity Lifecycle |
798
+ | [PAD-033](docs/disclosures/PAD-033-zk-pq-signature-compression.md) | ZK Proof Compression for Post-Quantum Signatures | Post-Quantum / ZKP |
799
+ | [PAD-034](docs/disclosures/PAD-034-composite-threshold-swarm-consensus.md) | Composite Threshold Aggregation for Swarm Consensus | Post-Quantum / Swarm |
800
+ | [PAD-035](docs/disclosures/PAD-035-async-chunked-edge-pq-signatures.md) | Asynchronous Chunked Verification and Edge PQ Signatures | Post-Quantum / Edge |
801
+ | [PAD-036](docs/disclosures/PAD-036-aggregated-reputation-scoring.md) | Aggregated Reputation Scoring via Verifiable State Receipts | Trust / Enterprise |
802
+ | [PAD-037](docs/disclosures/PAD-037-credential-federation.md) | Cross-Protocol Agent Credential Federation | Identity / Enterprise |
803
+ | [PAD-038](docs/disclosures/PAD-038-agent-capability-discovery.md) | Decentralized Agent Capability Discovery | Discovery / Multi-Agent |
804
+ | [PAD-039](docs/disclosures/PAD-039-jcs-deterministic-multi-party-trust-state.md) | Cross-Implementation Deterministic Multi-Party Trust State via JCS | Cross-Impl Determinism |
805
+ | [PAD-040](docs/disclosures/PAD-040-hybrid-composite-signature-same-canonical-bytes.md) | Hybrid Composite Signature Bound to Same Canonical Bytes (Ed25519 + ML-DSA-44) | Post-Quantum / Hybrid |
806
+ | [PAD-041](docs/disclosures/PAD-041-multikey-algorithm-agnostic-verification.md) | Algorithm-Agnostic Verification Method Resolution via Multikey Multicodec | Verification / Multikey |
807
+ | [PAD-042](docs/disclosures/PAD-042-standardized-metadata-schema-agent-ledger.md) | Standardized Metadata Schema for AI Agent Ledger Signatures | Metadata / Audit |
808
+ | [PAD-043](docs/disclosures/PAD-043-cryptographic-weight-binding.md) | Cryptographic Weight Binding for Model-Intrinsic AI Identity | AI Identity / Model |
809
+ | [PAD-044](docs/disclosures/PAD-044-ephemeral-zk-state-channels.md) | Ephemeral ZK-State Channels for Agentic Layer 2 Scalability | Scalability / ZK |
810
+ | [PAD-045](docs/disclosures/PAD-045-proof-of-non-hallucination-retrieval-anchoring.md) | Proof of Non-Hallucination via Cryptographic Retrieval Anchoring | AI Safety / RAG |
811
+ | [PAD-046](docs/disclosures/PAD-046-algorithm-quorum-cryptosuite-diversity.md) | Algorithm Quorum Verification via M-of-N Cryptosuite Diversity | Defense in Depth |
812
+ | [PAD-047](docs/disclosures/PAD-047-vdf-rate-limited-agent-actions.md) | Verifiable Delay Functions for Cryptographic Rate-Limiting | Agent Containment |
813
+ | [PAD-048](docs/disclosures/PAD-048-write-only-async-context-ledger.md) | Write-Only Async Context Ledger for LLM Coding Assistants | AI Coding / IP Protection |
814
+ | [PAD-049](docs/disclosures/PAD-049-decoupled-semantic-policy-extraction.md) | Decoupled Semantic Policy Extraction via Passive Source Monitoring | AI Coding / IP Protection |
815
+ | [PAD-050](docs/disclosures/PAD-050-zero-context-deterministic-egress-interception.md) | Zero-Context Deterministic Egress Interception | AI Coding / Egress Control |
816
+ | [PAD-051](docs/disclosures/PAD-051-parallel-intent-extraction-shadow-models.md) | Parallel Intent Extraction via Local Shadow Models | AI Coding / Local-First |
817
+ | [PAD-052](docs/disclosures/PAD-052-ui-state-sniffing-closed-box-ai-tools.md) | UI State Sniffing for Closed-Box AI Coding Tools | AI Coding / Compatibility |
818
+ | [PAD-053](docs/disclosures/PAD-053-time-bounded-ephemeral-rules.md) | Time-Bounded Ephemeral Rules with Auto-Expiry | AI Coding / Lifetime |
819
+ | [PAD-054](docs/disclosures/PAD-054-filesystem-hierarchy-policy-inheritance.md) | Filesystem-Hierarchy Policy Inheritance for AI Coding Workspaces | AI Coding / Composition |
820
+ | [PAD-055](docs/disclosures/PAD-055-cross-session-policy-re-anchoring.md) | Cross-Session Policy Re-Anchoring via Pre-Flight Context Replay | AI Coding / Continuity |
821
+
822
+ [View all disclosures →](docs/disclosures/README.md)