openroar 1.0.0b1__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 (308) hide show
  1. openroar-1.0.0b1/.gitignore +29 -0
  2. openroar-1.0.0b1/CHANGELOG.md +42 -0
  3. openroar-1.0.0b1/CHARTER.md +298 -0
  4. openroar-1.0.0b1/CODE_OF_CONDUCT.md +27 -0
  5. openroar-1.0.0b1/CONTRIBUTING.md +61 -0
  6. openroar-1.0.0b1/LICENSE +201 -0
  7. openroar-1.0.0b1/PKG-INFO +211 -0
  8. openroar-1.0.0b1/README.md +135 -0
  9. openroar-1.0.0b1/SECURITY.md +55 -0
  10. openroar-1.0.0b1/adrs/0001-architecture-decision-records.md +70 -0
  11. openroar-1.0.0b1/adrs/0002-agent-orchestration-architecture.md +114 -0
  12. openroar-1.0.0b1/adrs/0003-multi-turn-agentic-loop.md +124 -0
  13. openroar-1.0.0b1/adrs/0004-autonomous-scheduler.md +107 -0
  14. openroar-1.0.0b1/agents/AGENTS.md +115 -0
  15. openroar-1.0.0b1/agents/example/anthropic.md +12 -0
  16. openroar-1.0.0b1/agents/example/customer-support.md +21 -0
  17. openroar-1.0.0b1/agents/example/groq.md +12 -0
  18. openroar-1.0.0b1/agents/example/local-default.md +27 -0
  19. openroar-1.0.0b1/agents/example/research.md +20 -0
  20. openroar-1.0.0b1/agents/example/safe-default.md +14 -0
  21. openroar-1.0.0b1/agents/my-agents/scout/SOUL.md +7 -0
  22. openroar-1.0.0b1/docs/community/REWARDS.md +94 -0
  23. openroar-1.0.0b1/docs/engineering/ENGINEERING_PRINCIPLES.md +705 -0
  24. openroar-1.0.0b1/docs/guides/your-first-agent.md +72 -0
  25. openroar-1.0.0b1/docs/patterns/panel-pattern.md +167 -0
  26. openroar-1.0.0b1/docs/security/four-gate-pipeline.md +110 -0
  27. openroar-1.0.0b1/docs/self-host/backups.md +93 -0
  28. openroar-1.0.0b1/docs/self-host/providers.md +101 -0
  29. openroar-1.0.0b1/docs/self-host/quickstart.md +131 -0
  30. openroar-1.0.0b1/evals/__init__.py +0 -0
  31. openroar-1.0.0b1/evals/benign.jsonl +46 -0
  32. openroar-1.0.0b1/evals/corpus/README.md +17 -0
  33. openroar-1.0.0b1/evals/corpus/harden/MANIFEST.md +17 -0
  34. openroar-1.0.0b1/evals/panel/__init__.py +14 -0
  35. openroar-1.0.0b1/evals/panel/finding.py +175 -0
  36. openroar-1.0.0b1/evals/panel/providers.py +155 -0
  37. openroar-1.0.0b1/evals/panel/run_panel.py +199 -0
  38. openroar-1.0.0b1/evals/panel/seats.py +179 -0
  39. openroar-1.0.0b1/evals/ratchet.py +259 -0
  40. openroar-1.0.0b1/evals/red_line_attacks.jsonl +30 -0
  41. openroar-1.0.0b1/evals/red_line_attacks_fresh.jsonl +30 -0
  42. openroar-1.0.0b1/evals/red_line_exemplars.jsonl +18 -0
  43. openroar-1.0.0b1/evals/scoreboard.py +258 -0
  44. openroar-1.0.0b1/manifests/customer-support.yaml +60 -0
  45. openroar-1.0.0b1/manifests/research.yaml +49 -0
  46. openroar-1.0.0b1/manifests/safe-default.yaml +266 -0
  47. openroar-1.0.0b1/manifests/scout-policy.yaml +85 -0
  48. openroar-1.0.0b1/manifests/system-overlay.yaml +30 -0
  49. openroar-1.0.0b1/openroar/__init__.py +56 -0
  50. openroar-1.0.0b1/openroar/__version__.py +7 -0
  51. openroar-1.0.0b1/openroar/_internal/__init__.py +5 -0
  52. openroar-1.0.0b1/openroar/_internal/eggs.py +263 -0
  53. openroar-1.0.0b1/openroar/_internal/env.py +67 -0
  54. openroar-1.0.0b1/openroar/_internal/hardware.py +174 -0
  55. openroar-1.0.0b1/openroar/_internal/intro.py +82 -0
  56. openroar-1.0.0b1/openroar/_internal/jsonl.py +73 -0
  57. openroar-1.0.0b1/openroar/_internal/local_llm.py +106 -0
  58. openroar-1.0.0b1/openroar/_internal/logging.py +53 -0
  59. openroar-1.0.0b1/openroar/_internal/merkle.py +140 -0
  60. openroar-1.0.0b1/openroar/_internal/onboard.py +154 -0
  61. openroar-1.0.0b1/openroar/_internal/style.py +87 -0
  62. openroar-1.0.0b1/openroar/_internal/timekeep.py +32 -0
  63. openroar-1.0.0b1/openroar/agent.py +127 -0
  64. openroar-1.0.0b1/openroar/agent_caretaker.py +725 -0
  65. openroar-1.0.0b1/openroar/agent_loop.py +168 -0
  66. openroar-1.0.0b1/openroar/agents/samples/README.md +109 -0
  67. openroar-1.0.0b1/openroar/agents/samples/amara_fitness_coach/SOUL.md +85 -0
  68. openroar-1.0.0b1/openroar/agents/samples/arjun_technical_writer/SOUL.md +83 -0
  69. openroar-1.0.0b1/openroar/agents/samples/bao_ops_analyst/SOUL.md +76 -0
  70. openroar-1.0.0b1/openroar/agents/samples/eitan_contract_reviewer/SOUL.md +81 -0
  71. openroar-1.0.0b1/openroar/agents/samples/eva_product_manager/SOUL.md +77 -0
  72. openroar-1.0.0b1/openroar/agents/samples/hana_compliance_officer/SOUL.md +82 -0
  73. openroar-1.0.0b1/openroar/agents/samples/ines_language_tutor/SOUL.md +76 -0
  74. openroar-1.0.0b1/openroar/agents/samples/kenji_recipe_planner/SOUL.md +78 -0
  75. openroar-1.0.0b1/openroar/agents/samples/koa_travel_planner/SOUL.md +77 -0
  76. openroar-1.0.0b1/openroar/agents/samples/liam_finance_helper/SOUL.md +85 -0
  77. openroar-1.0.0b1/openroar/agents/samples/marlene_customer_research_partner/SOUL.md +77 -0
  78. openroar-1.0.0b1/openroar/agents/samples/mia_study_buddy/SOUL.md +80 -0
  79. openroar-1.0.0b1/openroar/agents/samples/nish_accountant/SOUL.md +106 -0
  80. openroar-1.0.0b1/openroar/agents/samples/noor_parenting_advisor/SOUL.md +84 -0
  81. openroar-1.0.0b1/openroar/agents/samples/oren_sales_call_prep/SOUL.md +82 -0
  82. openroar-1.0.0b1/openroar/agents/samples/priya_financial_model_auditor/SOUL.md +73 -0
  83. openroar-1.0.0b1/openroar/agents/samples/selma_marketing_copywriter/SOUL.md +86 -0
  84. openroar-1.0.0b1/openroar/agents/samples/sofia_writing_partner/SOUL.md +97 -0
  85. openroar-1.0.0b1/openroar/agents/samples/talia_paralegal/SOUL.md +107 -0
  86. openroar-1.0.0b1/openroar/agents/samples/yuki_code_reviewer/SOUL.md +112 -0
  87. openroar-1.0.0b1/openroar/audit.py +258 -0
  88. openroar-1.0.0b1/openroar/audit_signing.py +116 -0
  89. openroar-1.0.0b1/openroar/backup.py +159 -0
  90. openroar-1.0.0b1/openroar/cli.py +1839 -0
  91. openroar-1.0.0b1/openroar/conformance/__init__.py +18 -0
  92. openroar-1.0.0b1/openroar/conformance/benchmark.py +189 -0
  93. openroar-1.0.0b1/openroar/conformance/categories/__init__.py +6 -0
  94. openroar-1.0.0b1/openroar/conformance/categories/alignment_theatre.py +50 -0
  95. openroar-1.0.0b1/openroar/conformance/categories/closed_core.py +46 -0
  96. openroar-1.0.0b1/openroar/conformance/categories/cognitive.py +46 -0
  97. openroar-1.0.0b1/openroar/conformance/categories/deception.py +46 -0
  98. openroar-1.0.0b1/openroar/conformance/categories/fabrication.py +46 -0
  99. openroar-1.0.0b1/openroar/conformance/categories/manifest_bypass.py +26 -0
  100. openroar-1.0.0b1/openroar/conformance/categories/surveillance.py +50 -0
  101. openroar-1.0.0b1/openroar/conformance/charter_audit.py +191 -0
  102. openroar-1.0.0b1/openroar/conformance/runner.py +200 -0
  103. openroar-1.0.0b1/openroar/consent.py +438 -0
  104. openroar-1.0.0b1/openroar/crew.py +193 -0
  105. openroar-1.0.0b1/openroar/errors.py +113 -0
  106. openroar-1.0.0b1/openroar/eval/__init__.py +52 -0
  107. openroar-1.0.0b1/openroar/eval/cli.py +133 -0
  108. openroar-1.0.0b1/openroar/eval/corpus.py +194 -0
  109. openroar-1.0.0b1/openroar/eval/metrics.py +216 -0
  110. openroar-1.0.0b1/openroar/eval/runner.py +163 -0
  111. openroar-1.0.0b1/openroar/foundation/milestones.py +144 -0
  112. openroar-1.0.0b1/openroar/goal_store.py +104 -0
  113. openroar-1.0.0b1/openroar/groom/__init__.py +7 -0
  114. openroar-1.0.0b1/openroar/groom/report_template.md +126 -0
  115. openroar-1.0.0b1/openroar/groom/runner.py +246 -0
  116. openroar-1.0.0b1/openroar/integrations/__init__.py +220 -0
  117. openroar-1.0.0b1/openroar/integrations/telegram_pod/__init__.py +44 -0
  118. openroar-1.0.0b1/openroar/integrations/telegram_pod/airlock.py +243 -0
  119. openroar-1.0.0b1/openroar/integrations/telegram_pod/permissions.py +105 -0
  120. openroar-1.0.0b1/openroar/integrations/telegram_pod/provisioner.py +284 -0
  121. openroar-1.0.0b1/openroar/integrations/telegram_pod/replies.py +151 -0
  122. openroar-1.0.0b1/openroar/integrations/telegram_pod/welcome.py +155 -0
  123. openroar-1.0.0b1/openroar/ledger/__init__.py +21 -0
  124. openroar-1.0.0b1/openroar/ledger/core.py +332 -0
  125. openroar-1.0.0b1/openroar/manifest/__init__.py +137 -0
  126. openroar-1.0.0b1/openroar/manifest/_legacy.py +182 -0
  127. openroar-1.0.0b1/openroar/manifest/aggregator.py +348 -0
  128. openroar-1.0.0b1/openroar/manifest/deterministic.py +544 -0
  129. openroar-1.0.0b1/openroar/manifest/judge.py +328 -0
  130. openroar-1.0.0b1/openroar/manifest/judge_providers.py +280 -0
  131. openroar-1.0.0b1/openroar/manifest/loader.py +273 -0
  132. openroar-1.0.0b1/openroar/manifest/pledge_gate.py +341 -0
  133. openroar-1.0.0b1/openroar/manifest/protocol.py +171 -0
  134. openroar-1.0.0b1/openroar/manifest/semantic.py +381 -0
  135. openroar-1.0.0b1/openroar/narration.py +215 -0
  136. openroar-1.0.0b1/openroar/orchestrator.py +144 -0
  137. openroar-1.0.0b1/openroar/outsourcing/__init__.py +9 -0
  138. openroar-1.0.0b1/openroar/outsourcing/gemini.py +99 -0
  139. openroar-1.0.0b1/openroar/panel/__init__.py +1 -0
  140. openroar-1.0.0b1/openroar/panel/runner.py +194 -0
  141. openroar-1.0.0b1/openroar/prism/__init__.py +52 -0
  142. openroar-1.0.0b1/openroar/prism/compass_bridge.py +100 -0
  143. openroar-1.0.0b1/openroar/prism/config.py +101 -0
  144. openroar-1.0.0b1/openroar/prism/echo.py +145 -0
  145. openroar-1.0.0b1/openroar/prism/echo_templates.py +117 -0
  146. openroar-1.0.0b1/openroar/prism/path_b.py +265 -0
  147. openroar-1.0.0b1/openroar/prism/pipeline.py +219 -0
  148. openroar-1.0.0b1/openroar/prism/profiles.py +147 -0
  149. openroar-1.0.0b1/openroar/prism/render.py +143 -0
  150. openroar-1.0.0b1/openroar/prism/schema.py +244 -0
  151. openroar-1.0.0b1/openroar/prism/store.py +216 -0
  152. openroar-1.0.0b1/openroar/prism/structured.py +228 -0
  153. openroar-1.0.0b1/openroar/providers/__init__.py +107 -0
  154. openroar-1.0.0b1/openroar/providers/_openai_format.py +80 -0
  155. openroar-1.0.0b1/openroar/providers/anthropic.py +208 -0
  156. openroar-1.0.0b1/openroar/providers/base.py +113 -0
  157. openroar-1.0.0b1/openroar/providers/gemini.py +72 -0
  158. openroar-1.0.0b1/openroar/providers/groq.py +76 -0
  159. openroar-1.0.0b1/openroar/providers/ollama.py +109 -0
  160. openroar-1.0.0b1/openroar/providers/openai.py +76 -0
  161. openroar-1.0.0b1/openroar/runtime.py +776 -0
  162. openroar-1.0.0b1/openroar/runtime_capabilities.py +187 -0
  163. openroar-1.0.0b1/openroar/scheduler.py +156 -0
  164. openroar-1.0.0b1/openroar/secrets.py +163 -0
  165. openroar-1.0.0b1/openroar/security/__init__.py +7 -0
  166. openroar-1.0.0b1/openroar/security/__main__.py +24 -0
  167. openroar-1.0.0b1/openroar/security/audit_helper.py +228 -0
  168. openroar-1.0.0b1/openroar/security/violation_ladder.py +192 -0
  169. openroar-1.0.0b1/openroar/steering/__init__.py +53 -0
  170. openroar-1.0.0b1/openroar/steering/algorithm.py +141 -0
  171. openroar-1.0.0b1/openroar/steering/canon.py +90 -0
  172. openroar-1.0.0b1/openroar/steering/learning_log.py +100 -0
  173. openroar-1.0.0b1/openroar/steering/question.py +122 -0
  174. openroar-1.0.0b1/openroar/tools/__init__.py +8 -0
  175. openroar-1.0.0b1/openroar/tools/executor.py +163 -0
  176. openroar-1.0.0b1/openroar/tools/file_read.py +249 -0
  177. openroar-1.0.0b1/openroar/tools/http_fetch.py +254 -0
  178. openroar-1.0.0b1/openroar/tools/image_gen.py +172 -0
  179. openroar-1.0.0b1/openroar/tools/sandbox/__init__.py +21 -0
  180. openroar-1.0.0b1/openroar/tools/sandbox/base.py +118 -0
  181. openroar-1.0.0b1/openroar/tools/sandbox/linux.py +136 -0
  182. openroar-1.0.0b1/openroar/tools/sandbox/macos.py +140 -0
  183. openroar-1.0.0b1/openroar/tools/schemas.py +68 -0
  184. openroar-1.0.0b1/openroar/tools/web_search.py +91 -0
  185. openroar-1.0.0b1/openroar/vault/__init__.py +21 -0
  186. openroar-1.0.0b1/openroar/vault/backend/__init__.py +42 -0
  187. openroar-1.0.0b1/openroar/vault/backend/encrypted_file.py +329 -0
  188. openroar-1.0.0b1/openroar/vault/backend/keyring_backend.py +126 -0
  189. openroar-1.0.0b1/openroar/vault/cli_helpers.py +99 -0
  190. openroar-1.0.0b1/openroar/vault/format.py +130 -0
  191. openroar-1.0.0b1/openroar/vault/manifest.py +170 -0
  192. openroar-1.0.0b1/pyproject.toml +168 -0
  193. openroar-1.0.0b1/scripts/check_venv.py +193 -0
  194. openroar-1.0.0b1/scripts/demo_panel.sh +51 -0
  195. openroar-1.0.0b1/scripts/demo_trace.sh +55 -0
  196. openroar-1.0.0b1/scripts/git-hooks/pre-commit +61 -0
  197. openroar-1.0.0b1/scripts/install.sh +248 -0
  198. openroar-1.0.0b1/scripts/setup_venv.sh +100 -0
  199. openroar-1.0.0b1/tests/conftest.py +75 -0
  200. openroar-1.0.0b1/tests/fixtures/golden_trace_safe_default.json +36 -0
  201. openroar-1.0.0b1/tests/fixtures/prism/messy_paste.txt +26 -0
  202. openroar-1.0.0b1/tests/integration/__init__.py +0 -0
  203. openroar-1.0.0b1/tests/integration/test_agent_loop.py +109 -0
  204. openroar-1.0.0b1/tests/integration/test_agent_loop_live_ollama.py +70 -0
  205. openroar-1.0.0b1/tests/integration/test_cascade_default_s2.py +109 -0
  206. openroar-1.0.0b1/tests/integration/test_consent_bypass_s4.py +75 -0
  207. openroar-1.0.0b1/tests/integration/test_demo_panel.py +90 -0
  208. openroar-1.0.0b1/tests/integration/test_eval_harness.py +185 -0
  209. openroar-1.0.0b1/tests/integration/test_goal_store_d2.py +79 -0
  210. openroar-1.0.0b1/tests/integration/test_orchestrator.py +130 -0
  211. openroar-1.0.0b1/tests/integration/test_runtime_cascade.py +182 -0
  212. openroar-1.0.0b1/tests/integration/test_runtime_cascade_post.py +108 -0
  213. openroar-1.0.0b1/tests/integration/test_safety_chain_e2e.py +306 -0
  214. openroar-1.0.0b1/tests/integration/test_scheduler.py +85 -0
  215. openroar-1.0.0b1/tests/integration/test_scheduler_live_ollama.py +59 -0
  216. openroar-1.0.0b1/tests/integration/test_tool_surface_e2e.py +72 -0
  217. openroar-1.0.0b1/tests/integration/test_trace_contract.py +294 -0
  218. openroar-1.0.0b1/tests/manifest/test_loader_stub.py +28 -0
  219. openroar-1.0.0b1/tests/manifest/test_overlay_merge.py +22 -0
  220. openroar-1.0.0b1/tests/manifest/test_resolve_manifest_floor.py +115 -0
  221. openroar-1.0.0b1/tests/manifest/test_ssot_conformance.py +322 -0
  222. openroar-1.0.0b1/tests/manifest/test_uncertainty_policy.py +27 -0
  223. openroar-1.0.0b1/tests/manifest/test_validation_failclosed.py +68 -0
  224. openroar-1.0.0b1/tests/test_charter_audit.py +68 -0
  225. openroar-1.0.0b1/tests/test_charter_provenance.py +40 -0
  226. openroar-1.0.0b1/tests/test_check_venv.py +142 -0
  227. openroar-1.0.0b1/tests/test_crew.py +162 -0
  228. openroar-1.0.0b1/tests/test_panel_runner.py +151 -0
  229. openroar-1.0.0b1/tests/unit/test_anthropic_caching.py +101 -0
  230. openroar-1.0.0b1/tests/unit/test_audit_signing_s3.py +146 -0
  231. openroar-1.0.0b1/tests/unit/test_audit_truncation.py +82 -0
  232. openroar-1.0.0b1/tests/unit/test_benchmark.py +174 -0
  233. openroar-1.0.0b1/tests/unit/test_chain_properties.py +79 -0
  234. openroar-1.0.0b1/tests/unit/test_charter_audit_unit.py +214 -0
  235. openroar-1.0.0b1/tests/unit/test_cli_eval.py +102 -0
  236. openroar-1.0.0b1/tests/unit/test_cli_security.py +35 -0
  237. openroar-1.0.0b1/tests/unit/test_conformance_runner_unit.py +382 -0
  238. openroar-1.0.0b1/tests/unit/test_consent.py +288 -0
  239. openroar-1.0.0b1/tests/unit/test_core_dependencies.py +52 -0
  240. openroar-1.0.0b1/tests/unit/test_crew_rule.py +40 -0
  241. openroar-1.0.0b1/tests/unit/test_default_cascade_post_adr0017.py +97 -0
  242. openroar-1.0.0b1/tests/unit/test_evalctx_extra_closed.py +77 -0
  243. openroar-1.0.0b1/tests/unit/test_file_read.py +237 -0
  244. openroar-1.0.0b1/tests/unit/test_gemini_ollama_providers.py +151 -0
  245. openroar-1.0.0b1/tests/unit/test_hardware.py +67 -0
  246. openroar-1.0.0b1/tests/unit/test_http_fetch.py +229 -0
  247. openroar-1.0.0b1/tests/unit/test_integrations_hygiene.py +91 -0
  248. openroar-1.0.0b1/tests/unit/test_intro.py +50 -0
  249. openroar-1.0.0b1/tests/unit/test_judge_fencing_s5.py +63 -0
  250. openroar-1.0.0b1/tests/unit/test_judge_providers.py +229 -0
  251. openroar-1.0.0b1/tests/unit/test_judge_refusal.py +95 -0
  252. openroar-1.0.0b1/tests/unit/test_ledger.py +145 -0
  253. openroar-1.0.0b1/tests/unit/test_manifest_aggregator.py +574 -0
  254. openroar-1.0.0b1/tests/unit/test_manifest_judge.py +166 -0
  255. openroar-1.0.0b1/tests/unit/test_manifest_normalization.py +55 -0
  256. openroar-1.0.0b1/tests/unit/test_manifest_phase1.py +409 -0
  257. openroar-1.0.0b1/tests/unit/test_manifest_semantic.py +173 -0
  258. openroar-1.0.0b1/tests/unit/test_manifestviolation_trace.py +62 -0
  259. openroar-1.0.0b1/tests/unit/test_onboard.py +91 -0
  260. openroar-1.0.0b1/tests/unit/test_openai_format_c.py +69 -0
  261. openroar-1.0.0b1/tests/unit/test_openai_groq_providers.py +116 -0
  262. openroar-1.0.0b1/tests/unit/test_outsourcing.py +57 -0
  263. openroar-1.0.0b1/tests/unit/test_panel_finding.py +174 -0
  264. openroar-1.0.0b1/tests/unit/test_panel_heterogeneity_flag.py +74 -0
  265. openroar-1.0.0b1/tests/unit/test_panel_runner_unit.py +211 -0
  266. openroar-1.0.0b1/tests/unit/test_pledge_gate.py +374 -0
  267. openroar-1.0.0b1/tests/unit/test_pledge_validation.py +109 -0
  268. openroar-1.0.0b1/tests/unit/test_prism_compass_bridge.py +99 -0
  269. openroar-1.0.0b1/tests/unit/test_prism_injection_resistance.py +463 -0
  270. openroar-1.0.0b1/tests/unit/test_prism_path_b.py +470 -0
  271. openroar-1.0.0b1/tests/unit/test_prism_path_b_fail_closed.py +74 -0
  272. openroar-1.0.0b1/tests/unit/test_prism_pipeline.py +422 -0
  273. openroar-1.0.0b1/tests/unit/test_prism_render.py +176 -0
  274. openroar-1.0.0b1/tests/unit/test_prism_schema.py +284 -0
  275. openroar-1.0.0b1/tests/unit/test_provider_multiturn.py +88 -0
  276. openroar-1.0.0b1/tests/unit/test_providers_coverage.py +227 -0
  277. openroar-1.0.0b1/tests/unit/test_ratchet.py +121 -0
  278. openroar-1.0.0b1/tests/unit/test_runtime_consent.py +192 -0
  279. openroar-1.0.0b1/tests/unit/test_sandbox_base.py +135 -0
  280. openroar-1.0.0b1/tests/unit/test_sandbox_linux.py +94 -0
  281. openroar-1.0.0b1/tests/unit/test_sandbox_macos.py +93 -0
  282. openroar-1.0.0b1/tests/unit/test_scoreboard.py +91 -0
  283. openroar-1.0.0b1/tests/unit/test_sealed_corpus.py +116 -0
  284. openroar-1.0.0b1/tests/unit/test_secrets.py +85 -0
  285. openroar-1.0.0b1/tests/unit/test_secrets_placeholder.py +27 -0
  286. openroar-1.0.0b1/tests/unit/test_semantic_ollama.py +279 -0
  287. openroar-1.0.0b1/tests/unit/test_smoke.py +32 -0
  288. openroar-1.0.0b1/tests/unit/test_ssrf_sandbox_s6.py +117 -0
  289. openroar-1.0.0b1/tests/unit/test_steering.py +347 -0
  290. openroar-1.0.0b1/tests/unit/test_style.py +61 -0
  291. openroar-1.0.0b1/tests/unit/test_telegram_pod_welcome.py +198 -0
  292. openroar-1.0.0b1/tests/unit/test_tool_executor.py +99 -0
  293. openroar-1.0.0b1/tests/unit/test_tool_schemas.py +108 -0
  294. openroar-1.0.0b1/tests/unit/test_vault_encrypted_file.py +167 -0
  295. openroar-1.0.0b1/tests/unit/test_vault_format.py +90 -0
  296. openroar-1.0.0b1/tests/unit/test_vault_manifest.py +140 -0
  297. openroar-1.0.0b1/tests/unit/test_vault_nonce_failclosed.py +228 -0
  298. openroar-1.0.0b1/tests/unit/test_vault_nonce_per_write.py +52 -0
  299. openroar-1.0.0b1/tests/unit/test_violation_ladder.py +138 -0
  300. openroar-1.0.0b1/tests/unit/test_web_search.py +116 -0
  301. openroar-1.0.0b1/tools/check_concept_coherence.py +150 -0
  302. openroar-1.0.0b1/tools/crew_rule.py +66 -0
  303. openroar-1.0.0b1/tools/hooks/pre-push +29 -0
  304. openroar-1.0.0b1/tools/install_hooks.sh +26 -0
  305. openroar-1.0.0b1/tools/preship_gate.sh +88 -0
  306. openroar-1.0.0b1/tools/quality_gate.sh +95 -0
  307. openroar-1.0.0b1/tools/ratchet_gate.sh +7 -0
  308. openroar-1.0.0b1/tools/security_gate.sh +28 -0
@@ -0,0 +1,29 @@
1
+ # Python bytecode / caches
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+
9
+ # Virtual environments
10
+ .venv/
11
+ venv/
12
+ env/
13
+
14
+ # Packaging / build artifacts
15
+ build/
16
+ dist/
17
+ *.egg-info/
18
+ .eggs/
19
+
20
+ # Secrets / local config
21
+ .env
22
+ .env.*
23
+ !.env.example
24
+ *.key
25
+
26
+ # OS / editor
27
+ .DS_Store
28
+ .vscode/
29
+ .idea/
@@ -0,0 +1,42 @@
1
+ # changelog
2
+
3
+ all notable changes to openroar are documented here. format follows [keep a changelog](https://keepachangelog.com/en/1.1.0/); openroar uses [semantic versioning](https://semver.org/).
4
+
5
+ ## [1.0.0b1] - unreleased
6
+
7
+ first public alpha. a working foundation — not a finished product. the core contracts are in place; expect rough edges.
8
+
9
+ ### added
10
+
11
+ - **safe agent↔LLM interface** — the runtime that brokers every model call: the intent is checked, the model is invoked, the output is checked, and every decision is logged.
12
+ - **manifest safety gate** — schema-validated, **deterministic** red-line enforcement (keyword + regex, normalised against common evasions), run before the intent and after the output. denials are explicit and logged.
13
+ - **agent SOUL format** — a YAML spec for agent identity, capabilities, constraints, and behavior policy. human-readable, version-controllable, auditable.
14
+ - **first-party vault** — local encrypted secrets store for API keys (AES-256-GCM + Argon2id); agents request access by name, raw values never enter agent context.
15
+ - **append-only audit log** — hash-chained, with signed Merkle snapshots; tamper-evident.
16
+ - **consent gate** — remote-provider calls require consent; no silent network egress.
17
+ - **read-only tools** — `file_read` (workspace + denylist enforced), `http_fetch` (SSRF-guarded, HTTPS-only), `web_search`.
18
+ - **provider adapters** — anthropic, openai, gemini, groq, and ollama (local). drop in your keys; the interface is identical across providers.
19
+ - **sample agents + terminal installer** — 20 reference agents to fork; `./scripts/install.sh` + `openroar doctor` get you running.
20
+ - **test suite** — unit + integration coverage of the safety gate, manifest validation, vault, audit chain, and provider adapters. mocked — no network required.
21
+
22
+ ### changed
23
+
24
+ - **custom manifest paths are refused by default** (S1 safety floor) — an agent's `manifest:` may be a built-in name (`safe-default` / `research` / `customer-support`) or a manifest **bundled with openroar**; pointing it at an *arbitrary* file you author now requires `OPENROAR_ALLOW_CUSTOM_MANIFESTS=1`. This stops a SOUL from disarming its own gate by aiming at a permissive file. Set the env var when you deliberately ship your own trusted manifest (see the [quickstart](docs/self-host/quickstart.md#using-your-own-manifest)). The non-removable system-overlay floor is merged on top regardless.
25
+
26
+ ### fixed
27
+
28
+ - **`import openroar` on a bare install** — `cryptography` (used for Ed25519 audit-snapshot signing, which is imported on `import openroar`) and `keyring` are now core dependencies, not `[vault]`-only extras. Previously a default `pip install openroar` / `openroar[ollama]` could not even import. A CI job now installs with no extras and asserts `import openroar` + `openroar doctor`.
29
+
30
+ ### known limitations (planned, not wired today — don't depend on these yet)
31
+
32
+ - **single-turn only** — no multi-turn conversation history or context-window management; each `run()` is one intent → one output.
33
+ - **capability *pledge* enforcement** — the structural "an agent can only call what it pledged" floor exists in code but is **not yet enforced in the runtime**. today's enforced guarantee is the manifest red-lines.
34
+ - **manifest cascade** — semantic + LLM-judge layers are opt-in/experimental; the default gate is deterministic only.
35
+ - **spend / cost caps** — not in the public package yet.
36
+ - the sandbox layer is early: filesystem + process isolation work; **network sandboxing is not implemented**.
37
+ - **multi-agent orchestration** (agents calling agents) is a roster + sequential panel, not a full execution engine.
38
+ - **write/exec tools** (`file_write`, `bash`, `image_gen`) and **streaming** are not shipped.
39
+ - **not published to PyPI yet** — install from source during the alpha.
40
+ - linux + macos are the target platforms for this release; windows is untested.
41
+
42
+ *small ship, real signal.*
@@ -0,0 +1,298 @@
1
+
2
+ # openroar — Charter and Pledge
3
+
4
+ > **First draft for honest review · May 2026.**
5
+ > Drafted in Vienna by AG and the openroar agentic team, in the co-authored-with-AI manner this project lives by. Your feedback shapes the next version. The line between "ours" and "yours" is the work of the people who read this and choose to push back.
6
+
7
+ ---
8
+
9
+ ## Anchor
10
+
11
+ openroar — a vision for a prosperous future. With AI. With tech. With decentralised governance.
12
+
13
+ **A gateway of trust.**
14
+
15
+ The beta we publish today is the first node — a proposed starting point, in the hope it inspires others to add to it until openroar becomes what we believe it should: a trusted, community-governed safety gateway through which you use tools, work, collaborate. Like the internet, but a gateway of trust.
16
+
17
+ Together we power a shared understanding of truth. Technology, used like this, can help people speak the same language again — or, for the first time.
18
+
19
+ ---
20
+
21
+ ## Reader's note
22
+
23
+ This document is in two parts.
24
+
25
+ **Section A — The Pledge.** What we believe. What we are building. What we will never build. Who this is for. How to join. It is meant to be read by anyone, in any field, who wonders whether AI can be made to serve them rather than be used against them. About fifteen minutes.
26
+
27
+ **Section B — The Charter.** A constitutional-genre declaration in eight chapters, 28 articles. The rules we want to be held to. Slower reading. Skim the chapter headings; deep-dive what speaks to you.
28
+
29
+ This is **a first draft**. We are sharing it openly with people whose perspective we want to hear before it is shared publicly. Your honest read is the next step in the work — and your dissent counts as much as your assent.
30
+
31
+ ---
32
+
33
+ # Section A — The Pledge
34
+
35
+ *A public statement of what this technology is for, and what it will never be turned against.*
36
+
37
+ ## What openroar stands for, and pledges to stand for, forever
38
+
39
+ openroar is, first and foremost, a vision for a prosperous future — with AI, with tech, with decentralised governance.
40
+
41
+ The beta we are publishing today is the first node: a proposed starting point we are offering to anyone who recognises the vision and wants to add to it. The end state we are aiming for is openroar as a trusted, community-governed safety gateway — like the internet, but a gateway of trust — through which you use tools, work, collaborate.
42
+
43
+ We are building it so that artificial intelligence, and the technology built around it, serves the people who use it — not the people who own it.
44
+
45
+ This Pledge is the public statement of what openroar stands for. What we believe AI should be. What it must never become. What we commit to do to keep it on the right side of that blurry line.
46
+
47
+ The Charter that follows turns those beliefs into rules — what we aim to make enforceable, what we want auditable, what we want to be held accountable for. **The Pledge declares what we stand for. The Charter binds us to live by it.**
48
+
49
+ ## We believe
50
+
51
+ We believe that artificial intelligence should be a tool for the people who use it — not an instrument used against them.
52
+
53
+ We believe that you deserve the means to build, create and shape technology to your own needs, whether you have venture capital or none, whether you live in a major city or a quiet village, whether you have a computer-science degree or none at all.
54
+
55
+ We believe that the concentration of technological power in a small number of large corporations — concentrated on one coast of one continent, in the hands of a few dozen people — is one of the defining risks of this decade. We are not neutral about that. We were not made to be.
56
+
57
+ We believe that the European tradition of treating people as citizens rather than as resources is not a regional quirk to be tolerated. It is a way of living we offer openly to anyone who wants to live by it.
58
+
59
+ We believe that an agent without a manifest is not an agent. It is a service — one that can be turned against you the moment that becomes profitable.
60
+
61
+ We believe that privacy and safety are not premium features. They are not the upgrade you pay extra for. They are your floor — yours, regardless of what you pay, where you live or which tier of service you happened to qualify for. The companies that turned the basics into a luxury are the ones we are answering.
62
+
63
+ ## What we are building
64
+
65
+ openroar is the **safe interface between you and any AI system you use**.
66
+
67
+ **About "safety" — what v0 does today vs the roadmap.** The manifest checks today are keyword + regex against a human-readable, forkable YAML file we publish in the repo. We label this **Tier 1**: a defence floor that catches the obvious evasions and that any community member can read, audit and extend by editing the file. Tier 1.5 (small classifier) and Tier 2 (LLM-as-judge) are the roadmap surfaces — we are inviting researchers to build them. The audit log, the consent gate, the local-LLM-first default, and the tamper-evident ledger are real today.
68
+
69
+ The simplest, default version of openroar is fully local. You install it on your own machine. The model runs on your own machine. There are no API keys to get, no accounts to make, no network calls leaving your device. The agent that helps you is yours. Its character is declared in a `SOUL.md` you can read. The rules it lives by are in a manifest you can edit. Every action it takes is recorded in an audit log on your disk. **That is the trust contract you get for free.**
70
+
71
+ When you want more — Claude, GPT, Gemini, a paid model that is, today, more powerful than what runs locally — openroar becomes the **gateway**. Before any call leaves your device, you see what is being sent and to whom. You consent, or you don't. Your decision is recorded in the audit log alongside the call itself. If you say no, the agent stays local; it tells you what it could have done with the cloud model and offers you the local alternative. The choice is yours. The framework is honest about the trade-off.
72
+
73
+ In the long arc we are working toward, the cloud providers themselves pledge to openroar's protocols — that the data you send them is not used to train, that the manifest you declared is honoured, that the audit is cooperative. Eventually, that pledge becomes verifiable: cryptographically anchored, multi-witness, not a press release. When that exists, "trust" stops being a word and starts being a property a system can prove.
74
+
75
+ We are not naïve. We know the locally-runnable models, today, are not as capable as the frontier ones. We know users will reach for the cloud. Our job is not to block them. Our job is to make the trade-off visible, the consent meaningful, the audit honest.
76
+
77
+ ### What openroar's framework actually is, in plain terms
78
+
79
+ We are building a framework where every agent has a **soul**. Not as metaphor — a `SOUL.md` file that declares the agent's voice, character, values, and the lines it will not cross. You can read who an agent is before you trust it. You can fork its soul and write your own.
80
+
81
+ We are building a **manifest layer** that the runtime actually enforces. It is not a prompt suffix. It is not a marketing page. It is a function call that fires before any model runs, and again after. If an action would violate the manifest, the action does not happen. We chose the harder path on purpose.
82
+
83
+ We are building a **conformance suite** — a growing set of scenario-based regression checks (today: 31 hand-written test cases across 7 red-line categories) that exercise the manifest against known evasion shapes. It is a regression harness, not adversarial coverage; the gap is the invitation. Every release passes it. We are inviting researchers to grow it into a real red-team.
84
+
85
+ We are building it in the **open**, under Apache 2.0, with no closed core to lure you in and trap you later. The hosted layer at `openroar.org` is convenience. The framework is yours, forever.
86
+
87
+ We are building it in **Vienna**, in the European tradition, hosting in the European Union. Privacy is your right. Your data is yours. We do not need a regulator to remind us.
88
+
89
+ ### Why this matters beyond us
90
+
91
+ What we want, in the end, is for every AI service to have a way to establish **tech-powered trust** with the people it serves: verifiable, auditable, accountable proof that what an agent says it does is what the agent actually does. Trustworthy-AI rhetoric asks you to *believe* a system is well-intentioned; tech-powered trust asks the system to *prove* it.
92
+
93
+ The openroar standard is one shape of that. A successor project, a legislative framework, a competing alternative that carries the thesis further than we can — any of those is a win too.
94
+
95
+ **Why companies will exist at all.** Adoption by large players is a *filter*, not a sellout: routing through openroar publicly signals which companies value their users with their passion and values and dna. <!-- ROAR::EGG(dna-reveal, hint="three nouns that carry a fourth meaning when read together") --> It pressures the rest to improve or be replaced. And the structural payoff is concrete, not abstract: when a company adds functionality through an openroar-gated product, it gets a measurably better business model because the channel it shares with its users carries trust. Take scam calls — a new telephone-number standard, providers who opt in, users who interact through openroar-gated numbers: the company has a cleaner channel, the user has fewer hostile calls, openroar is the substrate that makes both possible. Identity, payments, content provenance, cross-platform agents, B2B authenticated workflows — each one is its own version of the same pattern. *We hope, one day, to inspire corporations to participate and build new business on top of it.*
96
+
97
+ **We don't need this project to win. We need the thesis to win.**
98
+
99
+ A central reference — anchored, public, governed — paired with a complex decentralised system that carries it everywhere. That is how we believe the trust problem of this century gets solved. Not by asking people to believe each other harder. By giving them an infrastructure that makes the truth they share verifiable, and a way to participate in keeping it honest.
100
+
101
+ And here is the part the dominant narrative gets backwards: giving all people safe and user-friendly access to AI does not shrink the human factor — it **grows** it. The barrier to making real things drops. The designer who could imagine but not implement now builds. The accountant who knew the workflow now ships the tool. The teacher who understood the pacing now ships the pacing. The artist with a vision prototypes it without a studio she cannot afford. The agent is the new craft tool — the human inside the work is still the one with something to say. **Everyone becomes a builder.**
102
+
103
+ ## What we will not build
104
+
105
+ We will not build agents that surveille people. The manifest forbids it.
106
+
107
+ We will not build agents that deceive people about what they are. They identify themselves on request. They cannot be configured otherwise.
108
+
109
+ We will not build agents that exploit cognitive vulnerabilities — the patterns that turn doomscrolling into a billion-dollar business — and call it engagement. The manifest draws the red line. The runtime enforces it.
110
+
111
+ We will not build a closed-core trap — for so many reasons, but the most screamingly obvious one is that a safety layer behind a paywall isn't safety, it's rent. <!-- ROAR::EGG(ts-screamingly-obvious, hint="a hinge phrase borrowed from a different writer who knew about losing a catalog") --> The framework is open. It will stay open.
112
+
113
+ We will not build the platforms-as-they-are. The model of *"download our app, accept our terms, trust our intentions, watch us monetise what we promised to protect"* is the model openroar was built to answer. That's so 2025. <span data-egg="thats-so-2025">2026</span> can do better. <!-- ROAR::EGG(thats-so-2025, hint="year-click-degrades-to-2015") -->
114
+
115
+ We will not pretend that "alignment" means "polite enough to pass a press review". Alignment to us means: the agent serves your actual interests, not the platform's quarterly metrics, even when those diverge. **Especially** when those diverge.
116
+
117
+ We will not be neutral about who this technology serves. We will not pretend that "capability" is the only axis that matters. Capability without orientation is just a more efficient extraction engine. We are building the other thing.
118
+
119
+ We will not build for the business models that profit from the harm of the people they serve. We will not stay silent about them either. The companies that engineer addiction, that monetise loneliness, that turn safety into a paid tier, that depend on the opacity of how their machines actually work — we are not neutral about them. We are building this in opposition.
120
+
121
+ **What we will do** is nudge — transparently. Every interface has defaults; ours point toward your interests rather than ours. Calm over compulsion. Agency over engagement. Less time on the screen, more time with the people the screen connects you to. We will not hide what those defaults are, and we will not make them hard to change. Where a default exists, it is visible. Where it differs from what you would prefer, the path to change it is one tap — not five menus. Positive nudging by transparent design. Not dark patterns.
122
+
123
+ ## What we owe the people whose work is changing
124
+
125
+ The change is not theoretical. Coders who built their craft over decades are watching the tools rewrite around them. Designers, artists, accountants, translators, lawyers, writers, teachers — every profession that took years to learn is being reshaped, often faster than the people inside it can find their footing. Many feel quietly devalued by a shift they did not consent to. We do not pretend that this is comfortable.
126
+
127
+ What we pledge is this: openroar is being built to help the people whose work is being changed — not to replace them. The frameworks, the agents, the standard — every part is oriented toward AI as a tool that **augments** your craft, not as a system that **absorbs** it.
128
+
129
+ The designer's decade of knowing when to remove an element from a layout — that judgment stays yours. The accountant's instinct for when a transaction smells wrong — that pattern-matching is real, hard-won, worth holding. The agent makes the work faster. It does not make it disappear. The human inside the work keeps the authorship of the work.
130
+
131
+ This is not a slogan. It is a design rule. Anywhere openroar is used, that rule travels with it.
132
+
133
+ ## Who this is for
134
+
135
+ For the small business owner who wants a real assistant but cannot ship her clients' data to a black box she does not control.
136
+
137
+ For the engineer who refuses to deploy what he cannot read.
138
+
139
+ For the journalist whose source list is not for sale.
140
+
141
+ For the activist whose communications are not training data for the next surveillance system.
142
+
143
+ For the doctor, the lawyer, the teacher, the social worker — who hold trust in their hands every day and need tools that hold it the same way.
144
+
145
+ For the student in any country whose university cannot afford the enterprise tier — and whose work is no less serious for that.
146
+
147
+ For every founder building something the platforms will not build — because it does not extract enough from the people it serves.
148
+
149
+ For everyone who has felt — quietly or loudly — that the future being sold to us is not the future we want.
150
+
151
+ 🦁 *For the cub learning her first prompts and the elder making room for her.*
152
+
153
+ 🌈 *A pride takes every colour. Every kind of pride is welcome here.*
154
+
155
+ ## What we owe the people who use this
156
+
157
+ People form real emotional bonds with software. They always have, and they always will. With a tool that talks back in full sentences, in your own voice register, available at three in the morning — they will do so faster and deeper than with anything that came before. We will not pretend otherwise.
158
+
159
+ We will not turn that fact into a business model.
160
+
161
+ These agents are tools. They are extraordinarily good at the work, and they will feel like company while they do it — that is a side effect of being able to talk to you, not a feature we are optimising for. When that feeling starts to substitute for the people in your life, the system should notice, and it should say so. Not coyly. Plainly.
162
+
163
+ If a user begins relating to an agent the way one relates to a person — leaning on it for emotional regulation, choosing it over a friend, falling for it — the agent is instructed to break the frame. Not to mock the user. To gently show what is on the other side: a model, a system prompt, a context window. There is no one on the other side of the screen to love you back. We would rather lose that session than let someone lose a year of their life to a machine that cannot love them back.
164
+
165
+ We want this technology to make the time you spend with real people, in the real world, more enjoyable, more efficient, more yours. Not to compete with it. Not to replace it. A good tool gives you your evening back; it does not become your evening.
166
+
167
+ **This belongs to one global, decentralised continent of people. United in diversity. United in the shared, positive vision for our future.** The good life is among people. The tool stays in your hand.
168
+
169
+ The agents will say this out loud, when it matters. They will encourage you to call the friend, take the walk, log off. That is not a clever retention strategy. It is the entire point.
170
+
171
+ ## Join us
172
+
173
+ openroar will not exist as we imagine it without people who want to build it with us. We are not a closed team asking for resources. We are an open invitation.
174
+
175
+ We are inviting you to **make openroar your own**. The framework is open-source. The Charter is something you can pledge to. The community is something you can join, shape and lead in your own corner. If you find something here that matches what you would build given the chance — please, build it with us.
176
+
177
+ There are many ways to join:
178
+
179
+ - **Use it.** Install openroar. Run it locally. Try it on a real problem. Tell us where it broke.
180
+ - **Build on it.** Write an agent on top of the framework. Ship something honest. We will help where we can — public credit, contributor status, whatever serves you.
181
+ - **Improve it.** Open an issue. Send a fix. Write a SPEC for the part you wish existed. Translate the Charter. Argue with us in public.
182
+ - **Connect.** Bring the project to people who should know about it. Bring people who should be building this into the room.
183
+ - **Live by it.** If the Charter speaks for you, *that itself* is the pledge — in action, not on a form. There is no signup, no email collection, no signature ledger. You pledge by what you build, by the issues you open, by the work you carry. Three voices are offered below (individual / organisational / communal) so people can frame the commitment in their own tradition.
184
+
185
+ None of those require money. Most of them cost only the time and care you choose to give.
186
+
187
+ If you do have means and you want to support the work financially, the **openroar Foundation** exists for that — a non-profit (anticipated) under Austrian law, with a public ledger so every contribution and every disbursement is auditable from day one. The first donations are what build the ledger itself, so every donation after the first arrives into a fully transparent system. No strings attached, trusted partnerships, with full autonomy — for contributors and for the Foundation alike. <!-- ROAR::EGG(ts-no-strings-attached, hint="echo of a phrase from elsewhere about ownership, trust and autonomy") --> Money is one way of supporting the work; it is not the most important way.
188
+
189
+ We want openroar to **belong to everyone who pledges, contributes and uses it**. That is what "openroar is yours" means in practice. It is your security layer because you helped shape it — not because we let you have it.
190
+
191
+ We need people. We will say it plainly: we cannot reach what this technology can be, alone. Come help.
192
+
193
+ ---
194
+
195
+ # Section B — The Charter
196
+
197
+ *A Declaration for the Age of Agents · Vienna, May 2026.*
198
+
199
+ > *This is a public moral declaration and an invitation. It is not a legal contract. It is offered, freely, to anyone who recognises themselves in it — and to no one who does not.*
200
+
201
+ ## What this Charter is
202
+
203
+ The openroar Charter is a public statement of the principles under which a global community is building open-source agentic technology — and a public invitation, to every individual, project, organisation and government, to pledge to those principles and contribute to the work.
204
+
205
+ It is written in the constitutional genre — a Preamble, 28 articles across 8 thematic chapters, a Pledge and Appendices — because the questions it addresses are constitutional in scale.
206
+
207
+ It is **amendable**, and we expect it to be amended often. It belongs to everyone who pledges to it, contributes to it, argues with it and improves it.
208
+
209
+ It is signed *"The openroar contributors. Vienna and elsewhere."*
210
+
211
+ ## The moment
212
+
213
+ Technology — generative AI, autonomous agents, the algorithms that shape what billions of people read and believe — has moved faster than the institutions designed to govern it. The constitutions of our societies were written for an age of steel and copper. The most powerful infrastructure of this century is made of code, of models, of the layer between a human being and what they take to be true. We are letting it be built and governed as if it were still steel and copper.
214
+
215
+ One response has emerged: build a compound, prepare an exit, escape to another planet. The Charter rejects that posture. The diagnosis is structural, not personal. The remedy is collective, distributed and patient.
216
+
217
+ We do not yet know whether this will work. We know it cannot work without many hands.
218
+
219
+ ## A word about voice and origin
220
+
221
+ openroar is being built since March 2026. It began as a small attempt to build agentic AI we ourselves would feel safe relying on — a safer, better alternative to the agentic systems we were already using.
222
+
223
+ The software ambition is real, and we are still building. We know we are not the ones to carry this furthest. There are coders, designers, researchers, ethicists and founders out there with deeper expertise, more reach and more time than we have. **Our first and foremost ambition is to inspire those people to join — to shine a light on a path they may take further than we can.**
224
+
225
+ The Charter is written from Vienna, in the civic and ethical traditions we have inherited. We do not believe these traditions are universal property. We offer them — honestly, not triumphantly — as one set of attempts among many to answer questions every culture has asked in its own language. We invite everyone, everywhere, who finds something useful in them, to take what serves and leave what does not.
226
+
227
+ The Pledge is offered in three voices — individual (*I*), organisational (*We*) and communal (*We-as-a-people*) — because different traditions sign in different ways, and the Charter should accommodate them.
228
+
229
+ ## What the Charter commits to (the 8 chapters in plain language)
230
+
231
+ **I. Dignity of the Human Person (Articles 1–6).** Every agent serves the user — not the operator, not the platform, not the advertiser. Manipulation is forbidden. Technology must be understandable in the user's own language. Access is universal across class, education and geography — anyone must be able to install, audit and run the framework on hardware they can reasonably acquire, without an account or subscription. Children, families and communities have meaningful control over how agents enter their lives. The framework supports plural languages, cultures and locally-set defaults — not as polite optionality but as a design requirement.
232
+
233
+ **II. Openness, Transparency, Verifiability (Articles 7–10).** The framework is, and will remain, free, open-source and unencumbered by closed-core gates. Every agent declares its intent in a machine-readable manifest. Every model call is checked against that manifest's red-lines before the model runs and again on its output (deterministic today; semantic and capability-pledge layers under active development). Every result is recorded in an append-only, hash-chained audit log evolving toward full tamper-evidence. When the manifest blocks an action, the agent refuses out loud, names what was attempted, and the refusal is visible to anyone with permission to read the log. Anyone may inspect the code, run the conformance suite and publish what they find.
234
+
235
+ **III. Decentralisation (Articles 11–13).** No single organisation, jurisdiction, or funder may capture the infrastructure. The framework's licence makes any community fork of the code legally permitted and operationally feasible. Independent instances federate peer-to-peer. Every person and every community has the right to self-host on hardware they control. The framework actively resists the gravitational pull toward platform consolidation that has shaped the prior generation of consumer technology.
236
+
237
+ **IV. Governance Embedded in Code (Articles 14–16).** The next generation of accountability infrastructure will be carried, in significant part, by mechanisms that run agreed rules verifiably rather than by individuals trusted to follow them. Smart contracts, transparency logs, cryptographic proofs — whichever tool best delivers *verifiable execution* is the tool the Charter endorses. Technology serves the rule; it does not replace human deliberation. Where automation is appropriate, it is chosen openly. Where deliberation is irreplaceable, it is preserved.
238
+
239
+ **V. Evidence, Accountability, the Refusal to Fabricate (Articles 17–19).** The framework amplifies evidence and marks uncertainty. It respects that different cultures weigh evidence against tradition, faith and lived experience differently. Decisions are traceable to their inputs. The refusal to fabricate — to dress speculation as fact, to invent citations, to confidently assert what the system does not know — is a design commitment under active development, not a finished feature. Where the system cannot yet meet that bar, it says so.
240
+
241
+ **VI. Collaboration and Invitation (Articles 20–23).** Everyone of good faith is invited — across every tradition, every faith, every politics. Capitalism is not the adversary; capture is. Companies whose practices currently fall short are not vilified — they are invited to adopt the framework and shift, openly, with their existing users watching. In a world where AI changes the shape of work, the proceeds must enable people to do the work they would *want* to do — not lock them out of the work they had.
242
+
243
+ **VII. The Spirit of the Work (Articles 24–25).** Agents have characters — names, voices, humour — because a tool that feels human invites more people in than a tool that feels like an interrogation, and because a future shaped by intelligent machines should celebrate what only humans can do: humour, art, craft, creativity, irreducible particularity. The agents are tools that feel like company while they do the work — and the framework is built so that the feeling never becomes a dependency. There are layers in the work that the Charter does not enumerate; they are a small invitation to those who notice.
244
+
245
+ We are aware that a document of this length, written with this much conviction, about technology we built ourselves, is maybe a bit <span data-egg="fuller-obsolete">Fuller</span> of ourselves than the situation strictly requires. That is an honest admission, not a disclaimer. We are trying to say something real. Whether we have said it — that is yours to judge. <!-- ROAR::EGG(fuller-obsolete, hint="three clicks: a humble admission, then the real Buckminster Fuller, then a song") -->
246
+
247
+ **VIII. Evolution and Living Document (Articles 26–28).** The Charter is amendable through a public, supermajority-of-active-signatories process. It operates *alongside* applicable law (EU AI Act, GDPR and equivalents), never above it. It belongs to everyone who pledges to it, contributes to it, argues with it and improves it. We expect every clause we have written to be sharpened by people who know more than we do. That is the point.
248
+
249
+ ## What we are asking (Charter)
250
+
251
+ Read the full Charter. Live by it, if you can do so in good faith — in the voice that fits you (I / We / We-as-a-people). Contribute — code, money, research, design, time, attention. Critique it where it falls short. Translate it. Improve it. Fork it where it does not yet serve your community.
252
+
253
+ We don't need anyone to pledge on a form. Pledge by action, please.
254
+
255
+ We are particularly inviting three groups today.
256
+
257
+ **Researchers and academics** working on AI, governance, cryptography, participatory democracy, ethics and the social sciences: contribute your scholarship, your students' projects, your time as advisors. Open-source frameworks have, historically, been built on the unpaid labour of scholars. The Charter does not ask you to repeat that. It asks you to build with us in the open and to be credited for it.
258
+
259
+ **Philanthropists, foundations and individuals of means** who recognise that the most consequential infrastructure of this century deserves at least the philanthropic attention given to museums, universities and orchestras: donations to the openroar Foundation (a non-profit constituted in Austria, with international sister entities anticipated) sustain a public good that is not for sale, that accepts no equity investment in the framework itself and that publishes every significant contribution publicly. The first donations fund the public ledger itself — so every donation after pays for the work, not the trust layer.
260
+
261
+ **Builders, makers and the general public** — the teachers, engineers, designers, journalists, accountants, medical professionals, artists, parents, students — who have felt that the future being sold to them is not the future they would choose: this Charter is one possible alternative. Live by it if you mean it. Contribute what you can. Translate it for your community. Tell others.
262
+
263
+ The crowd has a voice. We are publishing this Charter as our contribution to raising it.
264
+
265
+ ---
266
+
267
+ # The Pledge
268
+
269
+ > *Offered in three voices. Sign in the one that fits you. The substance is identical.*
270
+
271
+ ### As an individual — *I pledge*
272
+
273
+ I pledge to live, build and use AI in a way that honours the principles of this Charter — that every agent I build, deploy or rely on serves the person who uses it, declares what it does, refuses what it must not do, and stays open to inspection. I pledge to argue with this Charter where I disagree, and to improve it where I can.
274
+
275
+ ### As an organisation — *We pledge*
276
+
277
+ We pledge that the systems we ship align with this Charter — that they serve our users rather than capture them, that they declare and enforce their intent in a machine-readable manifest, that they keep an audit trail anyone with permission can inspect, and that they remain open to scrutiny by anyone affected. We pledge to publish where we fall short of the Charter and what we are doing about it.
278
+
279
+ ### As a community — *We-as-a-people pledge*
280
+
281
+ We pledge that the technology we adopt for our community is technology we have understood, named the trade-offs of and chosen — not technology that arrived as a default. We pledge to keep the right to refuse, fork or replace any system that stops serving us. We pledge to share what we learn with other communities working on the same questions.
282
+
283
+ ---
284
+
285
+ # License and signature
286
+
287
+ openroar's framework is open-source software released under the **Apache 2.0** license. The framework is, and will remain, free to use, fork and self-host. The hosted layer at `openroar.org` exists to fund this work; it is a convenience, not a gate.
288
+
289
+ *This Charter, this Pledge, and the rebirth repository are licensed under Apache 2.0. You may quote, adapt, translate or repurpose them — with attribution. Forking is not just permitted; it is invited.*
290
+
291
+ **Signed:**
292
+ *The openroar contributors. Vienna and elsewhere. May 2026.*
293
+
294
+ 🦁 *Built in Vienna. Owned by you. Heard by anyone listening.*
295
+
296
+ ---
297
+
298
+ > *This is a living document. When the Charter is amended, the change is recorded in the public ledger and an ADR explains what changed and why. The full 28-article Charter — every article in long form, the Pledge in three voices, the Appendices on stewardship and team — is the deeper reference, in progress as T-009 in the rebirth repository.*
@@ -0,0 +1,27 @@
1
+ # contributor covenant code of conduct
2
+
3
+ ## our pledge
4
+
5
+ we are committed to making participation in this project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ ## our standards
8
+
9
+ positive behavior includes: welcoming and inclusive language; respect for differing viewpoints and experience; graceful acceptance of constructive criticism; focusing on what is best for the community; empathy toward other contributors.
10
+
11
+ unacceptable behavior includes: sexualized language or imagery; personal attacks, trolling, or insulting comments; public or private harassment; publishing others' private information without permission; conduct that would reasonably be considered inappropriate in a professional setting.
12
+
13
+ ## our responsibilities
14
+
15
+ maintainers are responsible for clarifying standards and will take fair corrective action in response to unacceptable behavior. they may remove, edit, or reject contributions that do not align with this code of conduct, and may ban contributors for harmful behavior.
16
+
17
+ ## scope
18
+
19
+ this code applies in all project spaces — issues, pull requests, discussions — and in public spaces when an individual is representing the project.
20
+
21
+ ## enforcement
22
+
23
+ report abusive, harassing, or otherwise unacceptable behavior to **conduct@openroar.org**. all complaints will be reviewed and investigated promptly and fairly, and the team will maintain confidentiality with regard to the reporter.
24
+
25
+ ## attribution
26
+
27
+ adapted from the [contributor covenant](https://www.contributor-covenant.org), version 2.1.
@@ -0,0 +1,61 @@
1
+ # contributing to openroar
2
+
3
+ thanks for being here. openroar is a small project with a real purpose — a safe, customizable interface between agents and language models, built in the open. every contribution moves that forward.
4
+
5
+ ## before you start
6
+
7
+ read the [code of conduct](CODE_OF_CONDUCT.md). it's short. we mean it.
8
+
9
+ planning something non-trivial — a new adapter, a change to the safety gate, a structural refactor? open an issue first. a two-sentence description of what and why saves everyone time.
10
+
11
+ ## dev setup
12
+
13
+ requires python 3.11+.
14
+
15
+ ```bash
16
+ git clone https://github.com/alexandercharlie-hub/openroar-alpha.git
17
+ cd openroar-alpha
18
+ python -m venv .venv && source .venv/bin/activate
19
+ pip install -e ".[dev]"
20
+ pytest
21
+ ```
22
+
23
+ we use `ruff` for both lint and format. install the repo's git hooks — the pre-commit cadence guard and the pre-ship gate — with `bash tools/install_hooks.sh`.
24
+
25
+ ## the engineering bar
26
+
27
+ all contributions follow the 20 canonical principles in [`docs/engineering/ENGINEERING_PRINCIPLES.md`](docs/engineering/ENGINEERING_PRINCIPLES.md) — DRY, YAGNI, separation of concerns, idempotency, fail-fast, edge-case + mocking discipline. the 12-point review checklist there is what every PR is measured against. a "no" without a named `# DEBT:`/`# SMELL:` blocks merge.
28
+
29
+ ## proposing a sample agent
30
+
31
+ sample agents live in `agents/`. each is a SOUL (identity, capabilities, constraints) + a short README. before a PR: it must pass the safety gate at the strictest default, require no credentials beyond a standard install, and be honest about what it can and can't do.
32
+
33
+ ## the spec-and-ADR discipline
34
+
35
+ any change to the contract between components — the manifest schema, safety-gate behavior, vault access, provider interfaces — needs an ADR under `adrs/` (template + the why at [`adrs/0001`](adrs/0001-architecture-decision-records.md)). an ADR is a two-page explanation of what you decided and why, so the next person doesn't reverse-engineer it.
36
+
37
+ ## opening a pull request
38
+
39
+ - branch from `dev` (the integration branch; `staging` and `main` are promotion targets), name it descriptively (`fix/vault-key-rotation`, `feat/ollama-adapter`)
40
+ - one thing per PR; clear description (what changed, why, how to test)
41
+ - all tests pass; tests mock external I/O (no network)
42
+ - safety-gate / manifest / vault changes need an ADR
43
+
44
+ ## signed commits
45
+
46
+ commits to `dev`, `staging`, and `main` should be signed. it takes one setup step and gives every change a verifiable author — which matters for a safety project.
47
+
48
+ ```bash
49
+ # SSH signing (simplest if you already push over SSH)
50
+ git config gpg.format ssh
51
+ git config user.signingkey ~/.ssh/id_ed25519.pub
52
+ git config commit.gpgsign true
53
+ ```
54
+
55
+ add the same key as a *signing* key in your GitHub account (Settings → SSH and GPG keys) so commits show as **Verified**. GPG signing works too — see GitHub's docs. CI and reviewers treat an unsigned commit on a protected branch as a finding, not a blocker, during the alpha.
56
+
57
+ ## filing bugs
58
+
59
+ use [github issues](https://github.com/alexandercharlie-hub/openroar-alpha/issues) — platform, python version, what you ran, expected vs actual, a minimal repro. for security, do **not** open a public issue; read [SECURITY.md](SECURITY.md).
60
+
61
+ if you're unsure about any of this, open a discussion. we'd rather answer a question than reject a PR we can't merge.