narna 0.1.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 (179) hide show
  1. narna-0.1.0/.gitignore +62 -0
  2. narna-0.1.0/LICENSE +21 -0
  3. narna-0.1.0/PKG-INFO +115 -0
  4. narna-0.1.0/README.md +82 -0
  5. narna-0.1.0/policies/local-default.yaml +14 -0
  6. narna-0.1.0/policies/trading-default.yaml +24 -0
  7. narna-0.1.0/pyproject.toml +58 -0
  8. narna-0.1.0/specs/ARCHITECTURE.md +89 -0
  9. narna-0.1.0/specs/README.md +73 -0
  10. narna-0.1.0/specs/RELEASE-v0.1.md +30 -0
  11. narna-0.1.0/specs/VERSION +1 -0
  12. narna-0.1.0/specs/audit/SPEC.md +54 -0
  13. narna-0.1.0/specs/capability/SPEC.md +63 -0
  14. narna-0.1.0/specs/certification/SPEC.md +109 -0
  15. narna-0.1.0/specs/compatibility/SPEC.md +42 -0
  16. narna-0.1.0/specs/constitution/SPEC.md +328 -0
  17. narna-0.1.0/specs/constitution-runtime/SPEC.md +89 -0
  18. narna-0.1.0/specs/examples/constitution.yaml +103 -0
  19. narna-0.1.0/specs/examples/evidence-api-response.json +25 -0
  20. narna-0.1.0/specs/examples/fleet.yaml +23 -0
  21. narna-0.1.0/specs/examples/narna-governance-binding.yaml +32 -0
  22. narna-0.1.0/specs/examples/narna.yaml +30 -0
  23. narna-0.1.0/specs/examples/packages/anthropic-constitution.yaml +47 -0
  24. narna-0.1.0/specs/examples/packages/brazil-lgpd.yaml +75 -0
  25. narna-0.1.0/specs/examples/packages/ccpa-cpra.yaml +82 -0
  26. narna-0.1.0/specs/examples/packages/china-pipl.yaml +75 -0
  27. narna-0.1.0/specs/examples/packages/eu-ai-act.yaml +98 -0
  28. narna-0.1.0/specs/examples/packages/gdpr.yaml +97 -0
  29. narna-0.1.0/specs/examples/packages/hipaa.yaml +90 -0
  30. narna-0.1.0/specs/examples/packages/iso-42001.yaml +70 -0
  31. narna-0.1.0/specs/examples/packages/nist-ai-rmf.yaml +76 -0
  32. narna-0.1.0/specs/examples/packages/pci-dss.yaml +82 -0
  33. narna-0.1.0/specs/examples/packages/singapore-ai-gov.yaml +76 -0
  34. narna-0.1.0/specs/examples/packages/soc2-tsc.yaml +80 -0
  35. narna-0.1.0/specs/examples/packages/uk-dpa.yaml +83 -0
  36. narna-0.1.0/specs/examples/policy-decision-ask.json +24 -0
  37. narna-0.1.0/specs/examples/policy-pack-local-default.yaml +21 -0
  38. narna-0.1.0/specs/examples/tool-coinbase-spot.json +31 -0
  39. narna-0.1.0/specs/examples/trading-agent.yaml +40 -0
  40. narna-0.1.0/specs/examples/trust-score.json +27 -0
  41. narna-0.1.0/specs/examples/universal-identity.json +20 -0
  42. narna-0.1.0/specs/execution-graph/SPEC.md +45 -0
  43. narna-0.1.0/specs/execution-unit/SPEC.md +53 -0
  44. narna-0.1.0/specs/governance/SPEC.md +68 -0
  45. narna-0.1.0/specs/governance-api/SPEC.md +54 -0
  46. narna-0.1.0/specs/governance-api/openapi.yaml +267 -0
  47. narna-0.1.0/specs/governance-package/SPEC.md +97 -0
  48. narna-0.1.0/specs/governance-session/SPEC.md +51 -0
  49. narna-0.1.0/specs/governance-telemetry/SPEC.md +151 -0
  50. narna-0.1.0/specs/governor/SPEC.md +51 -0
  51. narna-0.1.0/specs/identity/SPEC.md +114 -0
  52. narna-0.1.0/specs/manifest/SPEC.md +138 -0
  53. narna-0.1.0/specs/metering/SPEC.md +49 -0
  54. narna-0.1.0/specs/narna-score/SPEC.md +67 -0
  55. narna-0.1.0/specs/passport/SPEC.md +33 -0
  56. narna-0.1.0/specs/permission/SPEC.md +50 -0
  57. narna-0.1.0/specs/policy/SPEC.md +60 -0
  58. narna-0.1.0/specs/registry/SPEC.md +54 -0
  59. narna-0.1.0/specs/schemas/README.md +20 -0
  60. narna-0.1.0/specs/schemas/agent-spec.schema.json +148 -0
  61. narna-0.1.0/specs/schemas/audit.schema.json +36 -0
  62. narna-0.1.0/specs/schemas/budget.schema.json +14 -0
  63. narna-0.1.0/specs/schemas/capability.schema.json +24 -0
  64. narna-0.1.0/specs/schemas/certification.schema.json +40 -0
  65. narna-0.1.0/specs/schemas/constitution.schema.json +217 -0
  66. narna-0.1.0/specs/schemas/event.schema.json +69 -0
  67. narna-0.1.0/specs/schemas/evidence.schema.json +100 -0
  68. narna-0.1.0/specs/schemas/execution-unit.schema.json +24 -0
  69. narna-0.1.0/specs/schemas/governance-package.schema.json +98 -0
  70. narna-0.1.0/specs/schemas/governance-session.schema.json +18 -0
  71. narna-0.1.0/specs/schemas/governance-telemetry.schema.json +113 -0
  72. narna-0.1.0/specs/schemas/identity.schema.json +49 -0
  73. narna-0.1.0/specs/schemas/manifest.schema.json +115 -0
  74. narna-0.1.0/specs/schemas/passport.schema.json +154 -0
  75. narna-0.1.0/specs/schemas/policy-decision.schema.json +48 -0
  76. narna-0.1.0/specs/schemas/policy-pack.schema.json +60 -0
  77. narna-0.1.0/specs/schemas/proof-bundle.schema.json +111 -0
  78. narna-0.1.0/specs/schemas/tool.schema.json +74 -0
  79. narna-0.1.0/specs/schemas/trust-score.schema.json +61 -0
  80. narna-0.1.0/specs/schemas/universal-identity.schema.json +76 -0
  81. narna-0.1.0/specs/uap-core/SPEC.md +353 -0
  82. narna-0.1.0/specs/uap-evidence/SPEC.md +232 -0
  83. narna-0.1.0/specs/uap-execution/SPEC.md +294 -0
  84. narna-0.1.0/specs/uap-export/SPEC.md +88 -0
  85. narna-0.1.0/specs/vap/SPEC.md +262 -0
  86. narna-0.1.0/src/narna/__init__.py +50 -0
  87. narna-0.1.0/src/narna/adapters/__init__.py +148 -0
  88. narna-0.1.0/src/narna/adapters/anthropic.py +41 -0
  89. narna-0.1.0/src/narna/adapters/base.py +181 -0
  90. narna-0.1.0/src/narna/adapters/crewai.py +26 -0
  91. narna-0.1.0/src/narna/adapters/google.py +48 -0
  92. narna-0.1.0/src/narna/adapters/langgraph.py +27 -0
  93. narna-0.1.0/src/narna/adapters/mcp.py +28 -0
  94. narna-0.1.0/src/narna/adapters/moltbook.py +35 -0
  95. narna-0.1.0/src/narna/adapters/openai_agents.py +43 -0
  96. narna-0.1.0/src/narna/adapters/openshell.py +27 -0
  97. narna-0.1.0/src/narna/adapters/otel.py +48 -0
  98. narna-0.1.0/src/narna/adapters/otel_export.py +60 -0
  99. narna-0.1.0/src/narna/cli.py +8 -0
  100. narna-0.1.0/src/narna/conformance.py +89 -0
  101. narna-0.1.0/src/narna/decorators.py +138 -0
  102. narna-0.1.0/src/narna/wrap.py +128 -0
  103. narna-0.1.0/src/uap/__init__.py +7 -0
  104. narna-0.1.0/src/uap/_policies/local-default.yaml +14 -0
  105. narna-0.1.0/src/uap/_policies/trading-default.yaml +24 -0
  106. narna-0.1.0/src/uap/_spec_schemas/README.md +20 -0
  107. narna-0.1.0/src/uap/_spec_schemas/agent-spec.schema.json +148 -0
  108. narna-0.1.0/src/uap/_spec_schemas/audit.schema.json +36 -0
  109. narna-0.1.0/src/uap/_spec_schemas/budget.schema.json +14 -0
  110. narna-0.1.0/src/uap/_spec_schemas/capability.schema.json +24 -0
  111. narna-0.1.0/src/uap/_spec_schemas/certification.schema.json +40 -0
  112. narna-0.1.0/src/uap/_spec_schemas/constitution.schema.json +209 -0
  113. narna-0.1.0/src/uap/_spec_schemas/event.schema.json +69 -0
  114. narna-0.1.0/src/uap/_spec_schemas/evidence.schema.json +100 -0
  115. narna-0.1.0/src/uap/_spec_schemas/execution-unit.schema.json +24 -0
  116. narna-0.1.0/src/uap/_spec_schemas/governance-package.schema.json +98 -0
  117. narna-0.1.0/src/uap/_spec_schemas/governance-session.schema.json +18 -0
  118. narna-0.1.0/src/uap/_spec_schemas/governance-telemetry.schema.json +113 -0
  119. narna-0.1.0/src/uap/_spec_schemas/identity.schema.json +49 -0
  120. narna-0.1.0/src/uap/_spec_schemas/manifest.schema.json +115 -0
  121. narna-0.1.0/src/uap/_spec_schemas/passport.schema.json +154 -0
  122. narna-0.1.0/src/uap/_spec_schemas/policy-decision.schema.json +48 -0
  123. narna-0.1.0/src/uap/_spec_schemas/policy-pack.schema.json +60 -0
  124. narna-0.1.0/src/uap/_spec_schemas/proof-bundle.schema.json +111 -0
  125. narna-0.1.0/src/uap/_spec_schemas/tool.schema.json +74 -0
  126. narna-0.1.0/src/uap/_spec_schemas/trust-score.schema.json +61 -0
  127. narna-0.1.0/src/uap/_spec_schemas/universal-identity.schema.json +76 -0
  128. narna-0.1.0/src/uap/agent.py +612 -0
  129. narna-0.1.0/src/uap/audit.py +72 -0
  130. narna-0.1.0/src/uap/benchmark.py +52 -0
  131. narna-0.1.0/src/uap/canon.py +18 -0
  132. narna-0.1.0/src/uap/certify.py +436 -0
  133. narna-0.1.0/src/uap/cli.py +975 -0
  134. narna-0.1.0/src/uap/conformance.py +62 -0
  135. narna-0.1.0/src/uap/constitution.py +123 -0
  136. narna-0.1.0/src/uap/errors.py +25 -0
  137. narna-0.1.0/src/uap/event_log.py +90 -0
  138. narna-0.1.0/src/uap/events.py +59 -0
  139. narna-0.1.0/src/uap/evidence.py +71 -0
  140. narna-0.1.0/src/uap/execution_graph.py +85 -0
  141. narna-0.1.0/src/uap/execution_unit.py +108 -0
  142. narna-0.1.0/src/uap/fleet.py +47 -0
  143. narna-0.1.0/src/uap/governance_benchmark.py +157 -0
  144. narna-0.1.0/src/uap/governance_runtime.py +362 -0
  145. narna-0.1.0/src/uap/governor.py +162 -0
  146. narna-0.1.0/src/uap/hashing.py +18 -0
  147. narna-0.1.0/src/uap/http.py +19 -0
  148. narna-0.1.0/src/uap/identity.py +220 -0
  149. narna-0.1.0/src/uap/ids.py +8 -0
  150. narna-0.1.0/src/uap/manifest.py +282 -0
  151. narna-0.1.0/src/uap/marketplace.py +51 -0
  152. narna-0.1.0/src/uap/memory.py +24 -0
  153. narna-0.1.0/src/uap/metering.py +65 -0
  154. narna-0.1.0/src/uap/model.py +114 -0
  155. narna-0.1.0/src/uap/narna_score.py +147 -0
  156. narna-0.1.0/src/uap/orchestrator.py +76 -0
  157. narna-0.1.0/src/uap/packages.py +129 -0
  158. narna-0.1.0/src/uap/passport.py +266 -0
  159. narna-0.1.0/src/uap/passport_sign.py +92 -0
  160. narna-0.1.0/src/uap/permissions.py +56 -0
  161. narna-0.1.0/src/uap/plugins.py +126 -0
  162. narna-0.1.0/src/uap/policy.py +155 -0
  163. narna-0.1.0/src/uap/proof.py +57 -0
  164. narna-0.1.0/src/uap/registry.py +160 -0
  165. narna-0.1.0/src/uap/runtime.py +614 -0
  166. narna-0.1.0/src/uap/schemas.py +43 -0
  167. narna-0.1.0/src/uap/session.py +83 -0
  168. narna-0.1.0/src/uap/spec.py +43 -0
  169. narna-0.1.0/src/uap/state.py +44 -0
  170. narna-0.1.0/src/uap/telemetry.py +353 -0
  171. narna-0.1.0/src/uap/tools.py +277 -0
  172. narna-0.1.0/src/uap/trust.py +115 -0
  173. narna-0.1.0/src/uap/vap/__init__.py +4 -0
  174. narna-0.1.0/src/uap/vap/pipeline.py +52 -0
  175. narna-0.1.0/src/uap/vap/price_extract.py +18 -0
  176. narna-0.1.0/src/uap/vap/verify_evidence.py +121 -0
  177. narna-0.1.0/src/uap/verify.py +71 -0
  178. narna-0.1.0/src/uap_cloud/__init__.py +5 -0
  179. narna-0.1.0/src/uap_cloud/exporter.py +309 -0
narna-0.1.0/.gitignore ADDED
@@ -0,0 +1,62 @@
1
+ # Dependencies & build
2
+ .venv/
3
+ venv/
4
+ __pycache__/
5
+ *.py[cod]
6
+ *.egg-info/
7
+ dist/
8
+ build/
9
+ .eggs/
10
+ node_modules/
11
+ web/frontend/dist/
12
+ web/frontend/node_modules/
13
+
14
+ # Local UAP / agent runtime state
15
+ .uap/
16
+ agent.yaml
17
+
18
+ # Secrets & local env (never commit)
19
+ .env
20
+ .env.*
21
+ !.env.example
22
+ !**/.env.example
23
+ !**/.env.production.example
24
+ web/deploy/selfhost/.env
25
+ *.pem
26
+ *.key
27
+ secrets/
28
+ credentials.json
29
+
30
+ # Databases & local data
31
+ *.db
32
+ *.sqlite
33
+ *.sqlite3
34
+ uap_data/
35
+ postgres_data/
36
+ redis_data/
37
+
38
+ # IDE / OS
39
+ .idea/
40
+ .vscode/
41
+ *.swp
42
+ .DS_Store
43
+ Thumbs.db
44
+
45
+ # Test / coverage
46
+ .coverage
47
+ htmlcov/
48
+ .pytest_cache/
49
+ .mypy_cache/
50
+ .ruff_cache/
51
+
52
+ # Logs
53
+ *.log
54
+
55
+ .deploy-secrets/
56
+
57
+ narna-deploy.tar
58
+ dist/
59
+ *.egg-info/
60
+
61
+ examples/_demo_*/
62
+ examples/**/.uap/
narna-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 NARNA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
narna-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,115 @@
1
+ Metadata-Version: 2.4
2
+ Name: narna
3
+ Version: 0.1.0
4
+ Summary: NARNA — Governance Infrastructure for Agentic AI (UGS reference runtime)
5
+ Project-URL: Homepage, https://narna.org
6
+ Project-URL: Documentation, https://narna.org/docs
7
+ Project-URL: Repository, https://github.com/hanyangkai/narna
8
+ Author: NARNA Contributors
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: agentic-ai,ai-agents,governance,narna,runtime,trust,uap,ugs
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Software Development :: Libraries
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: cryptography>=42.0.0
20
+ Requires-Dist: jsonschema>=4.23.0
21
+ Requires-Dist: pyyaml>=6.0.1
22
+ Provides-Extra: cloud
23
+ Requires-Dist: fastapi>=0.115.0; extra == 'cloud'
24
+ Requires-Dist: pydantic>=2.10.0; extra == 'cloud'
25
+ Requires-Dist: python-multipart>=0.0.12; extra == 'cloud'
26
+ Requires-Dist: pyyaml>=6.0.1; extra == 'cloud'
27
+ Requires-Dist: sqlalchemy>=2.0.36; extra == 'cloud'
28
+ Requires-Dist: uvicorn[standard]>=0.32.0; extra == 'cloud'
29
+ Provides-Extra: dev
30
+ Requires-Dist: build>=1.0.0; extra == 'dev'
31
+ Requires-Dist: jsonschema>=4.23.0; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # NARNA
35
+
36
+ **Governance Infrastructure for Agentic AI**
37
+
38
+ > **Govern Once. Run Anywhere.**
39
+
40
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)
41
+ [![Website](https://img.shields.io/badge/narna.org-live-0a7ea4)](https://narna.org)
42
+ [![Spec](https://img.shields.io/badge/UGS-open%20standard-111)](./specs/README.md)
43
+
44
+ NARNA makes Agentic AI **governable** — portable identity, policy, evidence, and trust across LangGraph, CrewAI, OpenAI, Anthropic, MCP, and OTel.
45
+
46
+ It does **not** replace those runtimes. It does **not** train models. It sits in the infrastructure layer and **enforces / audits / proves** what fleets may do.
47
+
48
+ | Name | Role |
49
+ |------|------|
50
+ | **NARNA** | Brand + reference runtime |
51
+ | **UGS** | Universal Governance Specification (open standard) |
52
+ | **VAP** | Verify · Audit · Prove |
53
+ | **GU** | Governance Unit (Cloud metering) |
54
+ | **Governance Package** | Portable compliance rules (EU AI Act, HIPAA, GDPR…) |
55
+
56
+ > **NARNA governs AI. Others execute it.**
57
+
58
+ **Not another “agent passport” clone.** See [`docs/DIFFERENTIATION.md`](./docs/DIFFERENTIATION.md) — wedge = **UGS + Packages + GU**, not identity-only protocols.
59
+
60
+ ## Install
61
+
62
+ ```bash
63
+ pip install -e . # or: pip install narna (when published)
64
+ ```
65
+
66
+ ```python
67
+ from narna import wrap
68
+
69
+ # Enforce before host side-effects (default). Use mode="observe" to migrate.
70
+ agent = wrap(my_langgraph_app, vap=True, mode="enforce")
71
+ agent.run("quarterly summary")
72
+ ```
73
+
74
+ ## 30 seconds — package + runtime
75
+
76
+ ```python
77
+ from narna import Agent, ConstitutionRuntime
78
+
79
+ rt = ConstitutionRuntime()
80
+ rt.load(provider="eu-ai-act") # Governance Package
81
+
82
+ agent = Agent(vap=True)
83
+ agent.run()
84
+ ```
85
+
86
+ ## Why teams integrate NARNA
87
+
88
+ 1. **Compliance packages** — load once, enforce across frameworks
89
+ 2. **Enforce-before adapters** — deny tool/LLM calls before side effects
90
+ 3. **UGS Passport + Registry** — public verify at [narna.org](https://narna.org)
91
+ 4. **Cloud GU** — Runtime free; Trust (Registry / Passport / Packages) is the product
92
+
93
+ ## Links
94
+
95
+ | | |
96
+ |--|--|
97
+ | Site | https://narna.org |
98
+ | API | https://api.narna.org/v1/health |
99
+ | **Ship log (daily)** | [`docs/SHIP-LOG.md`](./docs/SHIP-LOG.md) |
100
+ | MVP status | [`docs/MVP-CHECKLIST.md`](./docs/MVP-CHECKLIST.md) |
101
+ | Adapter e2e | [`docs/ADAPTERS-E2E.md`](./docs/ADAPTERS-E2E.md) |
102
+ | UGS v0.1 | [`specs/RELEASE-v0.1.md`](./specs/RELEASE-v0.1.md) |
103
+ | Strategy | [`docs/STRATEGY.md`](./docs/STRATEGY.md) |
104
+ | Business | [`docs/BUSINESS-MODEL.md`](./docs/BUSINESS-MODEL.md) |
105
+ | Differentiation | [`docs/DIFFERENTIATION.md`](./docs/DIFFERENTIATION.md) |
106
+ | NGS RFCs | [`rfcs/ngs/`](./rfcs/ngs/) |
107
+ | Install | [`docs/INSTALL.md`](./docs/INSTALL.md) |
108
+
109
+ ## Compatibility
110
+
111
+ OpenAI · Anthropic · Google · MCP · OpenTelemetry · LangGraph · CrewAI · Docker · Kubernetes
112
+
113
+ ## License
114
+
115
+ MIT
narna-0.1.0/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # NARNA
2
+
3
+ **Governance Infrastructure for Agentic AI**
4
+
5
+ > **Govern Once. Run Anywhere.**
6
+
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)
8
+ [![Website](https://img.shields.io/badge/narna.org-live-0a7ea4)](https://narna.org)
9
+ [![Spec](https://img.shields.io/badge/UGS-open%20standard-111)](./specs/README.md)
10
+
11
+ NARNA makes Agentic AI **governable** — portable identity, policy, evidence, and trust across LangGraph, CrewAI, OpenAI, Anthropic, MCP, and OTel.
12
+
13
+ It does **not** replace those runtimes. It does **not** train models. It sits in the infrastructure layer and **enforces / audits / proves** what fleets may do.
14
+
15
+ | Name | Role |
16
+ |------|------|
17
+ | **NARNA** | Brand + reference runtime |
18
+ | **UGS** | Universal Governance Specification (open standard) |
19
+ | **VAP** | Verify · Audit · Prove |
20
+ | **GU** | Governance Unit (Cloud metering) |
21
+ | **Governance Package** | Portable compliance rules (EU AI Act, HIPAA, GDPR…) |
22
+
23
+ > **NARNA governs AI. Others execute it.**
24
+
25
+ **Not another “agent passport” clone.** See [`docs/DIFFERENTIATION.md`](./docs/DIFFERENTIATION.md) — wedge = **UGS + Packages + GU**, not identity-only protocols.
26
+
27
+ ## Install
28
+
29
+ ```bash
30
+ pip install -e . # or: pip install narna (when published)
31
+ ```
32
+
33
+ ```python
34
+ from narna import wrap
35
+
36
+ # Enforce before host side-effects (default). Use mode="observe" to migrate.
37
+ agent = wrap(my_langgraph_app, vap=True, mode="enforce")
38
+ agent.run("quarterly summary")
39
+ ```
40
+
41
+ ## 30 seconds — package + runtime
42
+
43
+ ```python
44
+ from narna import Agent, ConstitutionRuntime
45
+
46
+ rt = ConstitutionRuntime()
47
+ rt.load(provider="eu-ai-act") # Governance Package
48
+
49
+ agent = Agent(vap=True)
50
+ agent.run()
51
+ ```
52
+
53
+ ## Why teams integrate NARNA
54
+
55
+ 1. **Compliance packages** — load once, enforce across frameworks
56
+ 2. **Enforce-before adapters** — deny tool/LLM calls before side effects
57
+ 3. **UGS Passport + Registry** — public verify at [narna.org](https://narna.org)
58
+ 4. **Cloud GU** — Runtime free; Trust (Registry / Passport / Packages) is the product
59
+
60
+ ## Links
61
+
62
+ | | |
63
+ |--|--|
64
+ | Site | https://narna.org |
65
+ | API | https://api.narna.org/v1/health |
66
+ | **Ship log (daily)** | [`docs/SHIP-LOG.md`](./docs/SHIP-LOG.md) |
67
+ | MVP status | [`docs/MVP-CHECKLIST.md`](./docs/MVP-CHECKLIST.md) |
68
+ | Adapter e2e | [`docs/ADAPTERS-E2E.md`](./docs/ADAPTERS-E2E.md) |
69
+ | UGS v0.1 | [`specs/RELEASE-v0.1.md`](./specs/RELEASE-v0.1.md) |
70
+ | Strategy | [`docs/STRATEGY.md`](./docs/STRATEGY.md) |
71
+ | Business | [`docs/BUSINESS-MODEL.md`](./docs/BUSINESS-MODEL.md) |
72
+ | Differentiation | [`docs/DIFFERENTIATION.md`](./docs/DIFFERENTIATION.md) |
73
+ | NGS RFCs | [`rfcs/ngs/`](./rfcs/ngs/) |
74
+ | Install | [`docs/INSTALL.md`](./docs/INSTALL.md) |
75
+
76
+ ## Compatibility
77
+
78
+ OpenAI · Anthropic · Google · MCP · OpenTelemetry · LangGraph · CrewAI · Docker · Kubernetes
79
+
80
+ ## License
81
+
82
+ MIT
@@ -0,0 +1,14 @@
1
+ apiVersion: uap.dev/v1alpha1
2
+ kind: PolicyPack
3
+ metadata:
4
+ name: local-default
5
+ version: 0.0.0
6
+ rules:
7
+ - permission: market.read
8
+ decision: allow
9
+ - permission: memory.read
10
+ decision: allow
11
+ - permission: memory.write
12
+ decision: allow
13
+ - permission: external.invoke
14
+ decision: allow
@@ -0,0 +1,24 @@
1
+ apiVersion: uap.dev/v1alpha1
2
+ kind: PolicyPack
3
+ metadata:
4
+ name: trading-default
5
+ version: 1.0.0
6
+ rules:
7
+ - permission: market.read
8
+ decision: allow
9
+ - permission: browser.open
10
+ decision: allow
11
+ constraints:
12
+ domainsAllowlist:
13
+ - "*.exchange.com"
14
+ - "api.coinbase.com"
15
+ - "api.binance.com"
16
+ - permission: wallet.transfer
17
+ decision: ask
18
+ constraints:
19
+ maxAmount: "100"
20
+ currency: USDT
21
+ - permission: memory.read
22
+ decision: allow
23
+ - permission: memory.write
24
+ decision: allow
@@ -0,0 +1,58 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "narna"
7
+ version = "0.1.0"
8
+ description = "NARNA — Governance Infrastructure for Agentic AI (UGS reference runtime)"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ authors = [{ name = "NARNA Contributors" }]
13
+ keywords = ["ai-agents", "agentic-ai", "governance", "runtime", "trust", "uap", "ugs", "narna"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Topic :: Software Development :: Libraries",
21
+ ]
22
+ dependencies = [
23
+ "PyYAML>=6.0.1",
24
+ "jsonschema>=4.23.0",
25
+ "cryptography>=42.0.0",
26
+ ]
27
+
28
+ [project.optional-dependencies]
29
+ dev = ["jsonschema>=4.23.0", "build>=1.0.0"]
30
+ cloud = [
31
+ "fastapi>=0.115.0",
32
+ "uvicorn[standard]>=0.32.0",
33
+ "sqlalchemy>=2.0.36",
34
+ "pydantic>=2.10.0",
35
+ "python-multipart>=0.0.12",
36
+ "PyYAML>=6.0.1",
37
+ ]
38
+
39
+ [project.urls]
40
+ Homepage = "https://narna.org"
41
+ Documentation = "https://narna.org/docs"
42
+ Repository = "https://github.com/hanyangkai/narna"
43
+
44
+ [project.scripts]
45
+ narna = "narna.cli:main"
46
+ uap = "uap.cli:main"
47
+
48
+ [tool.hatch.build.targets.wheel]
49
+ packages = ["src/narna", "src/uap", "src/uap_cloud"]
50
+
51
+ [tool.hatch.build.targets.sdist]
52
+ include = [
53
+ "/src",
54
+ "/policies",
55
+ "/specs",
56
+ "/README.md",
57
+ "/pyproject.toml",
58
+ ]
@@ -0,0 +1,89 @@
1
+ # Architecture (normative orientation)
2
+
3
+ **Status:** Draft — infrastructure-layer lock
4
+ **Strategy:** [`../docs/STRATEGY.md`](../docs/STRATEGY.md) · **Positioning:** [`../docs/POSITIONING.md`](../docs/POSITIONING.md)
5
+
6
+ ---
7
+
8
+ ## Stack (locked)
9
+
10
+ ```text
11
+ Applications
12
+ ────────────────────────────────────────────
13
+ AI Products & AI Companies
14
+ ────────────────────────────────────────────
15
+ OpenAI · Claude · Gemini · Llama
16
+ ────────────────────────────────────────────
17
+ OpenAI SDK · LangGraph · CrewAI · AutoGen
18
+ ────────────────────────────────────────────
19
+ OpenTelemetry · MCP · OpenShell
20
+ ────────────────────────────────────────────
21
+ ★ NARNA Runtime ★
22
+ Identity · Governance · Policy
23
+ Permission · Evidence · Trust · Certification
24
+ ────────────────────────────────────────────
25
+ Docker · Kubernetes · Linux · Cloud
26
+ ```
27
+
28
+ NARNA does **not** replace frameworks or models. It is the **governance infrastructure** they attach to.
29
+
30
+ ---
31
+
32
+ ## Open standard vs brand
33
+
34
+ | Name | Role |
35
+ |------|------|
36
+ | **UGS** | Universal Governance Specification — open contracts |
37
+ | **NARNA** | Brand + reference runtime implementing UGS |
38
+ | **VAP** | Trust engine (Verify → Audit → Prove) |
39
+
40
+ ---
41
+
42
+ ## Control plane vs data plane
43
+
44
+ | Plane | Owns | Examples |
45
+ |-------|------|----------|
46
+ | **Governance Runtime (NARNA)** | Load / Validate / Enforce / Audit / Verify / Certify | `governance_runtime`, active binding |
47
+ | **Governance Packages** | Who / may / must / risk / human gates | Constitution, Compliance packs |
48
+ | **Execution (others)** | How tokens/tools run | LangGraph, OpenAI Agents, CrewAI, MCP |
49
+ | **Observability (others)** | What happened | OpenTelemetry |
50
+ | **Proof (VAP)** | Whether it can be believed | Evidence, ProofBundle, Trust Score |
51
+
52
+ ---
53
+
54
+ ## Artifact flow
55
+
56
+ ```text
57
+ Governance Package
58
+
59
+ NARNA Runtime: Load → Validate → bind active package
60
+
61
+ Enforce (authorize) → host side effects
62
+
63
+ Evidence → Verify / Audit (VAP)
64
+
65
+ Passport → Certification → Registry / Marketplace
66
+ ```
67
+
68
+ **Portable Governance:** changing model vendor **MUST NOT** alone invalidate identity or reset trust without package change.
69
+
70
+ ---
71
+
72
+ ## Package boundaries
73
+
74
+ | Package | Owns |
75
+ |---------|------|
76
+ | Specs (`specs/`) | UGS contracts — source of truth |
77
+ | `narna` / `uap` SDK | Reference runtime + adapters (`uap` = legacy path) |
78
+ | Cloud | Marketplace, Registry, Certification stamp — optional |
79
+
80
+ ---
81
+
82
+ ## Conformance layers
83
+
84
+ 1. **UGS-conformant** — Identity / Package / Evidence / Trust contracts
85
+ 2. **Constitution-Runtime-conformant** — Load → Enforce → Verify → Audit → Switch
86
+ 3. **VAP-conformant** — ProofBundle + TrustScore + offline verify
87
+ 4. **Certified** — NARNA Certification levels
88
+
89
+ Aim reference code at (2); treat host frameworks as execution adapters.
@@ -0,0 +1,73 @@
1
+ # NARNA / UGS Specification Set
2
+
3
+ **NARNA** — *The Governance Infrastructure for Agentic AI.*
4
+ **UGS** — *Universal Governance Specification* (open standard)
5
+ **NGS** — *NARNA Governance Standards* (numbered RFCs — IETF-style)
6
+ **VAP** — *Verify · Audit · Prove* (trust engine)
7
+
8
+ **Primary:** Govern Once. Run Anywhere.
9
+ **Strategy lock:** [`../docs/STRATEGY.md`](../docs/STRATEGY.md)
10
+ **NGS index:** [`../rfcs/ngs/README.md`](../rfcs/ngs/README.md)
11
+
12
+ **Status:** Released v0.1.0
13
+ **Scope:** normative specs + JSON Schemas + OpenAPI
14
+ **Freeze tag:** `ugs-v0.1.0` (semver aligned with [`VERSION`](./VERSION))
15
+
16
+ > UGS v0.1 locks the core six (Identity → Trust) + Manifest, Passport, Governance Package, Registry, and Governance API. Later minors may add telemetry/metering without breaking the core contracts.
17
+ ---
18
+
19
+ ## Core six (NGS-0001…0006)
20
+
21
+ | NGS | Spec | Schema |
22
+ |-----|------|--------|
23
+ | Identity | [`identity/SPEC.md`](identity/SPEC.md) | `universal-identity.schema.json` |
24
+ | Capability | [`capability/SPEC.md`](capability/SPEC.md) | `capability.schema.json` |
25
+ | Permission | [`permission/SPEC.md`](permission/SPEC.md) | (AgentSpec / Manifest) |
26
+ | Policy | [`policy/SPEC.md`](policy/SPEC.md) | `policy-pack.schema.json`, `policy-decision.schema.json` |
27
+ | Evidence | [`uap-evidence/SPEC.md`](uap-evidence/SPEC.md) | `evidence.schema.json` |
28
+ | Trust | [`vap/SPEC.md`](vap/SPEC.md) §6 | `trust-score.schema.json` |
29
+
30
+ ---
31
+
32
+ ## Derived standards
33
+
34
+ | NGS | Spec |
35
+ |-----|------|
36
+ | Passport | [`passport/SPEC.md`](passport/SPEC.md) |
37
+ | Governance Package | [`governance-package/SPEC.md`](governance-package/SPEC.md) |
38
+ | Certification | [`certification/SPEC.md`](certification/SPEC.md) · `certification.schema.json` |
39
+ | Audit Report | [`audit/SPEC.md`](audit/SPEC.md) · `audit.schema.json` |
40
+ | Manifest | [`manifest/SPEC.md`](manifest/SPEC.md) |
41
+ | Registry | [`registry/SPEC.md`](registry/SPEC.md) |
42
+ | Governance API | [`governance-api/SPEC.md`](governance-api/SPEC.md) · [`openapi.yaml`](governance-api/openapi.yaml) |
43
+
44
+ ---
45
+
46
+ ## Runtime / metering (orthogonal)
47
+
48
+ | Spec | Path |
49
+ |------|------|
50
+ | Constitution | [`constitution/SPEC.md`](constitution/SPEC.md) |
51
+ | Constitution Runtime | [`constitution-runtime/SPEC.md`](constitution-runtime/SPEC.md) |
52
+ | Governance Session | [`governance-session/SPEC.md`](governance-session/SPEC.md) |
53
+ | Execution Graph / Unit | [`execution-graph/SPEC.md`](execution-graph/SPEC.md), [`execution-unit/SPEC.md`](execution-unit/SPEC.md) |
54
+ | Governor / Metering | [`governor/SPEC.md`](governor/SPEC.md), [`metering/SPEC.md`](metering/SPEC.md) |
55
+ | Governance Telemetry (privacy-preserving) | [`governance-telemetry/SPEC.md`](governance-telemetry/SPEC.md) · `governance-telemetry.schema.json` |
56
+ | UGS Execution / Core | [`uap-execution/SPEC.md`](uap-execution/SPEC.md), [`uap-core/SPEC.md`](uap-core/SPEC.md) |
57
+ | Export | [`uap-export/SPEC.md`](uap-export/SPEC.md) |
58
+
59
+ ---
60
+
61
+ ## Conformance
62
+
63
+ - **NGS-0001…0006 conformant** — implements the six core contracts + schemas.
64
+ - **Governance-API conformant** — exposes OpenAPI paths or equivalent.
65
+ - **VAP-conformant** — ProofBundle + offline verify + Trust Score.
66
+
67
+ Design axiom:
68
+
69
+ ```text
70
+ Identity · Capability · Permission · Policy · Evidence · Trust
71
+
72
+ Passport · Package · Certification · Manifest · Registry · API
73
+ ```
@@ -0,0 +1,30 @@
1
+ # UGS v0.1 — Release notes
2
+
3
+ **Status:** Released
4
+ **Version:** 0.1.0
5
+ **Date:** 2026-07-20
6
+
7
+ ## What is frozen
8
+
9
+ - Core six: Identity, Capability, Permission, Policy, Evidence, Trust (NGS-0001…0006)
10
+ - Manifest (`narna.yaml`), Passport, Governance Package, Certification, Audit, Registry, Governance API (NGS-0007…0013)
11
+ - JSON Schemas under `specs/schemas/`
12
+ - OpenAPI draft: `specs/governance-api/openapi.yaml`
13
+
14
+ ## Compatibility
15
+
16
+ - Reference implementation: NARNA Python SDK / CLI (`narna` package)
17
+ - Adapter SPI: enforce-before host framework calls (`NARNA_ADAPTER_MODE=enforce`)
18
+
19
+ ## Not frozen yet
20
+
21
+ - Governance Telemetry (Draft G1)
22
+ - Billing / marketplace take-rate commercial terms (product, not standard)
23
+
24
+ ## Conformance
25
+
26
+ ```bash
27
+ narna conformance --workspace .
28
+ ```
29
+
30
+ Badge: **UGS Conformant** when OpenAPI schemas + manifest + runtime probe pass.
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,54 @@
1
+ # Audit Report — UGS / NGS-0010
2
+
3
+ **Status:** Normative (v0.1)
4
+ **RFC:** [NGS-0010](../../rfcs/ngs/NGS-0010-audit-report.md)
5
+ **Schema:** [`../schemas/audit.schema.json`](../schemas/audit.schema.json)
6
+
7
+ ---
8
+
9
+ ## 1. Purpose
10
+
11
+ A portable **Audit Report** answers:
12
+
13
+ | Question | Field |
14
+ |----------|-------|
15
+ | Who | `actor` (logicalAgentId / identityId) |
16
+ | When | `occurredAt` |
17
+ | Why | `reasons` + `policyRef` |
18
+ | Evidence | `evidenceIds[]` |
19
+ | Decision | `decision` (`allow` \| `deny` \| `ask`) |
20
+
21
+ Independent of vendor log formats (CloudWatch, Datadog, etc.).
22
+
23
+ ---
24
+
25
+ ## 2. AuditRecord (minimum)
26
+
27
+ | Field | Required |
28
+ |-------|----------|
29
+ | `auditId` | MUST |
30
+ | `sessionId` | SHOULD |
31
+ | `runId` | MUST |
32
+ | `actor` | MUST |
33
+ | `occurredAt` | MUST |
34
+ | `decision` | MUST |
35
+ | `permission` | SHOULD |
36
+ | `reasons` | MUST (≥1) |
37
+ | `policyRef` | SHOULD |
38
+ | `evidenceIds` | SHOULD |
39
+ | `eventRange` | SHOULD |
40
+ | `trustScore` | MAY |
41
+
42
+ ---
43
+
44
+ ## 3. Normative rules
45
+
46
+ 1. AuditRecord MUST be derivable from Events + PolicyDecisions + Evidence (VAP Audit stage).
47
+ 2. Implementations MUST NOT require proprietary log schemas for offline audit export.
48
+ 3. `AuditRecorded` events SHOULD reference `auditId`.
49
+
50
+ ---
51
+
52
+ ## 4. Export
53
+
54
+ `GET /v1/audit/{runId}` (Governance API) returns AuditReport JSON matching this schema.