opencommand 0.1.3__tar.gz → 0.1.5__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.
- opencommand-0.1.5/PKG-INFO +207 -0
- opencommand-0.1.5/README.md +183 -0
- {opencommand-0.1.3 → opencommand-0.1.5}/pyproject.toml +2 -2
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/cli.py +613 -491
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/agent.py +91 -91
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/config.py +116 -88
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/errors.py +23 -23
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/logging.py +65 -65
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/supervisor.py +81 -81
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/core/tools.py +136 -136
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/engine/__init__.py +87 -66
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/engine/runner.py +303 -275
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/knowledge.py +85 -85
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/memory/MEMORY.md +14 -14
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/bash.md +14 -14
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/desktop_linux.md +41 -41
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/desktop_macos.md +42 -42
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/desktop_windows.md +44 -44
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/powershell.md +15 -15
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/python.md +20 -20
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/skills/system.md +38 -38
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/system/automatic.py +178 -155
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/system/cron.py +212 -212
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/system/notify.py +85 -85
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/system/platform.py +209 -197
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/templates.py +227 -227
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/desktop.py +202 -202
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/desktop_safety.py +162 -162
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/files.py +82 -82
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/instructions.py +163 -163
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/memory.py +78 -78
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/playwright.py +61 -61
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/research.py +46 -46
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/system.py +285 -285
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/terminal.py +53 -53
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/modules/tools/yara_rules/default.yar +61 -61
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/providers/provider.py +157 -157
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/swarm/agents/commander.py +549 -549
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/swarm/agents/worker.py +26 -26
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/tui/dashboard.py +41 -41
- opencommand-0.1.3/PKG-INFO +0 -92
- opencommand-0.1.3/README.md +0 -68
- {opencommand-0.1.3 → opencommand-0.1.5}/src/opencommand/__init__.py +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: opencommand
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: Local-first swarm agent framework: a Commander plans and dispatches a swarm of Workers that research, code, test, and interactively drive the computer to complete long-horizon codebase goals.
|
|
5
|
+
Author: DSiENT
|
|
6
|
+
Author-email: DSiENT <w.caskey7@gmail.com>
|
|
7
|
+
Requires-Dist: asciimatics>=1.15.0
|
|
8
|
+
Requires-Dist: click>=8.4.2
|
|
9
|
+
Requires-Dist: playwright>=1.61.0
|
|
10
|
+
Requires-Dist: pyautogui>=0.9.54
|
|
11
|
+
Requires-Dist: pynput>=1.8.2
|
|
12
|
+
Requires-Dist: requests>=2.34.2
|
|
13
|
+
Requires-Dist: mss>=9.0.0
|
|
14
|
+
Requires-Dist: pillow>=11.0.0
|
|
15
|
+
Requires-Dist: llama-cpp-python>=0.3.33
|
|
16
|
+
Requires-Dist: huggingface-hub>=0.30.0
|
|
17
|
+
Requires-Dist: watchdog>=6.0.0
|
|
18
|
+
Requires-Dist: ntfy>=2.7.1
|
|
19
|
+
Requires-Dist: yara-python>=4.5.0
|
|
20
|
+
Requires-Python: >=3.14
|
|
21
|
+
Project-URL: Homepage, https://github.com/D5-Interactive/OpenCommand
|
|
22
|
+
Project-URL: Repository, https://github.com/D5-Interactive/OpenCommand
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# OpenCommand
|
|
26
|
+
|
|
27
|
+
Local-first swarm agent framework. A **Commander** model plans and dispatches a
|
|
28
|
+
swarm of **Workers** that research, code, test, and interactively drive the
|
|
29
|
+
computer (mouse, keyboard, screen) to complete long-horizon codebase goals.
|
|
30
|
+
|
|
31
|
+
Everything runs **embedded** — models are GGUF files loaded directly with
|
|
32
|
+
`llama-cpp-python` (no API servers, no network at runtime). Designed for
|
|
33
|
+
**Python 3.14** (free-threaded).
|
|
34
|
+
|
|
35
|
+
## Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Run without installing (ephemeral):
|
|
39
|
+
uv tool run opencommand --help
|
|
40
|
+
|
|
41
|
+
# Or install globally:
|
|
42
|
+
uv tool install opencommand
|
|
43
|
+
playwright install # optional, for the playwright tool
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> **Note:** the `llama-cpp-python` prebuilt CPU wheel may crash on older CPUs
|
|
47
|
+
> (illegal-instruction). If so, rebuild from source with AVX2:
|
|
48
|
+
> ```bat
|
|
49
|
+
> call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
50
|
+
> set CMAKE_ARGS=-DGGML_AVX2=ON
|
|
51
|
+
> uv pip install --no-binary llama-cpp-python --no-cache llama-cpp-python
|
|
52
|
+
> ```
|
|
53
|
+
|
|
54
|
+
## Usage
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
opencommand models list # list built-in embedded models
|
|
58
|
+
opencommand models pull all # download GGUF models into ./models
|
|
59
|
+
opencommand config # interactive menu: workers, batch size, GPU, etc.
|
|
60
|
+
opencommand run "Add unit tests for the engine module."
|
|
61
|
+
opencommand run --goal-file Goal.md # run from a Goal.md spec (intended state)
|
|
62
|
+
opencommand run "Build a Panda3D FPS" --pipeline advanced --verify "uv run pytest -q"
|
|
63
|
+
opencommand tui # live swarm dashboard
|
|
64
|
+
opencommand cron add healthcheck "every 1h" "echo ok"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Goal.md spec
|
|
68
|
+
|
|
69
|
+
Instead of an inline goal, point `run` at a `Goal.md` file that defines the
|
|
70
|
+
intended end state / requirements for the session. Its contents become the goal
|
|
71
|
+
fed to the swarm (and the advanced pipeline's review gate checks against it):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
opencommand run --goal-file Goal.md
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The file name is configurable via `opencommand config` (default `Goal.md`).
|
|
78
|
+
|
|
79
|
+
## Built-in models
|
|
80
|
+
|
|
81
|
+
| Role | Model |
|
|
82
|
+
|---------------|----------------------------------------|
|
|
83
|
+
| commander | `deepreinforce-ai/Ornith-1.0-9B-GGUF` |
|
|
84
|
+
| worker | `unsloth/Qwen3-4B-Instruct-2507-GGUF` |
|
|
85
|
+
| vision | `unsloth/Qwen3-VL-4B-Instruct-GGUF` |
|
|
86
|
+
| vision_small | `openbmb/MiniCPM-V-4.6-gguf` |
|
|
87
|
+
|
|
88
|
+
## Links
|
|
89
|
+
|
|
90
|
+
- `DESIGN.md` — full architecture & research notes
|
|
91
|
+
- `TODO.md` — roadmap tracker
|
|
92
|
+
|
|
93
|
+
## Micro-wiki: running & configuring OpenCommand on any system
|
|
94
|
+
|
|
95
|
+
OpenCommand is **local-first** and **cross-platform** (Windows, Linux, macOS).
|
|
96
|
+
Everything runs embedded — no API keys, no external servers. The only hard
|
|
97
|
+
requirement is **Python 3.14+** and enough RAM for the GGUF models.
|
|
98
|
+
|
|
99
|
+
### 1. Install
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Ephemeral (no install):
|
|
103
|
+
uv tool run opencommand --help
|
|
104
|
+
|
|
105
|
+
# Global install (recommended):
|
|
106
|
+
uv tool install opencommand
|
|
107
|
+
playwright install # optional, only for the playwright tool
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
> **CPU illegal-instruction crash?** The `llama-cpp-python` prebuilt wheel is
|
|
111
|
+
> built with a newer ISA than some CPUs (e.g. Zen 3 / Ryzen 5000). Rebuild
|
|
112
|
+
> from source with your ISA flags:
|
|
113
|
+
> ```bat
|
|
114
|
+
> call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
115
|
+
> set CMAKE_ARGS=-DGGML_AVX2=ON
|
|
116
|
+
> uv pip install --no-binary llama-cpp-python --no-cache llama-cpp-python
|
|
117
|
+
> ```
|
|
118
|
+
|
|
119
|
+
### 2. Scaffold a workspace
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
opencommand init # creates README.md, TODO.md, .opencommand/ + GOAL.md
|
|
123
|
+
```
|
|
124
|
+
`init` is **idempotent** — it never overwrites existing files, so re-running it
|
|
125
|
+
is safe. Fill out `.opencommand/GOAL.md` with the intended end state, then run
|
|
126
|
+
the full advanced pipeline against it:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
opencommand run --goal-file .opencommand/GOAL.md --pipeline advanced
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 3. Configure (interactive menu)
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
opencommand config
|
|
136
|
+
```
|
|
137
|
+
Sets: vision on/off, vision model (`vision` = Qwen3-VL-4B, `vision_small` =
|
|
138
|
+
MiniCPM-V-4.6 0.8B for low-RAM), max workers, batch size, retries,
|
|
139
|
+
pipeline, live-verify, GPU layers, goal file, **desktop safety policy**, and
|
|
140
|
+
**per-role device placement**.
|
|
141
|
+
|
|
142
|
+
### 4. Device placement (low-VRAM hosts)
|
|
143
|
+
|
|
144
|
+
Models can be pinned per role to **GPU** (offload all layers) or **CPU+RAM**
|
|
145
|
+
(RAM only) via `opencommand config` → "Model device placement". Roles:
|
|
146
|
+
`commander`, `worker`, `vision`, `vision_small`. Example for an 8 GB VRAM /
|
|
147
|
+
32 GB RAM machine:
|
|
148
|
+
|
|
149
|
+
| Role | Device | Why |
|
|
150
|
+
|------------|--------|--------------------------------------------------|
|
|
151
|
+
| commander | GPU | Small planner; keep it fast & resident on GPU |
|
|
152
|
+
| worker | CPU | Heavy pool; scales with RAM, not VRAM |
|
|
153
|
+
| vision | GPU | VL desktop agent needs the GPU for screen理解 |
|
|
154
|
+
| vision_small | GPU | Lightweight fallback for the desktop agent |
|
|
155
|
+
|
|
156
|
+
Roles you don't pin fall back to the legacy global `n_gpu_layers`
|
|
157
|
+
(`-1` = all GPU, `0` = CPU). During live-verify the Commander is
|
|
158
|
+
**unloaded from the GPU** while the VL desktop agent runs (freeing VRAM), then
|
|
159
|
+
**re-loaded** to review the agent's report and continue the loop.
|
|
160
|
+
|
|
161
|
+
### 5. Run modes
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
opencommand run "Add unit tests for the engine module." # inline goal
|
|
165
|
+
opencommand run --goal-file .opencommand/GOAL.md # from spec
|
|
166
|
+
opencommand run "Build a Panda3D FPS" --pipeline advanced \
|
|
167
|
+
--verify "uv run pytest -q" # verify gate
|
|
168
|
+
opencommand run "..." --live-verify # interactive desktop check
|
|
169
|
+
opencommand tui # live dashboard
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- **standard** pipeline: plan → research → workers.
|
|
173
|
+
- **advanced** pipeline: scaffold → research loop (until accurate) → workers →
|
|
174
|
+
test+debug loop → Commander review gate → optional live-verify.
|
|
175
|
+
|
|
176
|
+
### 6. Desktop safety
|
|
177
|
+
|
|
178
|
+
The desktop agent drives the real mouse/keyboard, so it is the most dangerous
|
|
179
|
+
capability. `opencommand config` exposes a **safety policy** that the Commander
|
|
180
|
+
enforces before every action: allow/deny mouse, keyboard, typing; require
|
|
181
|
+
confirmation for risky-but-permitted actions; max steps; pause between actions; and
|
|
182
|
+
a built-in deny-list of destructive actions (restart/shutdown), dangerous key
|
|
183
|
+
combos (`win+r`, `ctrl+alt+del`), and typed tokens (`rm -rf`, `sudo`,
|
|
184
|
+
`curl | sh`). OS-specific safe-operation skills ship for Windows / Linux / macOS.
|
|
185
|
+
|
|
186
|
+
### 7. Scheduling
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
opencommand cron add healthcheck "every 1h" "echo ok" # shell command
|
|
190
|
+
opencommand cron add build "daily 09:00" "uv run pytest -q" # cron expr
|
|
191
|
+
opencommand cron edit healthcheck --schedule "every 30m" # change without remove+add
|
|
192
|
+
opencommand cron list / remove / status / start
|
|
193
|
+
```
|
|
194
|
+
Persisted jobs auto-boot with `run` / `cron start` and dispatch goals through
|
|
195
|
+
the Commander or run shell commands.
|
|
196
|
+
|
|
197
|
+
### 8. Security tooling
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
opencommand run "Scan the workspace for stray scripts" --goal-file Goal.md
|
|
201
|
+
```
|
|
202
|
+
The `system` tool lists processes, watches paths (watchdog), and scans files /
|
|
203
|
+
directories / live processes with **YARA** (`yara-python`, with a bundled
|
|
204
|
+
default ruleset detecting stray agent loops, obfuscation, suspicious PowerShell,
|
|
205
|
+
and known malware markers). Falls back to the `yara` CLI if the binding is absent.
|
|
206
|
+
|
|
207
|
+
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# OpenCommand
|
|
2
|
+
|
|
3
|
+
Local-first swarm agent framework. A **Commander** model plans and dispatches a
|
|
4
|
+
swarm of **Workers** that research, code, test, and interactively drive the
|
|
5
|
+
computer (mouse, keyboard, screen) to complete long-horizon codebase goals.
|
|
6
|
+
|
|
7
|
+
Everything runs **embedded** — models are GGUF files loaded directly with
|
|
8
|
+
`llama-cpp-python` (no API servers, no network at runtime). Designed for
|
|
9
|
+
**Python 3.14** (free-threaded).
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Run without installing (ephemeral):
|
|
15
|
+
uv tool run opencommand --help
|
|
16
|
+
|
|
17
|
+
# Or install globally:
|
|
18
|
+
uv tool install opencommand
|
|
19
|
+
playwright install # optional, for the playwright tool
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
> **Note:** the `llama-cpp-python` prebuilt CPU wheel may crash on older CPUs
|
|
23
|
+
> (illegal-instruction). If so, rebuild from source with AVX2:
|
|
24
|
+
> ```bat
|
|
25
|
+
> call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
26
|
+
> set CMAKE_ARGS=-DGGML_AVX2=ON
|
|
27
|
+
> uv pip install --no-binary llama-cpp-python --no-cache llama-cpp-python
|
|
28
|
+
> ```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
opencommand models list # list built-in embedded models
|
|
34
|
+
opencommand models pull all # download GGUF models into ./models
|
|
35
|
+
opencommand config # interactive menu: workers, batch size, GPU, etc.
|
|
36
|
+
opencommand run "Add unit tests for the engine module."
|
|
37
|
+
opencommand run --goal-file Goal.md # run from a Goal.md spec (intended state)
|
|
38
|
+
opencommand run "Build a Panda3D FPS" --pipeline advanced --verify "uv run pytest -q"
|
|
39
|
+
opencommand tui # live swarm dashboard
|
|
40
|
+
opencommand cron add healthcheck "every 1h" "echo ok"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Goal.md spec
|
|
44
|
+
|
|
45
|
+
Instead of an inline goal, point `run` at a `Goal.md` file that defines the
|
|
46
|
+
intended end state / requirements for the session. Its contents become the goal
|
|
47
|
+
fed to the swarm (and the advanced pipeline's review gate checks against it):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
opencommand run --goal-file Goal.md
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The file name is configurable via `opencommand config` (default `Goal.md`).
|
|
54
|
+
|
|
55
|
+
## Built-in models
|
|
56
|
+
|
|
57
|
+
| Role | Model |
|
|
58
|
+
|---------------|----------------------------------------|
|
|
59
|
+
| commander | `deepreinforce-ai/Ornith-1.0-9B-GGUF` |
|
|
60
|
+
| worker | `unsloth/Qwen3-4B-Instruct-2507-GGUF` |
|
|
61
|
+
| vision | `unsloth/Qwen3-VL-4B-Instruct-GGUF` |
|
|
62
|
+
| vision_small | `openbmb/MiniCPM-V-4.6-gguf` |
|
|
63
|
+
|
|
64
|
+
## Links
|
|
65
|
+
|
|
66
|
+
- `DESIGN.md` — full architecture & research notes
|
|
67
|
+
- `TODO.md` — roadmap tracker
|
|
68
|
+
|
|
69
|
+
## Micro-wiki: running & configuring OpenCommand on any system
|
|
70
|
+
|
|
71
|
+
OpenCommand is **local-first** and **cross-platform** (Windows, Linux, macOS).
|
|
72
|
+
Everything runs embedded — no API keys, no external servers. The only hard
|
|
73
|
+
requirement is **Python 3.14+** and enough RAM for the GGUF models.
|
|
74
|
+
|
|
75
|
+
### 1. Install
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Ephemeral (no install):
|
|
79
|
+
uv tool run opencommand --help
|
|
80
|
+
|
|
81
|
+
# Global install (recommended):
|
|
82
|
+
uv tool install opencommand
|
|
83
|
+
playwright install # optional, only for the playwright tool
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> **CPU illegal-instruction crash?** The `llama-cpp-python` prebuilt wheel is
|
|
87
|
+
> built with a newer ISA than some CPUs (e.g. Zen 3 / Ryzen 5000). Rebuild
|
|
88
|
+
> from source with your ISA flags:
|
|
89
|
+
> ```bat
|
|
90
|
+
> call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
91
|
+
> set CMAKE_ARGS=-DGGML_AVX2=ON
|
|
92
|
+
> uv pip install --no-binary llama-cpp-python --no-cache llama-cpp-python
|
|
93
|
+
> ```
|
|
94
|
+
|
|
95
|
+
### 2. Scaffold a workspace
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
opencommand init # creates README.md, TODO.md, .opencommand/ + GOAL.md
|
|
99
|
+
```
|
|
100
|
+
`init` is **idempotent** — it never overwrites existing files, so re-running it
|
|
101
|
+
is safe. Fill out `.opencommand/GOAL.md` with the intended end state, then run
|
|
102
|
+
the full advanced pipeline against it:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
opencommand run --goal-file .opencommand/GOAL.md --pipeline advanced
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 3. Configure (interactive menu)
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
opencommand config
|
|
112
|
+
```
|
|
113
|
+
Sets: vision on/off, vision model (`vision` = Qwen3-VL-4B, `vision_small` =
|
|
114
|
+
MiniCPM-V-4.6 0.8B for low-RAM), max workers, batch size, retries,
|
|
115
|
+
pipeline, live-verify, GPU layers, goal file, **desktop safety policy**, and
|
|
116
|
+
**per-role device placement**.
|
|
117
|
+
|
|
118
|
+
### 4. Device placement (low-VRAM hosts)
|
|
119
|
+
|
|
120
|
+
Models can be pinned per role to **GPU** (offload all layers) or **CPU+RAM**
|
|
121
|
+
(RAM only) via `opencommand config` → "Model device placement". Roles:
|
|
122
|
+
`commander`, `worker`, `vision`, `vision_small`. Example for an 8 GB VRAM /
|
|
123
|
+
32 GB RAM machine:
|
|
124
|
+
|
|
125
|
+
| Role | Device | Why |
|
|
126
|
+
|------------|--------|--------------------------------------------------|
|
|
127
|
+
| commander | GPU | Small planner; keep it fast & resident on GPU |
|
|
128
|
+
| worker | CPU | Heavy pool; scales with RAM, not VRAM |
|
|
129
|
+
| vision | GPU | VL desktop agent needs the GPU for screen理解 |
|
|
130
|
+
| vision_small | GPU | Lightweight fallback for the desktop agent |
|
|
131
|
+
|
|
132
|
+
Roles you don't pin fall back to the legacy global `n_gpu_layers`
|
|
133
|
+
(`-1` = all GPU, `0` = CPU). During live-verify the Commander is
|
|
134
|
+
**unloaded from the GPU** while the VL desktop agent runs (freeing VRAM), then
|
|
135
|
+
**re-loaded** to review the agent's report and continue the loop.
|
|
136
|
+
|
|
137
|
+
### 5. Run modes
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
opencommand run "Add unit tests for the engine module." # inline goal
|
|
141
|
+
opencommand run --goal-file .opencommand/GOAL.md # from spec
|
|
142
|
+
opencommand run "Build a Panda3D FPS" --pipeline advanced \
|
|
143
|
+
--verify "uv run pytest -q" # verify gate
|
|
144
|
+
opencommand run "..." --live-verify # interactive desktop check
|
|
145
|
+
opencommand tui # live dashboard
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
- **standard** pipeline: plan → research → workers.
|
|
149
|
+
- **advanced** pipeline: scaffold → research loop (until accurate) → workers →
|
|
150
|
+
test+debug loop → Commander review gate → optional live-verify.
|
|
151
|
+
|
|
152
|
+
### 6. Desktop safety
|
|
153
|
+
|
|
154
|
+
The desktop agent drives the real mouse/keyboard, so it is the most dangerous
|
|
155
|
+
capability. `opencommand config` exposes a **safety policy** that the Commander
|
|
156
|
+
enforces before every action: allow/deny mouse, keyboard, typing; require
|
|
157
|
+
confirmation for risky-but-permitted actions; max steps; pause between actions; and
|
|
158
|
+
a built-in deny-list of destructive actions (restart/shutdown), dangerous key
|
|
159
|
+
combos (`win+r`, `ctrl+alt+del`), and typed tokens (`rm -rf`, `sudo`,
|
|
160
|
+
`curl | sh`). OS-specific safe-operation skills ship for Windows / Linux / macOS.
|
|
161
|
+
|
|
162
|
+
### 7. Scheduling
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
opencommand cron add healthcheck "every 1h" "echo ok" # shell command
|
|
166
|
+
opencommand cron add build "daily 09:00" "uv run pytest -q" # cron expr
|
|
167
|
+
opencommand cron edit healthcheck --schedule "every 30m" # change without remove+add
|
|
168
|
+
opencommand cron list / remove / status / start
|
|
169
|
+
```
|
|
170
|
+
Persisted jobs auto-boot with `run` / `cron start` and dispatch goals through
|
|
171
|
+
the Commander or run shell commands.
|
|
172
|
+
|
|
173
|
+
### 8. Security tooling
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
opencommand run "Scan the workspace for stray scripts" --goal-file Goal.md
|
|
177
|
+
```
|
|
178
|
+
The `system` tool lists processes, watches paths (watchdog), and scans files /
|
|
179
|
+
directories / live processes with **YARA** (`yara-python`, with a bundled
|
|
180
|
+
default ruleset detecting stray agent loops, obfuscation, suspicious PowerShell,
|
|
181
|
+
and known malware markers). Falls back to the `yara` CLI if the binding is absent.
|
|
182
|
+
|
|
183
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "opencommand"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.5"
|
|
4
4
|
description = "Local-first swarm agent framework: a Commander plans and dispatches a swarm of Workers that research, code, test, and interactively drive the computer to complete long-horizon codebase goals."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -31,7 +31,7 @@ Homepage = "https://github.com/D5-Interactive/OpenCommand"
|
|
|
31
31
|
Repository = "https://github.com/D5-Interactive/OpenCommand"
|
|
32
32
|
|
|
33
33
|
[dependency-groups]
|
|
34
|
-
dev = ["pytest>=8.0"]
|
|
34
|
+
dev = ["pytest>=8.0", "ruff>=0.11.0"]
|
|
35
35
|
|
|
36
36
|
[tool.uv]
|
|
37
37
|
package = true
|