multiagentos 0.4.2__tar.gz → 0.5.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 (309) hide show
  1. multiagentos-0.5.0/PKG-INFO +617 -0
  2. multiagentos-0.5.0/README.md +600 -0
  3. multiagentos-0.5.0/agents/catalog.py +416 -0
  4. multiagentos-0.5.0/agents/development_specialists.py +115 -0
  5. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/__init__.py +3 -1
  6. multiagentos-0.5.0/core/adaptive_agent_execution.py +182 -0
  7. multiagentos-0.5.0/core/agent_model_resolver.py +50 -0
  8. multiagentos-0.5.0/core/agent_selection_policy.py +285 -0
  9. multiagentos-0.5.0/core/agent_selector.py +467 -0
  10. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/__init__.py +5 -1
  11. multiagentos-0.5.0/core/contracts/agent.py +55 -0
  12. multiagentos-0.5.0/core/contracts/agent_capability.py +57 -0
  13. multiagentos-0.5.0/core/contracts/agent_selection.py +123 -0
  14. multiagentos-0.5.0/core/contracts/classification.py +36 -0
  15. multiagentos-0.5.0/core/contracts/evidence.py +40 -0
  16. multiagentos-0.5.0/core/contracts/execution_decision.py +163 -0
  17. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/mcp.py +32 -5
  18. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/planning.py +5 -0
  19. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/profile.py +4 -2
  20. multiagentos-0.5.0/core/contracts/scope.py +46 -0
  21. multiagentos-0.5.0/core/contracts/tool_authorization.py +94 -0
  22. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/tool_ledger.py +3 -0
  23. multiagentos-0.5.0/core/contracts/work_unit.py +98 -0
  24. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/delegation.py +6 -0
  25. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/multi_agent_workflow.py +3 -0
  26. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/orchestrator.py +92 -0
  27. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/registry.py +1 -0
  28. multiagentos-0.5.0/core/repository_evidence.py +103 -0
  29. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/state.py +37 -10
  30. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/tool_ledger.py +18 -0
  31. multiagentos-0.5.0/installer/init.py +152 -0
  32. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos/cli.py +130 -20
  33. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos/mcp_service.py +128 -43
  34. multiagentos-0.5.0/multiagentos.egg-info/PKG-INFO +617 -0
  35. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos.egg-info/SOURCES.txt +48 -1
  36. multiagentos-0.5.0/profiles/agent_plan.py +144 -0
  37. multiagentos-0.5.0/profiles/classifier.py +179 -0
  38. multiagentos-0.5.0/profiles/detector.py +153 -0
  39. multiagentos-0.5.0/profiles/reconciliation.py +134 -0
  40. {multiagentos-0.4.2 → multiagentos-0.5.0}/profiles/registry.py +11 -3
  41. {multiagentos-0.4.2 → multiagentos-0.5.0}/profiles/resolver.py +30 -1
  42. multiagentos-0.5.0/profiles/workspace.py +159 -0
  43. {multiagentos-0.4.2 → multiagentos-0.5.0}/pyproject.toml +2 -2
  44. multiagentos-0.5.0/runtime/__init__.py +19 -0
  45. multiagentos-0.5.0/runtime/adaptive_agent_execution.py +412 -0
  46. multiagentos-0.5.0/runtime/agent_capability.py +58 -0
  47. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent_execution_runtime.py +155 -1
  48. multiagentos-0.5.0/runtime/agent_selection.py +196 -0
  49. multiagentos-0.5.0/runtime/airouter_agent_selector.py +70 -0
  50. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/builtin_tools.py +1 -1
  51. multiagentos-0.5.0/runtime/governance.py +303 -0
  52. multiagentos-0.5.0/runtime/governance_runtime.py +118 -0
  53. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/durable_bridge.py +5 -1
  54. multiagentos-0.5.0/runtime/mcp/policy.py +135 -0
  55. multiagentos-0.5.0/runtime/mcp/proxy.py +87 -0
  56. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/server.py +4 -4
  57. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/cli.py +14 -0
  58. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/multi_agent.py +50 -8
  59. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/observability.py +15 -0
  60. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/tool_calling.py +83 -7
  61. multiagentos-0.5.0/tests/test_adaptive_agent_execution.py +123 -0
  62. multiagentos-0.5.0/tests/test_agent_capability_registry.py +48 -0
  63. multiagentos-0.5.0/tests/test_agent_catalog.py +107 -0
  64. multiagentos-0.5.0/tests/test_agent_model_resolver.py +32 -0
  65. multiagentos-0.5.0/tests/test_agent_selector.py +418 -0
  66. multiagentos-0.5.0/tests/test_airouter_agent_selector.py +71 -0
  67. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_cli.py +57 -12
  68. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_configured_model_cli.py +1 -1
  69. multiagentos-0.5.0/tests/test_execution_decision_mcp_audit_e2e.py +237 -0
  70. multiagentos-0.5.0/tests/test_governance_migration.py +145 -0
  71. multiagentos-0.5.0/tests/test_governance_runtime.py +331 -0
  72. multiagentos-0.5.0/tests/test_hierarchical_classification.py +106 -0
  73. multiagentos-0.5.0/tests/test_hybrid_agent_selection.py +116 -0
  74. multiagentos-0.5.0/tests/test_mcp_execution_decision_authorization.py +201 -0
  75. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_sdk_compatibility.py +29 -9
  76. multiagentos-0.5.0/tests/test_mcp_service.py +222 -0
  77. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_streamable_http.py +3 -0
  78. multiagentos-0.5.0/tests/test_mcp_terminal_acceptance.py +168 -0
  79. multiagentos-0.5.0/tests/test_model_agent_selection.py +95 -0
  80. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_multi_agent_workflow.py +21 -0
  81. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_persistent_model_cli.py +2 -2
  82. multiagentos-0.5.0/tests/test_planning_state.py +76 -0
  83. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_profiles_installer.py +1 -1
  84. multiagentos-0.5.0/tests/test_project_detection_agent_plan.py +139 -0
  85. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_quota_routing.py +1 -1
  86. multiagentos-0.5.0/tests/test_recovery_replay_policy.py +124 -0
  87. multiagentos-0.5.0/tests/test_runtime_adaptive_agent_execution.py +113 -0
  88. multiagentos-0.5.0/tests/test_runtime_adaptive_agent_execution_e2e.py +144 -0
  89. multiagentos-0.5.0/tests/test_runtime_agent_model_resolution.py +285 -0
  90. multiagentos-0.5.0/tests/test_tool_authorization.py +153 -0
  91. multiagentos-0.5.0/tests/test_tool_calling_recovery_identity.py +165 -0
  92. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_tool_ledger_runtime.py +163 -1
  93. multiagentos-0.5.0/tests/test_tunnel_installer_script.py +47 -0
  94. multiagentos-0.5.0/tests/test_tunnel_launchd_scripts.py +21 -0
  95. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_windows_launcher.py +1 -0
  96. multiagentos-0.5.0/tests/test_workspace_reconciliation.py +117 -0
  97. multiagentos-0.4.2/PKG-INFO +0 -356
  98. multiagentos-0.4.2/README.md +0 -339
  99. multiagentos-0.4.2/agents/catalog.py +0 -52
  100. multiagentos-0.4.2/core/contracts/agent.py +0 -21
  101. multiagentos-0.4.2/core/contracts/work_unit.py +0 -48
  102. multiagentos-0.4.2/installer/init.py +0 -71
  103. multiagentos-0.4.2/multiagentos.egg-info/PKG-INFO +0 -356
  104. multiagentos-0.4.2/profiles/detector.py +0 -67
  105. multiagentos-0.4.2/runtime/__init__.py +0 -5
  106. multiagentos-0.4.2/runtime/mcp/policy.py +0 -57
  107. multiagentos-0.4.2/runtime/mcp/proxy.py +0 -30
  108. multiagentos-0.4.2/tests/test_mcp_service.py +0 -121
  109. multiagentos-0.4.2/tests/test_planning_state.py +0 -38
  110. {multiagentos-0.4.2 → multiagentos-0.5.0}/agents/__init__.py +0 -0
  111. {multiagentos-0.4.2 → multiagentos-0.5.0}/agents/registry.py +0 -0
  112. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/approval.py +0 -0
  113. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/artifacts.py +0 -0
  114. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/chat_agent_bridge.py +0 -0
  115. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/chat_agent_registry.py +0 -0
  116. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/chat_agent_router.py +0 -0
  117. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/chat_session.py +0 -0
  118. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/agent_execution_runtime.py +0 -0
  119. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/ai.py +0 -0
  120. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/approval.py +0 -0
  121. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/capability.py +0 -0
  122. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/chat_agent.py +0 -0
  123. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/checkpoint.py +0 -0
  124. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/discovery.py +0 -0
  125. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/execution.py +0 -0
  126. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/execution_cursor.py +0 -0
  127. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/execution_limits.py +0 -0
  128. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/github.py +0 -0
  129. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/handoff.py +0 -0
  130. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/health.py +0 -0
  131. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/human_review.py +0 -0
  132. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/ide.py +0 -0
  133. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/idempotency.py +0 -0
  134. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/memory.py +0 -0
  135. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/model_runtime.py +0 -0
  136. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/policy_decision.py +0 -0
  137. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/quota.py +0 -0
  138. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/recovery.py +0 -0
  139. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/replay.py +0 -0
  140. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/repository.py +0 -0
  141. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/resume.py +0 -0
  142. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/runtime.py +0 -0
  143. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/contracts/streaming.py +0 -0
  144. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/execution_limits.py +0 -0
  145. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/execution_state.py +0 -0
  146. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/handoff.py +0 -0
  147. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/lifecycle.py +0 -0
  148. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/memory.py +0 -0
  149. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/planning.py +0 -0
  150. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/policy_decision.py +0 -0
  151. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/recovery_audit.py +0 -0
  152. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/routing.py +0 -0
  153. {multiagentos-0.4.2 → multiagentos-0.5.0}/core/security.py +0 -0
  154. {multiagentos-0.4.2 → multiagentos-0.5.0}/installer/__init__.py +0 -0
  155. {multiagentos-0.4.2 → multiagentos-0.5.0}/integrations/__init__.py +0 -0
  156. {multiagentos-0.4.2 → multiagentos-0.5.0}/integrations/github/__init__.py +0 -0
  157. {multiagentos-0.4.2 → multiagentos-0.5.0}/integrations/github/gateway.py +0 -0
  158. {multiagentos-0.4.2 → multiagentos-0.5.0}/integrations/openai/__init__.py +0 -0
  159. {multiagentos-0.4.2 → multiagentos-0.5.0}/integrations/openai/chat_agent.py +0 -0
  160. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos/__init__.py +0 -0
  161. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos/windows_launcher.py +0 -0
  162. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos.egg-info/dependency_links.txt +0 -0
  163. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos.egg-info/entry_points.txt +0 -0
  164. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos.egg-info/requires.txt +0 -0
  165. {multiagentos-0.4.2 → multiagentos-0.5.0}/multiagentos.egg-info/top_level.txt +0 -0
  166. {multiagentos-0.4.2 → multiagentos-0.5.0}/profiles/__init__.py +0 -0
  167. {multiagentos-0.4.2 → multiagentos-0.5.0}/profiles/common.py +0 -0
  168. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent/__init__.py +0 -0
  169. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent/ide.py +0 -0
  170. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent/model.py +0 -0
  171. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent/model_backed.py +0 -0
  172. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/agent/process.py +0 -0
  173. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/capability.py +0 -0
  174. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/chat_adapter_registry.py +0 -0
  175. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/chat_config.py +0 -0
  176. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/chat_execution.py +0 -0
  177. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/config/__init__.py +0 -0
  178. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/config/loader.py +0 -0
  179. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/discovery.py +0 -0
  180. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/execution_config.py +0 -0
  181. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/execution_registry.py +0 -0
  182. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/git.py +0 -0
  183. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/github.py +0 -0
  184. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/github_probe.py +0 -0
  185. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/harness.py +0 -0
  186. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/health.py +0 -0
  187. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/ide/__init__.py +0 -0
  188. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/ide/bridge.py +0 -0
  189. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/ide/registry.py +0 -0
  190. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/ide/runtime.py +0 -0
  191. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/__init__.py +0 -0
  192. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/filesystem.py +0 -0
  193. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/patch.py +0 -0
  194. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/path_security.py +0 -0
  195. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/permissions.py +0 -0
  196. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/process.py +0 -0
  197. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/local/shell.py +0 -0
  198. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/__init__.py +0 -0
  199. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/agent_execution_runtime_server.py +0 -0
  200. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/client.py +0 -0
  201. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/config.py +0 -0
  202. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/session.py +0 -0
  203. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/mcp/streamable_http.py +0 -0
  204. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/__init__.py +0 -0
  205. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/ai_runtime.py +0 -0
  206. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/config.py +0 -0
  207. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/credentials.py +0 -0
  208. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/factory.py +0 -0
  209. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/http.py +0 -0
  210. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/invoker.py +0 -0
  211. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/materializer.py +0 -0
  212. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/native.py +0 -0
  213. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/providers.py +0 -0
  214. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/registry.py +0 -0
  215. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model/runtime_loader.py +0 -0
  216. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/model_control.py +0 -0
  217. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/policy.py +0 -0
  218. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/process.py +0 -0
  219. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/quota.py +0 -0
  220. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/repository.py +0 -0
  221. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/repository_tools.py +0 -0
  222. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/status.py +0 -0
  223. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/streaming.py +0 -0
  224. {multiagentos-0.4.2 → multiagentos-0.5.0}/runtime/validation.py +0 -0
  225. {multiagentos-0.4.2 → multiagentos-0.5.0}/setup.cfg +0 -0
  226. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_agent_execution_runtime.py +0 -0
  227. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_agent_execution_runtime_api.py +0 -0
  228. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_agent_plugin.py +0 -0
  229. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_agents_and_handoff.py +0 -0
  230. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_ai_runtime.py +0 -0
  231. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_approval_boundary.py +0 -0
  232. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_builtin_tools.py +0 -0
  233. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_adapter_registry.py +0 -0
  234. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_agent_bridge.py +0 -0
  235. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_agent_router_session.py +0 -0
  236. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_agents.py +0 -0
  237. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_config.py +0 -0
  238. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_chat_execution.py +0 -0
  239. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_cli_providers.py +0 -0
  240. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_cli_run_resume.py +0 -0
  241. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_config_loader.py +0 -0
  242. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_core_runtime.py +0 -0
  243. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_credentials.py +0 -0
  244. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_durable_runtime_contracts.py +0 -0
  245. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_execution_config.py +0 -0
  246. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_execution_harness.py +0 -0
  247. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_execution_limits.py +0 -0
  248. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_execution_registry.py +0 -0
  249. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_git_runtime.py +0 -0
  250. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_github_contract.py +0 -0
  251. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_github_probe.py +0 -0
  252. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_github_runtime.py +0 -0
  253. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_http_model_adapter.py +0 -0
  254. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_human_review_persistence.py +0 -0
  255. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_ide_bridge.py +0 -0
  256. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_ide_runtime.py +0 -0
  257. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_ide_tool_calling.py +0 -0
  258. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_local_process.py +0 -0
  259. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_local_tool_runtime.py +0 -0
  260. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_cost_boundary.py +0 -0
  261. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_durable_execution.py +0 -0
  262. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_policy.py +0 -0
  263. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_runtime.py +0 -0
  264. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_mcp_server.py +0 -0
  265. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_agent.py +0 -0
  266. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_backed_agent.py +0 -0
  267. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_capability.py +0 -0
  268. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_control.py +0 -0
  269. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_control_routing.py +0 -0
  270. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_factory.py +0 -0
  271. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_failover.py +0 -0
  272. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_health.py +0 -0
  273. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_intelligence_sync.py +0 -0
  274. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_model_runtime.py +0 -0
  275. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_multi_agent_runtime.py +0 -0
  276. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_native_provider_tool_calling.py +0 -0
  277. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_no_legacy_runtime_name.py +0 -0
  278. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_observability.py +0 -0
  279. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_openai_chat_agent.py +0 -0
  280. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_orchestrator.py +0 -0
  281. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_policy_decision_evidence.py +0 -0
  282. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_profile_contracts.py +0 -0
  283. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_project_memory.py +0 -0
  284. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_project_routing.py +0 -0
  285. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_provider_config.py +0 -0
  286. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_provider_discovery.py +0 -0
  287. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_provider_materializer.py +0 -0
  288. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_provider_registry.py +0 -0
  289. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_provider_runtime_loader.py +0 -0
  290. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_quota_helpers.py +0 -0
  291. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_quota_intelligence.py +0 -0
  292. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_quota_provider_metadata.py +0 -0
  293. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_recovery_audit_source_guard.py +0 -0
  294. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_recovery_authorization_contract.py +0 -0
  295. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_release_security_boundaries.py +0 -0
  296. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_repository_runtime.py +0 -0
  297. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_repository_tools.py +0 -0
  298. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_routing_explainability.py +0 -0
  299. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_runtime_adapters.py +0 -0
  300. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_runtime_execution_inspection.py +0 -0
  301. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_runtime_recovery_contract.py +0 -0
  302. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_runtime_recovery_resume_gate.py +0 -0
  303. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_runtime_security_boundary.py +0 -0
  304. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_streaming_runtime.py +0 -0
  305. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_tool_calling_runtime.py +0 -0
  306. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_tunnel_client_mcp_health.py +0 -0
  307. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_tunnel_client_runtime_status.py +0 -0
  308. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_unified_checkpoints.py +0 -0
  309. {multiagentos-0.4.2 → multiagentos-0.5.0}/tests/test_validation_runtime.py +0 -0
@@ -0,0 +1,617 @@
1
+ Metadata-Version: 2.4
2
+ Name: multiagentos
3
+ Version: 0.5.0
4
+ Summary: Local-first, GitHub-native multi-agent development orchestration runtime
5
+ Project-URL: Homepage, https://github.com/eaglesjo/MultiAgentOS
6
+ Project-URL: Repository, https://github.com/eaglesjo/MultiAgentOS
7
+ Project-URL: Documentation, https://github.com/eaglesjo/MultiAgentOS/tree/main/docs
8
+ Project-URL: Changelog, https://github.com/eaglesjo/MultiAgentOS/blob/main/CHANGELOG.md
9
+ Project-URL: Download, https://pypi.org/project/multiagentos/#files
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ Provides-Extra: chatgpt
13
+ Requires-Dist: openai>=1.0; extra == "chatgpt"
14
+ Provides-Extra: mcp-http
15
+ Requires-Dist: mcp<3,>=2.2; extra == "mcp-http"
16
+ Requires-Dist: uvicorn>=0.30; extra == "mcp-http"
17
+
18
+ # MultiAgentOS
19
+
20
+ > **Local-first, GitHub-native Agent Execution Runtime**
21
+
22
+ Build, inspect, patch, test, and operate real software projects through an AI-native execution boundary.
23
+
24
+ MultiAgentOS connects an AI client to a real project workspace while keeping **filesystem, patch, process, Git, and verification authority inside the Agent Execution Runtime**.
25
+
26
+ ---
27
+
28
+ ## Why MultiAgentOS?
29
+
30
+ AI clients provide reasoning, intent, plans, and results.
31
+
32
+ **MultiAgentOS provides the execution boundary.**
33
+
34
+ ```mermaid
35
+ flowchart TB
36
+ CLIENT["AI Client"] --> MCP["MCP"]
37
+ MCP --> RUNTIME["Agent Execution Runtime"]
38
+ RUNTIME --> FS["Filesystem"]
39
+ RUNTIME --> PATCH["Patch"]
40
+ RUNTIME --> PROCESS["Process"]
41
+ RUNTIME --> GIT["Git"]
42
+ FS --> PROJECT["Real Project"]
43
+ PATCH --> PROJECT
44
+ PROCESS --> PROJECT
45
+ GIT --> PROJECT
46
+ PROJECT --> GH["GitHub Repository"]
47
+ ```
48
+
49
+ This separation makes local project execution explicit, inspectable, and policy-controlled instead of giving an AI client unrestricted operating-system access.
50
+
51
+ ---
52
+
53
+ ## Core Capabilities
54
+
55
+ | Capability | What it provides |
56
+ | --- | --- |
57
+ | **Agent Execution Runtime** | Durable execution and permission boundary for real project work |
58
+ | **MCP** | Standard AI-to-runtime tool interface |
59
+ | **Filesystem** | Project file READ / WRITE |
60
+ | **Patch** | Structured source changes through `patch.apply` |
61
+ | **Process** | Internal runtime capability; not part of the current ChatGPT Free verified client path |
62
+ | **Git** | Repository-aware development operations |
63
+ | **GitHub** | Remote repository and collaboration workflow |
64
+ | **Project Isolation** | Independent MCP services and lifecycle per project |
65
+ | **Secure MCP Tunnel** | Optional remote transport for supported clients |
66
+
67
+ Write and process capabilities are explicit opt-ins. The default MCP surface is read-only.
68
+
69
+ ---
70
+
71
+ ## Architecture
72
+
73
+ ### Local-first execution
74
+
75
+ ```mermaid
76
+ flowchart TB
77
+ CLIENT["AI Client"] --> MCP["MCP"]
78
+ MCP --> RUNTIME["Agent Execution Runtime"]
79
+
80
+ RUNTIME --> FS["Filesystem"]
81
+ RUNTIME --> PATCH["Patch"]
82
+ RUNTIME --> PROCESS["Process / Tests"]
83
+ RUNTIME --> GIT["Git"]
84
+
85
+ FS --> PROJECT["Local Project"]
86
+ PATCH --> PROJECT
87
+ PROCESS --> PROJECT
88
+ GIT --> PROJECT
89
+
90
+ PROJECT --> GH["GitHub Repository"]
91
+ ```
92
+
93
+ The local MCP server remains on loopback. The AI client does not receive unrestricted operating-system access; execution is mediated by the runtime policy.
94
+
95
+ ### Multi-agent execution
96
+
97
+ ```mermaid
98
+ flowchart LR
99
+ REQUEST["Request"] --> ORCH["Orchestrator"]
100
+ ORCH --> WORKFLOW["MultiAgentWorkflow"]
101
+
102
+ WORKFLOW --> DEV["Developer"]
103
+ WORKFLOW --> TEST["Tester"]
104
+ WORKFLOW --> REVIEW["Reviewer"]
105
+
106
+ REVIEW --> DECISION{"Review passed?"}
107
+ DECISION -->|No| REWORK["Rework"]
108
+ REWORK --> DEV
109
+ DECISION -->|Yes| VERIFY["Verification"]
110
+
111
+ VERIFY --> RUNTIME["Agent Execution Runtime"]
112
+ ```
113
+
114
+ `Orchestrator.run_workflow()` is the higher-level orchestration entry point. `MultiAgentWorkflow` owns stage, handoff, review, and rework semantics.
115
+
116
+ The runtime remains the authority for permissions and execution.
117
+
118
+ ### Governance contracts
119
+
120
+ MultiAgentOS keeps execution governance inside its own provider-neutral runtime contracts.
121
+
122
+ ```mermaid
123
+ flowchart TB
124
+ WU["WorkUnit"] --> SCOPE["Scope Lock"]
125
+ WU --> ROLES["Execution roles"]
126
+ WU --> ART["Artifacts"]
127
+ WU --> EVID["Evidence"]
128
+ WU --> APPROVAL["Human approval"]
129
+ WU --> HOLD["HOLD safety"]
130
+
131
+ SCOPE --> RUNTIME["MultiAgentOS Runtime"]
132
+ ROLES --> RUNTIME
133
+ ART --> RUNTIME
134
+ EVID --> RUNTIME
135
+ APPROVAL --> RUNTIME
136
+ HOLD --> RUNTIME
137
+
138
+ RUNTIME --> TOOLS["MCP / Filesystem / Process / Git / GitHub"]
139
+ ```
140
+
141
+ These governance contracts are native to MultiAgentOS; they are not dependent on another repository or project-specific Agent OS.
142
+
143
+ ---
144
+
145
+ ### Agent taxonomy and specialist routing
146
+
147
+ MultiAgentOS separates **Governance / Execution** from platform-oriented specialist agents.
148
+
149
+ ~~~mermaid
150
+ flowchart TB
151
+ TASK["Task"]
152
+
153
+ TASK --> GOV["Governance / Execution"]
154
+ TASK --> RESEARCH["Research"]
155
+ TASK --> DEVELOPMENT["Development"]
156
+ TASK --> UI["UI"]
157
+
158
+ GOV --> FILE["File Picker"]
159
+ GOV --> PLAN["Planner"]
160
+ GOV --> EDIT["Editor"]
161
+ GOV --> EXEC["Executor"]
162
+ GOV --> REVIEW["Reviewer"]
163
+
164
+ RESEARCH --> DEV_R["Development Research"]
165
+ RESEARCH --> UI_R["UI Research"]
166
+
167
+ DEV_R --> REACT_R["React"]
168
+ DEV_R --> RN_R["React Native"]
169
+ DEV_R --> ANDROID_R["Android"]
170
+ DEV_R --> IOS_R["iOS"]
171
+
172
+ UI_R --> WEB_R["Web UI / React"]
173
+ UI_R --> RN_UI_R["React Native UI"]
174
+ UI_R --> ANDROID_UI_R["Android UI"]
175
+ UI_R --> IOS_UI_R["iOS UI"]
176
+
177
+ DEVELOPMENT --> REACT_D["React Developer"]
178
+ DEVELOPMENT --> RN_D["React Native Developer"]
179
+ DEVELOPMENT --> ANDROID_D["Android Developer"]
180
+ DEVELOPMENT --> IOS_D["iOS Developer"]
181
+
182
+ UI --> WEB["Web"]
183
+ UI --> CROSS["Cross-platform"]
184
+ UI --> NATIVE["Native"]
185
+ NATIVE --> ANDROID["Android"]
186
+ NATIVE --> IOS["iOS"]
187
+ ~~~
188
+
189
+ A platform-aware development task can therefore run current platform research before implementation:
190
+
191
+ ~~~mermaid
192
+ flowchart LR
193
+ TASK["Platform Development"] --> PLAN["Planner"]
194
+ PLAN --> RESEARCH["Development Research"]
195
+ RESEARCH --> DEV["Platform Developer"]
196
+ DEV --> EDIT["Editor"]
197
+ EDIT --> EXEC["Executor"]
198
+ EXEC --> REVIEW["Reviewer"]
199
+ ~~~
200
+
201
+ UI work similarly runs UI research before implementation and uses Browser Agent only where browser validation is relevant.
202
+
203
+ See [Agent Taxonomy and Routing](docs/AGENT_TAXONOMY.md) and [Agent Catalog](docs/AGENT_CATALOG.md).
204
+
205
+ ## GitHub + Local Project
206
+
207
+ MultiAgentOS treats the remote repository and the local working tree as complementary development surfaces.
208
+
209
+ ```mermaid
210
+ flowchart TB
211
+ CLIENT["AI Client"]
212
+
213
+ CLIENT --> GH["GitHub Repository"]
214
+ CLIENT --> MCP["Local MCP"]
215
+
216
+ MCP --> RUNTIME["Agent Execution Runtime"]
217
+ RUNTIME --> PROJECT["Local Project"]
218
+ ```
219
+
220
+ The GitHub path provides durable repository state.
221
+
222
+ The local MCP path provides controlled access to the actual working tree.
223
+
224
+ These are separate capabilities and can be used independently.
225
+
226
+ ---
227
+
228
+ ## ChatGPT Web in the Verified Setup
229
+
230
+ The current development environment has verified the following client boundary:
231
+
232
+ | Client | GitHub | Local MultiAgentOS MCP | Status |
233
+ | --- | --- | --- | --- |
234
+ | **ChatGPT Web** | Yes | Yes | **Verified** |
235
+ | **ChatGPT Mobile App** | Yes | No | **Verified** |
236
+ | **ChatGPT Desktop** | Not evaluated | Not evaluated | Outside current scope |
237
+
238
+ This is a compatibility record for the verified environment, **not a universal guarantee for every ChatGPT account, plan, or future client build**.
239
+
240
+ > **Execution boundary:** Process/shell execution is not currently part of the verified ChatGPT Free client path. The runtime contains process-capability infrastructure, but README support claims are limited to capabilities actually exposed and verified through the target client path.
241
+
242
+ The cost-free local workflow does not depend on Secure MCP Tunnel:
243
+
244
+ ```mermaid
245
+ flowchart TB
246
+ WEB["ChatGPT Web"]
247
+
248
+ WEB -->|GitHub connection| GH["GitHub Repository"]
249
+ WEB -->|Local MCP| MCP["127.0.0.1:8000/mcp"]
250
+ MCP --> PROJECT["Local Project"]
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Secure MCP Tunnel
256
+
257
+ Secure MCP Tunnel is an **optional remote connectivity layer** for supported clients that need to reach a private local MCP server.
258
+
259
+ ```mermaid
260
+ flowchart TB
261
+ CLIENT["Supported Remote Client"]
262
+ TUNNEL["OpenAI Secure MCP Tunnel"]
263
+ TC["tunnel-client"]
264
+ MCP["MultiAgentOS MCP"]
265
+ RUNTIME["Agent Execution Runtime"]
266
+ PROJECT["Local Project"]
267
+
268
+ CLIENT --> TUNNEL
269
+ TUNNEL --> TC
270
+ TC --> MCP
271
+ MCP --> RUNTIME
272
+ RUNTIME --> PROJECT
273
+ ```
274
+
275
+ The local MCP server can remain loopback-only. The tunnel client establishes the outbound connection.
276
+
277
+ ### Important boundary
278
+
279
+ A healthy tunnel proves that the **tunnel infrastructure is connected**. It does not by itself prove that a particular ChatGPT account or plan can invoke every MCP capability.
280
+
281
+ For the current cost-free baseline:
282
+
283
+ | Layer | State |
284
+ | --- | --- |
285
+ | Agent Execution Runtime | **PASS** |
286
+ | Local MCP | **PASS** |
287
+ | Secure MCP Tunnel lifecycle | **READY** |
288
+ | Control-plane polling | **PASS** |
289
+ | ChatGPT hosted remote MCP write | **Plan-gated / not part of baseline acceptance** |
290
+
291
+ Do not treat the optional hosted tunnel path as a prerequisite for local development.
292
+
293
+ See [Secure MCP Tunnel Setup](docs/MCP_TUNNEL.md).
294
+
295
+ ---
296
+
297
+ ## Project-Scoped Runtime
298
+
299
+ Multiple projects can run independently.
300
+
301
+ ```mermaid
302
+ flowchart TB
303
+ A["Project A"]
304
+ A --> A_MCP["MCP Service"]
305
+ A --> A_RUNTIME["Runtime"]
306
+ A --> A_TUNNEL["Tunnel (optional)"]
307
+ A --> A_LOGS["Logs"]
308
+ A --> A_PERM["Permissions"]
309
+
310
+ B["Project B"]
311
+ B --> B_MCP["MCP Service"]
312
+ B --> B_RUNTIME["Runtime"]
313
+ B --> B_TUNNEL["Tunnel (optional)"]
314
+ B --> B_LOGS["Logs"]
315
+ B --> B_PERM["Permissions"]
316
+ ```
317
+
318
+ Each managed project receives its own service identity derived from its resolved project path.
319
+
320
+ Example:
321
+
322
+ ```bash
323
+ multiagentos mcp install \
324
+ --path /absolute/path/to/project1 \
325
+ --port 8000 \
326
+ --allow-write
327
+
328
+ multiagentos mcp install \
329
+ --path /absolute/path/to/project2 \
330
+ --port 8001 \
331
+ --allow-write
332
+ ```
333
+
334
+ Inspect or remove a project-scoped service:
335
+
336
+ ```bash
337
+ multiagentos mcp status --path /absolute/path/to/project1
338
+ multiagentos mcp uninstall --path /absolute/path/to/project1
339
+ ```
340
+
341
+ Supported OS-native lifecycle management includes:
342
+
343
+ - macOS: per-user `launchd`
344
+ - Windows: per-user Task Scheduler
345
+
346
+ ---
347
+
348
+ ## Cost-Free Development Baseline
349
+
350
+ The core user-facing path is:
351
+
352
+ ```text
353
+ ChatGPT Free text chat
354
+ |
355
+ v
356
+ MultiAgentOS
357
+ |
358
+ v
359
+ Local MCP
360
+ |
361
+ v
362
+ Project state / source changes / verification
363
+ ```
364
+
365
+ > **Cost-Free policy:** development must be possible without an OpenAI API key by using ChatGPT Free text chat as the AI engine and MultiAgentOS Local MCP as the controlled execution boundary.
366
+
367
+ This policy does not claim that every ChatGPT feature is unlimited. It defines the intended AI-engine path for ordinary text-based development work.
368
+
369
+ The baseline is designed around:
370
+
371
+ ```mermaid
372
+ flowchart TB
373
+ INSTALL["Install MultiAgentOS"]
374
+ INIT["Initialize project"]
375
+ MCP["Agent Execution Runtime MCP"]
376
+ CLIENT["AI Client"]
377
+
378
+ INSTALL --> INIT --> MCP --> CLIENT
379
+
380
+ CLIENT --> READ["READ"]
381
+ CLIENT --> PATCH["PATCH"]
382
+ CLIENT --> TEST["TEST"]
383
+ CLIENT --> VERIFY["VERIFY"]
384
+
385
+ READ --> GH["GitHub"]
386
+ PATCH --> GH
387
+ TEST --> GH
388
+ VERIFY --> GH
389
+ ```
390
+
391
+ “Cost-Free” describes the **MultiAgentOS runtime architecture**. It does not mean that an AI product has unlimited usage or that every optional AI service is free.
392
+
393
+ Paid AI providers remain optional.
394
+
395
+ See [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md).
396
+
397
+ ---
398
+
399
+ ## Quick Start
400
+
401
+ ### Install
402
+
403
+ For the Streamable HTTP MCP server:
404
+
405
+ ```bash
406
+ python3 -m pip install "multiagentos[mcp-http]"
407
+ ```
408
+
409
+ No OpenAI API key is required for the local runtime.
410
+
411
+ ### Initialize a project
412
+
413
+ ```mermaid
414
+ flowchart LR
415
+ INSTALL["Install MultiAgentOS"] --> INIT["multiagentos init ."]
416
+ INIT --> PROFILE["Project profile"]
417
+ INIT --> CONFIG[".multiagentos"]
418
+ INIT --> AGENTS["AGENTS.md"]
419
+ CONFIG --> MCP["Project MCP"]
420
+ MCP --> RUNTIME["Agent Execution Runtime"]
421
+ RUNTIME --> PROJECT["Real project"]
422
+ ```
423
+
424
+ ```bash
425
+ cd your-project
426
+ multiagentos init . --component all
427
+ multiagentos status .
428
+ ```
429
+
430
+ See [Project Installation](docs/PROJECT_INSTALLATION.md) for the complete bootstrap contract.
431
+
432
+ ### Run a task
433
+
434
+ ```bash
435
+ multiagentos run \
436
+ --path . \
437
+ --objective "run tests" \
438
+ -- python -m unittest discover -s tests -v
439
+ ```
440
+
441
+ ### Start a Chat Agent session
442
+
443
+ ```bash
444
+ multiagentos chat \
445
+ --path . \
446
+ --objective "inspect the current project"
447
+ ```
448
+
449
+ ### Start local MCP
450
+
451
+ Read-only:
452
+
453
+ ```bash
454
+ multiagentos mcp serve-http --path .
455
+ ```
456
+
457
+ Read/write:
458
+
459
+ ```bash
460
+ multiagentos mcp serve-http \
461
+ --path . \
462
+ --allow-write
463
+ ```
464
+
465
+ The default endpoint is:
466
+
467
+ ```text
468
+ http://127.0.0.1:8000/mcp
469
+ ```
470
+
471
+ ### Install as a persistent macOS service
472
+
473
+ ```bash
474
+ multiagentos mcp install --path . --allow-write
475
+ multiagentos mcp status --path .
476
+ ```
477
+
478
+ The service is managed by `launchd` and can survive login/reboot.
479
+
480
+ ---
481
+
482
+ ## Configuration
483
+
484
+ Project configuration lives under:
485
+
486
+ ```text
487
+ .multiagentos/
488
+ ├── components.json
489
+ ├── execution.json
490
+ ├── chat.json
491
+ ├── agents.json
492
+ └── state/
493
+ ```
494
+
495
+ Credentials and provider API keys are not written into project configuration.
496
+
497
+ ---
498
+
499
+ ## Verification
500
+
501
+ ### MultiAgentOS v0.4.3 release verification record
502
+
503
+ The following results are the recorded verification evidence for the v0.4.3 release:
504
+
505
+ - **309 tests passed**
506
+ - **3 tests skipped on macOS**
507
+ - macOS managed MCP service verified after reboot/login
508
+ - Project-scoped Secure MCP Tunnel lifecycle verified
509
+ - Tunnel-client control-plane polling verified
510
+ - Python wheel and source distribution build verified
511
+ - Native release artifacts published
512
+ - Local Agent Execution Runtime filesystem READ / WRITE verified
513
+ - `patch.apply` verified with filesystem readback
514
+ - GitHub-connected development path verified
515
+
516
+ These bullets are a release verification record, not a claim that the same test count has been freshly executed for every later `main` commit. Current `main` changes are validated by the repository's GitHub Actions workflows.
517
+
518
+ ### Verification boundary
519
+
520
+ The repository deliberately distinguishes:
521
+
522
+ ```mermaid
523
+ flowchart TB
524
+ LOCAL["Local Runtime Verification"]
525
+ LOCAL --> MCP["MCP"]
526
+ LOCAL --> FS["Filesystem"]
527
+ LOCAL --> PATCH["Patch"]
528
+ LOCAL --> PROCESS["Process"]
529
+ LOCAL --> GH["GitHub"]
530
+
531
+ VERIFIED["Verified"]
532
+ MCP --> VERIFIED
533
+ FS --> VERIFIED
534
+ PATCH --> VERIFIED
535
+ PROCESS --> VERIFIED
536
+ GH --> VERIFIED
537
+
538
+ TUNNEL["Optional Hosted Tunnel"]
539
+ TUNNEL --> LIFECYCLE["Tunnel lifecycle"]
540
+ TUNNEL --> POLL["Control-plane polling"]
541
+ TUNNEL --> REMOTE["Remote client capability"]
542
+
543
+ DEP["Environment / plan dependent"]
544
+ LIFECYCLE --> DEP
545
+ POLL --> DEP
546
+ REMOTE --> DEP
547
+ ```
548
+
549
+ This prevents a healthy tunnel from being incorrectly reported as proof of a hosted client-side MCP tool invocation.
550
+
551
+ ---
552
+
553
+ ## Security and Permission Model
554
+
555
+ MultiAgentOS keeps execution authority behind an explicit runtime boundary.
556
+
557
+ ```mermaid
558
+ flowchart TB
559
+ INTENT["AI Intent"]
560
+ REQUEST["MCP Tool Request"]
561
+ POLICY["Execution Policy"]
562
+
563
+ INTENT --> REQUEST --> POLICY
564
+
565
+ POLICY --> READ["filesystem.read"]
566
+ POLICY --> WRITE["filesystem.write"]
567
+ POLICY --> PATCH["patch.apply"]
568
+ POLICY --> PROCESS["process / shell"]
569
+
570
+ READ --> PROJECT["Real Project"]
571
+ WRITE --> PROJECT
572
+ PATCH --> PROJECT
573
+ PROCESS --> PROJECT
574
+ ```
575
+
576
+ Write and process capabilities require explicit opt-in.
577
+
578
+ For the tunnel path, keep credentials separated:
579
+
580
+ ```text
581
+ CONTROL_PLANE_TUNNEL_ID
582
+ → identifies the tunnel
583
+
584
+ CONTROL_PLANE_API_KEY
585
+ → runtime credential used by tunnel-client
586
+
587
+ OPENAI_ADMIN_KEY
588
+ → tunnel administration only
589
+ ```
590
+
591
+ Do not place an administration key in a long-lived runtime configuration.
592
+
593
+ ---
594
+
595
+ ## Documentation
596
+
597
+ - [Getting Started](docs/GETTING_STARTED.md)
598
+ - [Project Installation](docs/PROJECT_INSTALLATION.md)
599
+ - [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md)
600
+ - [ChatGPT Client Capability Matrix](docs/CHATGPT_CLIENT_CAPABILITIES.md)
601
+ - [Agent Execution Runtime Connection Guide](docs/AGENT_EXECUTION_RUNTIME_CONNECTIONS.md)
602
+ - [Secure MCP Tunnel Setup](docs/MCP_TUNNEL.md)
603
+ - [macOS MCP Service](docs/MACOS_MCP_SERVICE.md)
604
+ - [macOS Tunnel Service](docs/MACOS_TUNNEL_SERVICE.md)
605
+ - [Agent Execution Runtime GitHub Connection](docs/AGENT_EXECUTION_RUNTIME_GITHUB_CONNECTION.md)
606
+ - [Architecture Decisions](docs/ARCHITECTURE_DECISIONS.md)
607
+ - [Agent Plugin Marketplace](docs/PLUGIN_MARKETPLACE.md)
608
+
609
+ The English README is the canonical technical overview. Localized READMEs should preserve the same architecture, terminology, and cost-free baseline.
610
+
611
+ **[한국어](README.ko.md)**
612
+
613
+ ---
614
+
615
+ ## License
616
+
617
+ See [LICENSE](LICENSE).