multiagentos 0.4.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.
- multiagentos-0.4.0/PKG-INFO +7 -0
- multiagentos-0.4.0/README.md +301 -0
- multiagentos-0.4.0/agents/__init__.py +1 -0
- multiagentos-0.4.0/agents/catalog.py +52 -0
- multiagentos-0.4.0/agents/registry.py +11 -0
- multiagentos-0.4.0/core/__init__.py +38 -0
- multiagentos-0.4.0/core/artifacts.py +47 -0
- multiagentos-0.4.0/core/chat_agent_bridge.py +280 -0
- multiagentos-0.4.0/core/chat_agent_registry.py +61 -0
- multiagentos-0.4.0/core/chat_agent_router.py +85 -0
- multiagentos-0.4.0/core/chat_session.py +62 -0
- multiagentos-0.4.0/core/contracts/__init__.py +22 -0
- multiagentos-0.4.0/core/contracts/agent.py +21 -0
- multiagentos-0.4.0/core/contracts/ai.py +25 -0
- multiagentos-0.4.0/core/contracts/capability.py +44 -0
- multiagentos-0.4.0/core/contracts/chat_agent.py +34 -0
- multiagentos-0.4.0/core/contracts/checkpoint.py +78 -0
- multiagentos-0.4.0/core/contracts/discovery.py +30 -0
- multiagentos-0.4.0/core/contracts/execution.py +28 -0
- multiagentos-0.4.0/core/contracts/github.py +74 -0
- multiagentos-0.4.0/core/contracts/handoff.py +56 -0
- multiagentos-0.4.0/core/contracts/health.py +206 -0
- multiagentos-0.4.0/core/contracts/human_review.py +20 -0
- multiagentos-0.4.0/core/contracts/ide.py +113 -0
- multiagentos-0.4.0/core/contracts/mcp.py +76 -0
- multiagentos-0.4.0/core/contracts/model_runtime.py +25 -0
- multiagentos-0.4.0/core/contracts/planning.py +25 -0
- multiagentos-0.4.0/core/contracts/profile.py +66 -0
- multiagentos-0.4.0/core/contracts/quota.py +62 -0
- multiagentos-0.4.0/core/contracts/repository.py +34 -0
- multiagentos-0.4.0/core/contracts/resume.py +55 -0
- multiagentos-0.4.0/core/contracts/runtime.py +19 -0
- multiagentos-0.4.0/core/contracts/vyrelon_runtime.py +118 -0
- multiagentos-0.4.0/core/contracts/work_unit.py +48 -0
- multiagentos-0.4.0/core/delegation.py +33 -0
- multiagentos-0.4.0/core/handoff.py +68 -0
- multiagentos-0.4.0/core/lifecycle.py +85 -0
- multiagentos-0.4.0/core/multi_agent_workflow.py +574 -0
- multiagentos-0.4.0/core/orchestrator.py +51 -0
- multiagentos-0.4.0/core/planning.py +22 -0
- multiagentos-0.4.0/core/registry.py +44 -0
- multiagentos-0.4.0/core/routing.py +195 -0
- multiagentos-0.4.0/core/state.py +155 -0
- multiagentos-0.4.0/installer/__init__.py +1 -0
- multiagentos-0.4.0/installer/init.py +71 -0
- multiagentos-0.4.0/integrations/__init__.py +0 -0
- multiagentos-0.4.0/integrations/github/__init__.py +3 -0
- multiagentos-0.4.0/integrations/github/gateway.py +164 -0
- multiagentos-0.4.0/integrations/openai/__init__.py +1 -0
- multiagentos-0.4.0/integrations/openai/chat_agent.py +147 -0
- multiagentos-0.4.0/multiagentos/__init__.py +1 -0
- multiagentos-0.4.0/multiagentos/cli.py +759 -0
- multiagentos-0.4.0/multiagentos.egg-info/PKG-INFO +7 -0
- multiagentos-0.4.0/multiagentos.egg-info/SOURCES.txt +195 -0
- multiagentos-0.4.0/multiagentos.egg-info/dependency_links.txt +1 -0
- multiagentos-0.4.0/multiagentos.egg-info/entry_points.txt +2 -0
- multiagentos-0.4.0/multiagentos.egg-info/requires.txt +3 -0
- multiagentos-0.4.0/multiagentos.egg-info/top_level.txt +7 -0
- multiagentos-0.4.0/profiles/__init__.py +1 -0
- multiagentos-0.4.0/profiles/common.py +11 -0
- multiagentos-0.4.0/profiles/detector.py +67 -0
- multiagentos-0.4.0/profiles/registry.py +46 -0
- multiagentos-0.4.0/profiles/resolver.py +63 -0
- multiagentos-0.4.0/pyproject.toml +19 -0
- multiagentos-0.4.0/runtime/__init__.py +5 -0
- multiagentos-0.4.0/runtime/agent/__init__.py +1 -0
- multiagentos-0.4.0/runtime/agent/ide.py +74 -0
- multiagentos-0.4.0/runtime/agent/model.py +197 -0
- multiagentos-0.4.0/runtime/agent/model_backed.py +49 -0
- multiagentos-0.4.0/runtime/agent/process.py +21 -0
- multiagentos-0.4.0/runtime/builtin_tools.py +57 -0
- multiagentos-0.4.0/runtime/capability.py +143 -0
- multiagentos-0.4.0/runtime/chat_adapter_registry.py +43 -0
- multiagentos-0.4.0/runtime/chat_config.py +57 -0
- multiagentos-0.4.0/runtime/chat_execution.py +52 -0
- multiagentos-0.4.0/runtime/config/__init__.py +1 -0
- multiagentos-0.4.0/runtime/config/loader.py +67 -0
- multiagentos-0.4.0/runtime/discovery.py +334 -0
- multiagentos-0.4.0/runtime/execution_config.py +71 -0
- multiagentos-0.4.0/runtime/execution_registry.py +50 -0
- multiagentos-0.4.0/runtime/git.py +84 -0
- multiagentos-0.4.0/runtime/github.py +56 -0
- multiagentos-0.4.0/runtime/github_probe.py +23 -0
- multiagentos-0.4.0/runtime/health.py +14 -0
- multiagentos-0.4.0/runtime/ide/__init__.py +6 -0
- multiagentos-0.4.0/runtime/ide/bridge.py +198 -0
- multiagentos-0.4.0/runtime/ide/registry.py +24 -0
- multiagentos-0.4.0/runtime/ide/runtime.py +35 -0
- multiagentos-0.4.0/runtime/local/__init__.py +18 -0
- multiagentos-0.4.0/runtime/local/filesystem.py +58 -0
- multiagentos-0.4.0/runtime/local/patch.py +79 -0
- multiagentos-0.4.0/runtime/local/path_security.py +31 -0
- multiagentos-0.4.0/runtime/local/permissions.py +20 -0
- multiagentos-0.4.0/runtime/local/process.py +56 -0
- multiagentos-0.4.0/runtime/local/shell.py +97 -0
- multiagentos-0.4.0/runtime/mcp/__init__.py +7 -0
- multiagentos-0.4.0/runtime/mcp/client.py +120 -0
- multiagentos-0.4.0/runtime/mcp/config.py +36 -0
- multiagentos-0.4.0/runtime/mcp/policy.py +57 -0
- multiagentos-0.4.0/runtime/mcp/proxy.py +30 -0
- multiagentos-0.4.0/runtime/mcp/server.py +137 -0
- multiagentos-0.4.0/runtime/mcp/session.py +19 -0
- multiagentos-0.4.0/runtime/model/__init__.py +5 -0
- multiagentos-0.4.0/runtime/model/ai_runtime.py +165 -0
- multiagentos-0.4.0/runtime/model/cli.py +49 -0
- multiagentos-0.4.0/runtime/model/config.py +98 -0
- multiagentos-0.4.0/runtime/model/credentials.py +42 -0
- multiagentos-0.4.0/runtime/model/factory.py +82 -0
- multiagentos-0.4.0/runtime/model/http.py +78 -0
- multiagentos-0.4.0/runtime/model/invoker.py +16 -0
- multiagentos-0.4.0/runtime/model/materializer.py +101 -0
- multiagentos-0.4.0/runtime/model/native.py +244 -0
- multiagentos-0.4.0/runtime/model/providers.py +55 -0
- multiagentos-0.4.0/runtime/model/registry.py +26 -0
- multiagentos-0.4.0/runtime/model/runtime_loader.py +51 -0
- multiagentos-0.4.0/runtime/model_control.py +136 -0
- multiagentos-0.4.0/runtime/multi_agent.py +142 -0
- multiagentos-0.4.0/runtime/policy.py +28 -0
- multiagentos-0.4.0/runtime/process.py +41 -0
- multiagentos-0.4.0/runtime/quota.py +259 -0
- multiagentos-0.4.0/runtime/repository.py +103 -0
- multiagentos-0.4.0/runtime/repository_tools.py +62 -0
- multiagentos-0.4.0/runtime/status.py +87 -0
- multiagentos-0.4.0/runtime/tool_calling.py +134 -0
- multiagentos-0.4.0/runtime/validation.py +121 -0
- multiagentos-0.4.0/runtime/vyrelon.py +1557 -0
- multiagentos-0.4.0/setup.cfg +4 -0
- multiagentos-0.4.0/tests/test_agents_and_handoff.py +57 -0
- multiagentos-0.4.0/tests/test_ai_runtime.py +121 -0
- multiagentos-0.4.0/tests/test_builtin_tools.py +32 -0
- multiagentos-0.4.0/tests/test_chat_adapter_registry.py +26 -0
- multiagentos-0.4.0/tests/test_chat_agent_bridge.py +177 -0
- multiagentos-0.4.0/tests/test_chat_agent_router_session.py +68 -0
- multiagentos-0.4.0/tests/test_chat_agents.py +42 -0
- multiagentos-0.4.0/tests/test_chat_config.py +51 -0
- multiagentos-0.4.0/tests/test_chat_execution.py +66 -0
- multiagentos-0.4.0/tests/test_cli.py +234 -0
- multiagentos-0.4.0/tests/test_cli_providers.py +64 -0
- multiagentos-0.4.0/tests/test_cli_run_resume.py +54 -0
- multiagentos-0.4.0/tests/test_config_loader.py +58 -0
- multiagentos-0.4.0/tests/test_configured_model_cli.py +51 -0
- multiagentos-0.4.0/tests/test_core_runtime.py +75 -0
- multiagentos-0.4.0/tests/test_credentials.py +30 -0
- multiagentos-0.4.0/tests/test_execution_config.py +60 -0
- multiagentos-0.4.0/tests/test_execution_registry.py +34 -0
- multiagentos-0.4.0/tests/test_git_runtime.py +42 -0
- multiagentos-0.4.0/tests/test_github_contract.py +21 -0
- multiagentos-0.4.0/tests/test_github_probe.py +28 -0
- multiagentos-0.4.0/tests/test_github_runtime.py +72 -0
- multiagentos-0.4.0/tests/test_http_model_adapter.py +49 -0
- multiagentos-0.4.0/tests/test_human_review_persistence.py +172 -0
- multiagentos-0.4.0/tests/test_ide_bridge.py +131 -0
- multiagentos-0.4.0/tests/test_ide_runtime.py +170 -0
- multiagentos-0.4.0/tests/test_ide_tool_calling.py +51 -0
- multiagentos-0.4.0/tests/test_local_process.py +38 -0
- multiagentos-0.4.0/tests/test_local_tool_runtime.py +100 -0
- multiagentos-0.4.0/tests/test_mcp_cost_boundary.py +29 -0
- multiagentos-0.4.0/tests/test_mcp_policy.py +69 -0
- multiagentos-0.4.0/tests/test_mcp_runtime.py +87 -0
- multiagentos-0.4.0/tests/test_mcp_server.py +115 -0
- multiagentos-0.4.0/tests/test_model_agent.py +47 -0
- multiagentos-0.4.0/tests/test_model_backed_agent.py +82 -0
- multiagentos-0.4.0/tests/test_model_capability.py +59 -0
- multiagentos-0.4.0/tests/test_model_control.py +54 -0
- multiagentos-0.4.0/tests/test_model_factory.py +26 -0
- multiagentos-0.4.0/tests/test_model_failover.py +67 -0
- multiagentos-0.4.0/tests/test_model_health.py +82 -0
- multiagentos-0.4.0/tests/test_model_intelligence_sync.py +132 -0
- multiagentos-0.4.0/tests/test_model_runtime.py +42 -0
- multiagentos-0.4.0/tests/test_multi_agent_runtime.py +78 -0
- multiagentos-0.4.0/tests/test_multi_agent_workflow.py +508 -0
- multiagentos-0.4.0/tests/test_native_provider_tool_calling.py +67 -0
- multiagentos-0.4.0/tests/test_openai_chat_agent.py +52 -0
- multiagentos-0.4.0/tests/test_orchestrator.py +116 -0
- multiagentos-0.4.0/tests/test_persistent_model_cli.py +113 -0
- multiagentos-0.4.0/tests/test_planning_state.py +38 -0
- multiagentos-0.4.0/tests/test_profile_contracts.py +51 -0
- multiagentos-0.4.0/tests/test_profiles_installer.py +31 -0
- multiagentos-0.4.0/tests/test_project_routing.py +65 -0
- multiagentos-0.4.0/tests/test_provider_config.py +74 -0
- multiagentos-0.4.0/tests/test_provider_discovery.py +98 -0
- multiagentos-0.4.0/tests/test_provider_materializer.py +56 -0
- multiagentos-0.4.0/tests/test_provider_registry.py +101 -0
- multiagentos-0.4.0/tests/test_provider_runtime_loader.py +33 -0
- multiagentos-0.4.0/tests/test_quota_helpers.py +31 -0
- multiagentos-0.4.0/tests/test_quota_intelligence.py +42 -0
- multiagentos-0.4.0/tests/test_quota_provider_metadata.py +33 -0
- multiagentos-0.4.0/tests/test_quota_routing.py +50 -0
- multiagentos-0.4.0/tests/test_release_security_boundaries.py +59 -0
- multiagentos-0.4.0/tests/test_repository_runtime.py +77 -0
- multiagentos-0.4.0/tests/test_repository_tools.py +46 -0
- multiagentos-0.4.0/tests/test_routing_explainability.py +77 -0
- multiagentos-0.4.0/tests/test_runtime_adapters.py +43 -0
- multiagentos-0.4.0/tests/test_tool_calling_runtime.py +40 -0
- multiagentos-0.4.0/tests/test_unified_checkpoints.py +151 -0
- multiagentos-0.4.0/tests/test_validation_runtime.py +41 -0
- multiagentos-0.4.0/tests/test_vyrelon_runtime.py +213 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# MultiAgentOS
|
|
2
|
+
|
|
3
|
+
MultiAgentOS is the foundation for VYRELON, a local-first, GitHub-native multi-agent development orchestrator.
|
|
4
|
+
|
|
5
|
+
## Core principles
|
|
6
|
+
|
|
7
|
+
- Local-first: filesystem, shell, processes and Git are first-class.
|
|
8
|
+
- GitHub-native: repository, branch, commit, issue, pull request, review and CI lifecycle are first-class.
|
|
9
|
+
- Chat-Agent agnostic with ChatGPT as the default primary conversational agent; Gemini, Claude and other providers can participate.
|
|
10
|
+
- Multi-AI assignment: agents can use explicit, pool/fallback, or automatic model routing.
|
|
11
|
+
- Executable lifecycle: Understand -> Plan -> Delegate -> Execute -> Verify -> Review -> Handoff.
|
|
12
|
+
- Profile-driven: React Native, Android Native and iOS Native extend the common core.
|
|
13
|
+
- Policy-controlled writes: repository and GitHub mutations are explicit runtime capabilities.
|
|
14
|
+
|
|
15
|
+
## Current runtime
|
|
16
|
+
|
|
17
|
+
VYRELON currently includes:
|
|
18
|
+
|
|
19
|
+
- provider-neutral WorkUnit, Agent, Model, Runtime, Profile, and GitHub contracts
|
|
20
|
+
- deterministic multi-AI routing
|
|
21
|
+
- model adapters for generic CLI and HTTP JSON endpoints
|
|
22
|
+
- model-backed agent execution
|
|
23
|
+
- policy-controlled local process and GitHub runtimes
|
|
24
|
+
- evidence-based technology profile detection
|
|
25
|
+
- executable project bootstrap via the MultiAgentOS CLI
|
|
26
|
+
- explicit planning contracts and persistent WorkUnit state
|
|
27
|
+
- unified VYRELON runtime facade for project, Git, and GitHub control
|
|
28
|
+
- provider-neutral Chat Agent contracts and persistent VYRELON agent rules
|
|
29
|
+
- local stdlib unittest validation plus GitHub Actions CI
|
|
30
|
+
- read-only project status and durable checkpoint inspection
|
|
31
|
+
- project-scoped execution configuration for selecting the CLI Agent/Model
|
|
32
|
+
- direct project Chat Agent CLI with optional persistent conversation sessions
|
|
33
|
+
- provider capability discovery with OpenAI, Anthropic, and Gemini native defaults
|
|
34
|
+
- persistent model capability, quota, and health intelligence with cooldown-aware routing
|
|
35
|
+
- unified model control-plane inspection and provider-neutral routing explainability
|
|
36
|
+
- VYRELON stdio MCP server with read-only-by-default local tool exposure
|
|
37
|
+
|
|
38
|
+
## CLI
|
|
39
|
+
|
|
40
|
+
After installation:
|
|
41
|
+
|
|
42
|
+
multiagentos detect .
|
|
43
|
+
multiagentos init .
|
|
44
|
+
multiagentos init . --component vyrelon
|
|
45
|
+
multiagentos init . --component multi-agent
|
|
46
|
+
multiagentos init . --component all
|
|
47
|
+
multiagentos status .
|
|
48
|
+
multiagentos run --path . --objective "run tests" -- python -m unittest discover -s tests -v
|
|
49
|
+
multiagentos run --path . --agent custom-executor --model custom-process --objective "run tests" -- python -m unittest discover -s tests -v
|
|
50
|
+
multiagentos resume <work-unit-id> --path .
|
|
51
|
+
multiagentos chat --path . --objective "inspect the current project"
|
|
52
|
+
multiagentos chat --path . --execute --objective "run the smoke test" -- python -m unittest discover -s tests -v
|
|
53
|
+
multiagentos chat --path . --objective "continue our conversation" --session project-1
|
|
54
|
+
multiagentos mcp serve --path .
|
|
55
|
+
multiagentos mcp serve --path . --allow-write --allow-process
|
|
56
|
+
python tests/mcp_stdio_smoke.py
|
|
57
|
+
multiagentos github probe eaglesjo/MultiAgentOS
|
|
58
|
+
multiagentos models discover .
|
|
59
|
+
multiagentos models control .
|
|
60
|
+
multiagentos models capabilities .
|
|
61
|
+
multiagentos models quota .
|
|
62
|
+
multiagentos models health .
|
|
63
|
+
multiagentos models explain . --agent developer
|
|
64
|
+
|
|
65
|
+
The initializer supports independent installation:
|
|
66
|
+
|
|
67
|
+
- `vyrelon`: VYRELON runtime, policy, lifecycle, planning/state, project profile and execution configuration.
|
|
68
|
+
- `multi-agent`: role catalog and profile-specific multi-agent definitions.
|
|
69
|
+
- `all`: both components.
|
|
70
|
+
|
|
71
|
+
The selected mode is recorded in:
|
|
72
|
+
|
|
73
|
+
.multiagentos/components.json
|
|
74
|
+
|
|
75
|
+
VYRELON installation also writes:
|
|
76
|
+
|
|
77
|
+
.multiagentos/execution.json
|
|
78
|
+
.multiagentos/chat.json
|
|
79
|
+
|
|
80
|
+
The default execution configuration is:
|
|
81
|
+
|
|
82
|
+
{
|
|
83
|
+
"version": 1,
|
|
84
|
+
"runtime": "process",
|
|
85
|
+
"agent_id": "cli-executor",
|
|
86
|
+
"model_id": "local-process"
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
The `run` and `resume` commands load Agent/Model IDs from this project configuration and resolve them through VYRELON's provider-neutral Agent/AI registries. `--agent` and `--model` are explicit per-invocation overrides. An unknown or incompatible Agent/Model pair is rejected instead of silently constructing a new execution contract. The runtime and process capability remain controlled by VYRELON; the configuration does not contain credentials or executable command definitions.
|
|
90
|
+
|
|
91
|
+
Multi-agent installation additionally writes:
|
|
92
|
+
|
|
93
|
+
.multiagentos/agents.json
|
|
94
|
+
|
|
95
|
+
The project Chat Agent defaults to ChatGPT and is resolved through VYRELON's provider-neutral Chat Agent registry. Gemini, Claude, and other registered providers can be selected by changing `chat.json`; the selected Chat Agent still has no execution authority above VYRELON.
|
|
96
|
+
|
|
97
|
+
The `chat` command sends a conversational request through the configured Chat Agent and returns its summary, proposed plan steps, findings, artifacts, and provider evidence as JSON. It does not execute filesystem, Git, GitHub, process, verification, or review actions unless --execute is explicitly supplied with a user-provided command. In execution mode, the Chat Agent still only supplies intent/plan; VYRELON's configured execution Agent/Model owns the explicit command and lifecycle. Use `--session <id>` to persist conversation turns under `.multiagentos/sessions/`; credentials are never stored there. Provider SDKs remain optional and CI tests use injected adapters.
|
|
98
|
+
|
|
99
|
+
No provider credentials or API keys are written to the project.
|
|
100
|
+
|
|
101
|
+
The read-only `status` command reports installed components, detected profiles, execution configuration, agent catalog entries, WorkUnits, and durable workflow checkpoints. The `run` command executes a local command through the VYRELON WorkUnit lifecycle, while `resume` reloads a durable orchestration checkpoint and continues it. It makes interrupted or resumable work visible without granting the CLI any additional execution authority.
|
|
102
|
+
|
|
103
|
+
## Architecture
|
|
104
|
+
|
|
105
|
+
Core Orchestration
|
|
106
|
+
|
|
|
107
|
+
+-- Agent Contracts
|
|
108
|
+
+-- AI Routing
|
|
109
|
+
+-- Lifecycle
|
|
110
|
+
|
|
|
111
|
+
Runtime Adapters
|
|
112
|
+
|
|
|
113
|
+
+-- Local Process
|
|
114
|
+
+-- Model CLI
|
|
115
|
+
+-- Model HTTP
|
|
116
|
+
+-- GitHub
|
|
117
|
+
+-- MCP Server
|
|
118
|
+
|
|
|
119
|
+
Technology Profiles
|
|
120
|
+
|
|
|
121
|
+
+-- React Native
|
|
122
|
+
+-- Android Native
|
|
123
|
+
+-- iOS Native
|
|
124
|
+
|
|
125
|
+
## Cost-free baseline
|
|
126
|
+
|
|
127
|
+
MultiAgentOS does not require a paid AI API key for its core local development path. The VYRELON MCP runtime provides local filesystem READ/WRITE, patch application, and process/test execution independently of a model-provider API.
|
|
128
|
+
|
|
129
|
+
The verified baseline is documented in [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md). The current VYRELON runtime, filesystem WRITE/READ, `patch.apply`, `shell.run`, and local MCP/runtime tests are verified. Secure MCP Tunnel is ready for remote MCP integration; ChatGPT Web write-capable MCP access remains plan-gated by OpenAI's current product availability.
|
|
130
|
+
|
|
131
|
+
## Validation
|
|
132
|
+
|
|
133
|
+
python -m unittest discover -s tests -v
|
|
134
|
+
|
|
135
|
+
GitHub Actions runs the same test suite on pull requests and pushes.
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### Chat Agent adapter resolution
|
|
139
|
+
|
|
140
|
+
VYRELON resolves the configured Chat Agent through a provider-neutral adapter registry:
|
|
141
|
+
|
|
142
|
+
.multiagentos/chat.json
|
|
143
|
+
|
|
|
144
|
+
v
|
|
145
|
+
ChatAgentRegistry
|
|
146
|
+
|
|
|
147
|
+
v
|
|
148
|
+
ChatAdapterRegistry
|
|
149
|
+
|
|
|
150
|
+
+-- ChatGPT -> OpenAI adapter
|
|
151
|
+
+-- Gemini -> provider adapter when registered
|
|
152
|
+
+-- Claude -> provider adapter when registered
|
|
153
|
+
|
|
154
|
+
The core does not require a provider SDK. The OpenAI/ChatGPT adapter remains optional and obtains credentials from the provider's normal environment/authentication mechanism. A Chat Agent can propose intent and plans, but actual filesystem, Git, GitHub, process, verification, review, and approval actions remain VYRELON responsibilities.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
## VYRELON MCP server
|
|
158
|
+
|
|
159
|
+
VYRELON can expose its local tool surface as a stdio MCP server:
|
|
160
|
+
|
|
161
|
+
multiagentos mcp serve --path /path/to/project
|
|
162
|
+
|
|
163
|
+
The default surface is read-only. Filesystem write/patch tools require `--allow-write`, and shell execution requires `--allow-process`.
|
|
164
|
+
|
|
165
|
+
This server is intended to be launched locally by a transport such as OpenAI Secure MCP Tunnel; MultiAgentOS does not open a public inbound MCP port or provision the tunnel automatically.
|
|
166
|
+
|
|
167
|
+
## User setup and integrations
|
|
168
|
+
|
|
169
|
+
VYRELON is delivered as an installable local runtime. The MCP server remains free and independently usable; OpenAI Secure MCP Tunnel is an optional connection path.
|
|
170
|
+
|
|
171
|
+
### Install
|
|
172
|
+
|
|
173
|
+
From the MultiAgentOS checkout:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
python -m pip install .
|
|
177
|
+
multiagentos --help
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Initialize VYRELON in a project:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
cd your-project
|
|
184
|
+
multiagentos init . --component all
|
|
185
|
+
multiagentos status .
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Connection model
|
|
189
|
+
|
|
190
|
+
VYRELON has **one MCP server**. GitHub access and local-machine access are complementary paths:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
+--> ChatGPT GitHub app --> GitHub
|
|
194
|
+
/
|
|
195
|
+
ChatGPT / Codex -------+
|
|
196
|
+
\
|
|
197
|
+
+--> Secure MCP Tunnel (optional)
|
|
198
|
+
|
|
|
199
|
+
v
|
|
200
|
+
tunnel-client
|
|
201
|
+
|
|
|
202
|
+
v
|
|
203
|
+
VYRELON MCP Server
|
|
204
|
+
|
|
|
205
|
+
v
|
|
206
|
+
Local Project
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The GitHub connection does not expose the developer's local filesystem. The tunnel connection does not create another MCP server.
|
|
210
|
+
|
|
211
|
+
### Four practical paths
|
|
212
|
+
|
|
213
|
+
| Need | Connection |
|
|
214
|
+
| --- | --- |
|
|
215
|
+
| ChatGPT works on a remote repository | ChatGPT -> GitHub app -> authorized repository |
|
|
216
|
+
| VYRELON works with GitHub locally | VYRELON -> `gh` -> GitHub |
|
|
217
|
+
| Any MCP client uses VYRELON locally | MCP Client -> VYRELON MCP Server |
|
|
218
|
+
| ChatGPT/Codex uses the local project | ChatGPT/Codex -> Secure MCP Tunnel -> `tunnel-client` -> VYRELON MCP Server |
|
|
219
|
+
|
|
220
|
+
### ChatGPT + GitHub
|
|
221
|
+
|
|
222
|
+
Connect GitHub in ChatGPT Settings -> Apps, authorize the GitHub application, and grant access to the repositories that should be available.
|
|
223
|
+
|
|
224
|
+
Then use a normal ChatGPT conversation with the repository URL and development task. Repository-level `AGENTS.md` / Agent Skills guidance can be used alongside VYRELON; the project's own engineering instructions remain authoritative.
|
|
225
|
+
|
|
226
|
+
### Local VYRELON + GitHub
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
gh auth login
|
|
230
|
+
gh auth status
|
|
231
|
+
multiagentos github probe OWNER/REPOSITORY
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
GitHub mutations remain controlled by VYRELON policy and approval.
|
|
235
|
+
|
|
236
|
+
### Local VYRELON MCP
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
multiagentos mcp serve --path /absolute/path/to/project
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
The default MCP surface is read-only. Write and process capabilities require explicit flags:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
multiagentos mcp serve \
|
|
246
|
+
--path /absolute/path/to/project \
|
|
247
|
+
--allow-write \
|
|
248
|
+
--allow-process
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
No OpenAI account, `tunnel_id`, or `tunnel-client` is required for the standalone MCP path.
|
|
252
|
+
|
|
253
|
+
### ChatGPT/Codex + local VYRELON
|
|
254
|
+
|
|
255
|
+
The current managed-runtime flow is:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
tunnel-client runtimes connect \
|
|
259
|
+
--alias vyrelon-local \
|
|
260
|
+
--tunnel-id tunnel_... \
|
|
261
|
+
--runtime-api-key env:CONTROL_PLANE_API_KEY \
|
|
262
|
+
--mcp-command "multiagentos mcp serve --path /absolute/path/to/project"
|
|
263
|
+
|
|
264
|
+
tunnel-client runtimes status vyrelon-local --json
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
After the runtime is healthy, configure ChatGPT with **Connection: Tunnel** and the corresponding tunnel.
|
|
268
|
+
|
|
269
|
+
The same VYRELON MCP server is used locally and through the tunnel. Secure MCP Tunnel and `tunnel-client` are transport/connection infrastructure, not another MCP server.
|
|
270
|
+
|
|
271
|
+
### Documentation
|
|
272
|
+
|
|
273
|
+
Start here:
|
|
274
|
+
|
|
275
|
+
- [VYRELON Connection Guide](docs/VYRELON_CONNECTIONS.md) — complete connection model and developer setup.
|
|
276
|
+
- [Getting Started](docs/GETTING_STARTED.md) — clean-machine installation and validation.
|
|
277
|
+
- [Secure MCP Tunnel Setup](docs/MCP_TUNNEL.md) — OpenAI tunnel/runtime setup and troubleshooting.
|
|
278
|
+
- [VYRELON GitHub Connection](docs/VYRELON_GITHUB_CONNECTION.md) — local GitHub authentication and policy.
|
|
279
|
+
- [VYRELON MCP Architecture](docs/ARCHITECTURE_DECISIONS.md) — locked one-server architecture.
|
|
280
|
+
|
|
281
|
+
### Integration boundaries
|
|
282
|
+
|
|
283
|
+
- **GitHub:** remote/durable repository state and collaboration.
|
|
284
|
+
- **VYRELON MCP:** local project and local tool boundary.
|
|
285
|
+
- **Secure MCP Tunnel:** optional private transport between OpenAI products and the local VYRELON MCP server.
|
|
286
|
+
- **`tunnel-client`:** tunnel-side runtime/forwarding process.
|
|
287
|
+
- **VYRELON:** remains independently usable without OpenAI.
|
|
288
|
+
|
|
289
|
+
The VYRELON MCP server has CI/install-smoke coverage, including a dependency-free stdio client validating initialize, tools/list, and filesystem.read. Real ChatGPT/Codex tunnel verification remains environment-specific because it requires an actual OpenAI workspace, tunnel, runtime API key, and running `tunnel-client`.
|
|
290
|
+
|
|
291
|
+
Do not expose a local MCP endpoint directly to the public internet or commit GitHub/provider/tunnel credentials.
|
|
292
|
+
|
|
293
|
+
## Installation
|
|
294
|
+
|
|
295
|
+
Install the current release from PyPI:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
python -m pip install multiagentos
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Release automation uses PyPI Trusted Publishing from GitHub Actions; no long-lived PyPI API token is required.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Built-in VYRELON agent catalog."""
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Built-in specialist agent definitions."""
|
|
2
|
+
|
|
3
|
+
from core.contracts.agent import AgentContract
|
|
4
|
+
|
|
5
|
+
_COMMON = {
|
|
6
|
+
"planner": ({"planning"}, {"filesystem.read"}),
|
|
7
|
+
"researcher": ({"research"}, {"network.read"}),
|
|
8
|
+
"editor": ({"editing"}, {"filesystem.read", "filesystem.write"}),
|
|
9
|
+
"executor": ({"execution"}, {"filesystem.read", "filesystem.write", "process"}),
|
|
10
|
+
"tester": ({"testing"}, {"filesystem.read", "process"}),
|
|
11
|
+
"debugger": ({"debugging"}, {"filesystem.read", "process"}),
|
|
12
|
+
"reviewer": ({"review"}, {"filesystem.read"}),
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
_PROFILE_SPECIALISTS = {
|
|
16
|
+
"react-native": {
|
|
17
|
+
"architect": ({"architecture", "react-native"}, {"filesystem.read"}),
|
|
18
|
+
"developer": ({"code", "react-native"}, {"filesystem.read", "filesystem.write"}),
|
|
19
|
+
"ui": ({"ui", "react-native"}, {"filesystem.read", "filesystem.write"}),
|
|
20
|
+
"navigation": ({"navigation", "react-native"}, {"filesystem.read", "filesystem.write"}),
|
|
21
|
+
"state-management": ({"state-management", "react-native"}, {"filesystem.read", "filesystem.write"}),
|
|
22
|
+
},
|
|
23
|
+
"android-native": {
|
|
24
|
+
"android-architect": ({"architecture", "android"}, {"filesystem.read"}),
|
|
25
|
+
"kotlin-developer": ({"code", "kotlin"}, {"filesystem.read", "filesystem.write"}),
|
|
26
|
+
"jetpack-compose": ({"ui", "compose", "kotlin"}, {"filesystem.read", "filesystem.write"}),
|
|
27
|
+
"gradle": ({"build", "gradle"}, {"filesystem.read", "filesystem.write", "process"}),
|
|
28
|
+
},
|
|
29
|
+
"ios-native": {
|
|
30
|
+
"ios-architect": ({"architecture", "ios"}, {"filesystem.read"}),
|
|
31
|
+
"swift-developer": ({"code", "swift"}, {"filesystem.read", "filesystem.write"}),
|
|
32
|
+
"swiftui": ({"ui", "swiftui"}, {"filesystem.read", "filesystem.write"}),
|
|
33
|
+
"xcode": ({"build", "xcode"}, {"filesystem.read", "filesystem.write", "process"}),
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def build_agent_catalog(profile_ids: tuple[str, ...] = ()) -> tuple[AgentContract, ...]:
|
|
39
|
+
definitions: dict[str, tuple[set[str], set[str]]] = dict(_COMMON)
|
|
40
|
+
for profile_id in profile_ids:
|
|
41
|
+
definitions.update(_PROFILE_SPECIALISTS.get(profile_id, {}))
|
|
42
|
+
return tuple(
|
|
43
|
+
AgentContract(
|
|
44
|
+
id=agent_id,
|
|
45
|
+
role=agent_id,
|
|
46
|
+
capabilities=frozenset(capabilities),
|
|
47
|
+
tools=frozenset(tools),
|
|
48
|
+
metadata={"profiles": list(profile_ids)},
|
|
49
|
+
kind="specialist",
|
|
50
|
+
)
|
|
51
|
+
for agent_id, (capabilities, tools) in sorted(definitions.items())
|
|
52
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Agent catalog registration utilities."""
|
|
2
|
+
|
|
3
|
+
from core.registry import AgentRegistry
|
|
4
|
+
from agents.catalog import build_agent_catalog
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def build_registry(profile_ids: tuple[str, ...] = ()) -> AgentRegistry:
|
|
8
|
+
registry = AgentRegistry()
|
|
9
|
+
for agent in build_agent_catalog(profile_ids):
|
|
10
|
+
registry.register(agent)
|
|
11
|
+
return registry
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""VYRELON orchestration core."""
|
|
2
|
+
|
|
3
|
+
from core.chat_agent_bridge import ChatAgentBridge, ChatAgentExecutionResult, ChatAgentRequest, ChatAgentResponse
|
|
4
|
+
from core.chat_agent_registry import ChatAgentRegistry, default_chat_agents
|
|
5
|
+
from core.chat_agent_router import ChatAgentAssignment, ChatAgentRouter, ChatAgentRoutingStrategy
|
|
6
|
+
from core.chat_session import ChatSession, ChatSessionStore
|
|
7
|
+
from core.contracts.chat_agent import ChatAgentContract, ChatAgentProvider
|
|
8
|
+
from core.contracts.checkpoint import WorkflowCheckpoint
|
|
9
|
+
from core.contracts.execution import AgentExecutor, ResultReviewer, ResultVerifier, ReviewDecision
|
|
10
|
+
from core.contracts.human_review import HumanReviewDecision
|
|
11
|
+
from core.contracts.resume import WorkflowResumeContext
|
|
12
|
+
from core.contracts.handoff import ReviewContext
|
|
13
|
+
from core.contracts.model_runtime import ModelAdapter, ModelRequest, ModelResponse
|
|
14
|
+
from core.contracts.profile import DetectionResult, ProfileSpec
|
|
15
|
+
from core.contracts.runtime import ExecutionRequest, RuntimeExecutor
|
|
16
|
+
from core.delegation import Delegation, DelegationEngine
|
|
17
|
+
from core.lifecycle import ExecutionInterrupted, LifecycleCoordinator, LifecycleError
|
|
18
|
+
from core.orchestrator import OrchestrationResult, Orchestrator
|
|
19
|
+
from core.planning import BasicPlanner
|
|
20
|
+
from core.state import WorkStateStore
|
|
21
|
+
from core.registry import AIRegistry, AgentRegistry
|
|
22
|
+
from core.routing import AIRouter, Assignment, RoutingStrategy
|
|
23
|
+
|
|
24
|
+
__all__ = [
|
|
25
|
+
"AIRegistry", "AgentRegistry", "ChatAgentAssignment", "ChatAgentBridge", "ChatAgentRouter", "ChatAgentRoutingStrategy", "ChatSession", "ChatSessionStore", "ChatAgentExecutionResult", "ChatAgentRequest", "ChatAgentResponse", "ChatAgentRegistry", "ChatAgentContract", "ChatAgentProvider", "AIRouter", "Assignment", "RoutingStrategy",
|
|
26
|
+
"AgentExecutor", "ResultVerifier", "ResultReviewer", "ReviewDecision", "HumanReviewDecision", "WorkflowResumeContext", "WorkflowCheckpoint", "ReviewContext",
|
|
27
|
+
"ModelAdapter", "ModelRequest", "ModelResponse",
|
|
28
|
+
"ExecutionRequest", "RuntimeExecutor",
|
|
29
|
+
"DetectionResult", "ProfileSpec",
|
|
30
|
+
"Delegation", "DelegationEngine",
|
|
31
|
+
"ExecutionInterrupted", "LifecycleCoordinator", "LifecycleError",
|
|
32
|
+
"OrchestrationResult", "Orchestrator", "BasicPlanner", "WorkStateStore",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
from core.multi_agent_workflow import AgentStageResult, MultiAgentWorkflow, MultiAgentWorkflowResult
|
|
36
|
+
|
|
37
|
+
from core.artifacts import ArtifactStore
|
|
38
|
+
from core.contracts.handoff import ArtifactContract
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Persistent artifact registry for VYRELON workflows."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from core.contracts.handoff import ArtifactContract
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ArtifactStore:
|
|
12
|
+
"""Persist artifact metadata separately from transient model output."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, root: Path) -> None:
|
|
15
|
+
self.root = root
|
|
16
|
+
self.root.mkdir(parents=True, exist_ok=True)
|
|
17
|
+
|
|
18
|
+
def save(self, artifact: ArtifactContract) -> Path:
|
|
19
|
+
artifact.validate()
|
|
20
|
+
path = self.root / f"{artifact.id}.json"
|
|
21
|
+
payload = {
|
|
22
|
+
"id": artifact.id,
|
|
23
|
+
"kind": artifact.kind,
|
|
24
|
+
"producer_agent_id": artifact.producer_agent_id,
|
|
25
|
+
"content_ref": artifact.content_ref,
|
|
26
|
+
"summary": artifact.summary,
|
|
27
|
+
"media_type": artifact.media_type,
|
|
28
|
+
"metadata": artifact.metadata,
|
|
29
|
+
}
|
|
30
|
+
path.write_text(
|
|
31
|
+
json.dumps(payload, indent=2, ensure_ascii=False, default=str) + "\n",
|
|
32
|
+
encoding="utf-8",
|
|
33
|
+
)
|
|
34
|
+
return path
|
|
35
|
+
|
|
36
|
+
def load(self, artifact_id: str) -> ArtifactContract:
|
|
37
|
+
path = self.root / f"{artifact_id}.json"
|
|
38
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
39
|
+
return ArtifactContract(
|
|
40
|
+
id=data["id"],
|
|
41
|
+
kind=data["kind"],
|
|
42
|
+
producer_agent_id=data["producer_agent_id"],
|
|
43
|
+
content_ref=data["content_ref"],
|
|
44
|
+
summary=data.get("summary", ""),
|
|
45
|
+
media_type=data.get("media_type", "text/plain"),
|
|
46
|
+
metadata=dict(data.get("metadata", {})),
|
|
47
|
+
)
|