@voybio/ace-swarm 2.4.4 → 2.4.6
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.
- package/CHANGELOG.md +69 -0
- package/README.md +72 -532
- package/assets/eval-battery/battery.json +85 -0
- package/assets/eval-battery/fixtures/edit-target.js +3 -0
- package/assets/scripts/render-mcp-configs.sh +12 -0
- package/dist/ace-context.d.ts +18 -0
- package/dist/ace-context.js +161 -16
- package/dist/ace-server-instructions.js +36 -9
- package/dist/bridge-trace.d.ts +17 -0
- package/dist/bridge-trace.js +23 -0
- package/dist/cli.d.ts +9 -1
- package/dist/cli.js +619 -10
- package/dist/discovery-runtime-wrappers.d.ts +16 -1
- package/dist/discovery-runtime-wrappers.js +65 -9
- package/dist/eval-harness.d.ts +110 -0
- package/dist/eval-harness.js +254 -0
- package/dist/experience-reflector.d.ts +13 -0
- package/dist/experience-reflector.js +62 -0
- package/dist/goal-engine.d.ts +155 -0
- package/dist/goal-engine.js +795 -0
- package/dist/helpers/store-resolution.js +40 -39
- package/dist/hermes/session-manager.d.ts +10 -0
- package/dist/hermes/session-manager.js +130 -27
- package/dist/job-scheduler.d.ts +58 -0
- package/dist/job-scheduler.js +202 -2
- package/dist/job-worker.d.ts +87 -0
- package/dist/job-worker.js +182 -0
- package/dist/local-model-policy.d.ts +8 -2
- package/dist/local-model-policy.js +31 -17
- package/dist/local-model-runtime.d.ts +6 -0
- package/dist/local-model-runtime.js +130 -2
- package/dist/measured-classing.d.ts +66 -0
- package/dist/measured-classing.js +165 -0
- package/dist/model-bridge.d.ts +45 -0
- package/dist/model-bridge.js +502 -44
- package/dist/orchestrator-supervisor.js +1 -1
- package/dist/plan-proposal.d.ts +7 -0
- package/dist/plan-proposal.js +74 -4
- package/dist/playbook-adaptation.d.ts +37 -0
- package/dist/playbook-adaptation.js +159 -0
- package/dist/playbook-curator.d.ts +16 -0
- package/dist/playbook-curator.js +106 -0
- package/dist/playbook-llm-reflector.d.ts +26 -0
- package/dist/playbook-llm-reflector.js +157 -0
- package/dist/public-surface.d.ts +2 -0
- package/dist/public-surface.js +26 -14
- package/dist/safe-edit.d.ts +20 -0
- package/dist/safe-edit.js +355 -78
- package/dist/server.d.ts +11 -2
- package/dist/server.js +55 -5
- package/dist/shared.d.ts +12 -0
- package/dist/shared.js +13 -1
- package/dist/source-mutation-coordinator.d.ts +54 -0
- package/dist/source-mutation-coordinator.js +259 -0
- package/dist/status-events.d.ts +4 -1
- package/dist/status-events.js +41 -6
- package/dist/store/ace-packed-store.d.ts +28 -9
- package/dist/store/ace-packed-store.js +324 -57
- package/dist/store/bgzf.d.ts +4 -0
- package/dist/store/bgzf.js +94 -0
- package/dist/store/bootstrap-store.d.ts +4 -1
- package/dist/store/bootstrap-store.js +57 -3
- package/dist/store/cache-workspace.d.ts +8 -0
- package/dist/store/cache-workspace.js +67 -1
- package/dist/store/crc32.d.ts +2 -0
- package/dist/store/crc32.js +16 -0
- package/dist/store/fsck.d.ts +16 -0
- package/dist/store/fsck.js +240 -0
- package/dist/store/materializers/context-snapshot-materializer.d.ts +1 -0
- package/dist/store/materializers/context-snapshot-materializer.js +4 -1
- package/dist/store/materializers/projection-manager.d.ts +7 -0
- package/dist/store/materializers/projection-manager.js +37 -0
- package/dist/store/materializers/scheduler-projection-materializer.js +10 -3
- package/dist/store/repositories/goal-repository.d.ts +112 -0
- package/dist/store/repositories/goal-repository.js +157 -0
- package/dist/store/repositories/playbook-repository.d.ts +107 -0
- package/dist/store/repositories/playbook-repository.js +314 -0
- package/dist/store/store-artifacts.js +44 -2
- package/dist/store/store-authority-audit.js +1 -0
- package/dist/store/store-cli.d.ts +30 -0
- package/dist/store/store-cli.js +242 -0
- package/dist/store/store-snapshot.d.ts +12 -0
- package/dist/store/store-snapshot.js +74 -11
- package/dist/store/types.d.ts +1 -0
- package/dist/store/write-coordinator.d.ts +7 -0
- package/dist/store/write-coordinator.js +11 -0
- package/dist/todo-state.d.ts +21 -0
- package/dist/todo-state.js +150 -53
- package/dist/tools-agent.js +86 -22
- package/dist/tools-discovery.js +5 -3
- package/dist/tools-files.js +39 -18
- package/dist/tools-framework.js +31 -3
- package/dist/tools-goal.d.ts +11 -0
- package/dist/tools-goal.js +108 -0
- package/dist/tools-handoff.js +7 -11
- package/dist/tools-lifecycle.js +2 -0
- package/dist/tools-scheduler.js +44 -1
- package/dist/tools-skills.js +3 -2
- package/dist/tools-todo.js +64 -3
- package/dist/tools.js +2 -0
- package/dist/tui/chat.js +4 -0
- package/dist/tui/index.js +4 -1
- package/dist/tui/ollama.d.ts +2 -0
- package/dist/tui/openai-compatible.d.ts +14 -0
- package/dist/tui/openai-compatible.js +15 -2
- package/dist/tui/provider-discovery.d.ts +1 -0
- package/dist/tui/provider-discovery.js +2 -2
- package/docs/cli-reference.md +125 -0
- package/docs/development.md +46 -0
- package/docs/evaluation-safety.md +27 -0
- package/docs/experience-playbook.md +35 -0
- package/docs/hermes.md +129 -0
- package/docs/library-api.md +31 -0
- package/docs/mcp-tool-reference.md +290 -0
- package/docs/provider-security.md +85 -0
- package/docs/state-model.md +113 -0
- package/docs/troubleshooting.md +95 -0
- package/docs/tui-operator-guide.md +75 -0
- package/package.json +3 -1
- package/scripts/dev/run_hermes_crispr_live.mjs +212 -0
package/README.md
CHANGED
|
@@ -4,9 +4,9 @@ Autonomous Coding Entity (ACE) is a local MCP server and CLI for agent-assisted
|
|
|
4
4
|
|
|
5
5
|
`ace-swarm` provides Claude Code, Codex, Cursor, GitHub Copilot CLI, VS Code, and provider-backed workflows with a shared runtime: durable workspace state, typed handoffs, scheduler support, change intelligence, and operator tooling. All state lives in a single binary file — `agent-state/ace-state.ace` — with `.agents/ACE/ace-state.ace` kept only as a legacy fallback for older workspaces.
|
|
6
6
|
|
|
7
|
-
Modern coding agents can already read files, write code, run commands, and call tools. The missing layer is coordination that survives restarts, model switches, and multi-agent work. ACE keeps the workflow in the store and projects only the files external clients still need. For provider-backed runs, ACE
|
|
7
|
+
Modern coding agents can already read files, write code, run commands, and call tools. The missing layer is coordination that survives restarts, model switches, and multi-agent work. ACE keeps the workflow in the store and projects only the files external clients still need. For provider-backed runs, ACE supplies task context, tool surfaces, status events, evidence trails, and resumable state.
|
|
8
8
|
|
|
9
|
-
The full MCP surface spans
|
|
9
|
+
The full MCP surface spans **119 registered tools** across 13 domain modules — handoffs, scheduler, goals, file ops, drift detection, git, memory, discovery, skills, lifecycle events, vericify, tracker, and framework orchestration — plus resources and prompts. For premium hosts (Claude Code, Codex) a curated **`ace mcp --profile host-min`** exposes 22 high-value tools; the rest remain reachable via `run_orchestrator` delegation or `--profile full`. See the [MCP Tool Reference](docs/mcp-tool-reference.md) for the full catalog.
|
|
10
10
|
|
|
11
11
|
## ACE Manifesto
|
|
12
12
|
|
|
@@ -22,12 +22,12 @@ The full MCP surface spans **~70 registered tools** across 12 domain modules —
|
|
|
22
22
|
ACE provides model providers with the context they cannot infer on their own: task state, tool surfaces, status events, evidence trails, and the next move in the loop.
|
|
23
23
|
|
|
24
24
|
- `ace init --llm <provider>` records the selected runtime profile in the store.
|
|
25
|
-
- `ace connect` records an explicit runtime profile from a user-chosen local runtime endpoint or hosted provider
|
|
26
|
-
- `ace doctor` validates local or hosted runtime wiring
|
|
25
|
+
- `ace connect` records an explicit runtime profile from a user-chosen local runtime endpoint or hosted provider.
|
|
26
|
+
- `ace doctor` validates local or hosted runtime wiring and checks the selected model when the provider exposes listings.
|
|
27
27
|
- `ace doctor --scan` probes common Ollama and llama.cpp endpoints and writes the selected profile back into the store.
|
|
28
28
|
- `ace tui` is provider-aware for `ollama`, `llama.cpp`, `codex`, `claude`, `gemini`, and `copilot` when credentials or base URLs are configured.
|
|
29
29
|
- `ace mcp` and `ace tui` expose the same workspace truth to the host, the terminal, and the model.
|
|
30
|
-
- `ace mcp-shadow --tools <csv>` starts a filtered stdio server that exposes only the listed tools — used
|
|
30
|
+
- `ace mcp-shadow --tools <csv>` starts a filtered stdio server that exposes only the listed tools — used by the Hermes bridge so a local model sees a scoped, safe subset of the surface.
|
|
31
31
|
|
|
32
32
|
## Why This Exists Now
|
|
33
33
|
|
|
@@ -38,66 +38,29 @@ Frontier models are getting more capable and more restricted at the same time. P
|
|
|
38
38
|
- Ollama and llama.cpp keep local runtimes in play.
|
|
39
39
|
- MCP remains the common protocol surface across clients and runtimes.
|
|
40
40
|
|
|
41
|
-
ACE sits underneath that stack. It does not compete with the host you already use
|
|
42
|
-
|
|
43
|
-
ACE also provides scheduler primitives for queued work, dependency gates, leases, and resource locks so multi-agent runs stay coordinated.
|
|
41
|
+
ACE sits underneath that stack. It does not compete with the host you already use — it provides that host with a durable local runtime, plus scheduler primitives for queued work, dependency gates, leases, and resource locks so multi-agent runs stay coordinated.
|
|
44
42
|
|
|
45
43
|
## ACEPACK State Model
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
ace-state.ace
|
|
51
|
-
├── Header (128 bytes)
|
|
52
|
-
│ magic · version · flags
|
|
53
|
-
│ kv_index_offset · kv_index_length · kv_chunk_end
|
|
54
|
-
│ evt_offset · evt_length · evt_count · evt_base_id
|
|
55
|
-
├── KV Chunk Region (append-only, random-access)
|
|
56
|
-
│ knowledge/agents/{name}/{file} → agent instruction text
|
|
57
|
-
│ knowledge/skills/{name}/{file} → skill content
|
|
58
|
-
│ topology/{kind} → swarm registry, route tables
|
|
59
|
-
│ state/{...} → handoffs, todo, ledger, scheduler
|
|
60
|
-
│ meta/{...} → schema version, project name
|
|
61
|
-
│ Each chunk: [uint32 length][bytes]
|
|
62
|
-
└── Columnar Event Section (rewritten on commit)
|
|
63
|
-
uint32 event count
|
|
64
|
-
int64[N] timestamps (epoch ms, big-endian)
|
|
65
|
-
uint8[N] kinds (EntityKind enum)
|
|
66
|
-
uint8[N] sources (ContentSource enum)
|
|
67
|
-
uint8[N] flags (0x01 = deleted)
|
|
68
|
-
uint32[N] payload offsets (→ payload pool)
|
|
69
|
-
uint32[N] payload lengths
|
|
70
|
-
uint32 pool length
|
|
71
|
-
bytes[M] payload pool (UTF-8 JSON blobs)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### KV region — random-access blob cache
|
|
75
|
-
|
|
76
|
-
All persistent state — agent instructions, skills, topology, task indexes, scheduler queues — lives in the KV region. Each key maps to an immutable chunk appended at write time. `commit()` rewrites the KV index (a small JSON map at the file tail) to reflect the live keys. `compact()` rewrites the KV region to remove dead space from overwritten keys, atomically via tmp-rename.
|
|
77
|
-
|
|
78
|
-
Write cost: O(1) append + O(index_size) index rewrite.
|
|
79
|
-
Read cost: O(1) seek + O(chunk_length) read.
|
|
80
|
-
|
|
81
|
-
### Columnar event section — typed handoff log
|
|
45
|
+
Most agent frameworks scatter runtime state across dozens of generated files — status logs, handoff records, todo lists, indexes — that drift apart and get re-parsed on every read. ACEPACK closes that gap: it is a custom binary format that presents all workspace state as one structured, single-file store at `agent-state/ace-state.ace`.
|
|
82
46
|
|
|
83
|
-
|
|
47
|
+
- A **random-access KV region** holds agent instructions, skills, topology, task indexes, and scheduler queues as append-only chunks.
|
|
48
|
+
- A **columnar event section** stores the typed handoff and status log so time/kind scans read a few bytes per event instead of parsing full JSON.
|
|
49
|
+
- **Store-backed projections** mean external tools read the same truth through a single authority instead of divergent files.
|
|
84
50
|
|
|
85
|
-
|
|
86
|
-
- Per-event overhead is ~19 bytes fixed vs ~150 bytes for equivalent JSON.
|
|
87
|
-
- At 100,000 events, the fixed columns are ~1.9 MB; a full JSON log would be ~15 MB.
|
|
51
|
+
The result is one coherent source of truth that survives restarts, compacts to reclaim space, and keeps a full replayable event history. For the on-disk byte layout, KV mechanics, and columnar details, see the [ACEPACK State Model reference](docs/state-model.md).
|
|
88
52
|
|
|
89
|
-
|
|
53
|
+
### Reading hidden state
|
|
90
54
|
|
|
91
|
-
|
|
55
|
+
Generated state is store-only by default — the workspace stays clean and agents read
|
|
56
|
+
through MCP tools. Humans stay in the loop through the CLI:
|
|
92
57
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
| KV region with typed keys | Hand-rolled file sprawl for runtime state, instructions, indexes |
|
|
97
|
-
| Columnar event log | Repeated full-JSON parsing for timestamp and kind scanning |
|
|
98
|
-
| Store-backed projections | External tools reading the same truth through different paths |
|
|
58
|
+
ace ls agent-state # list hidden artifacts by logical path
|
|
59
|
+
ace read agent-state/kanban.json
|
|
60
|
+
ace read agent-state/STORE_AUTHORITY_AUDIT.md --out /tmp/audit.md
|
|
99
61
|
|
|
100
|
-
|
|
62
|
+
`ace read` is exact-length by construction: it returns the complete stored block or
|
|
63
|
+
fails loudly — never a truncated or delimiter-clipped view.
|
|
101
64
|
|
|
102
65
|
## Quick Start
|
|
103
66
|
|
|
@@ -108,6 +71,8 @@ npx -y @voybio/ace-swarm turnkey --project "My Project"
|
|
|
108
71
|
ace mcp
|
|
109
72
|
```
|
|
110
73
|
|
|
74
|
+
The bare `ace` commands throughout the docs assume a global install (`npm install -g @voybio/ace-swarm`); without one, prefix each with `npx -y @voybio/ace-swarm`.
|
|
75
|
+
|
|
111
76
|
Then, in your MCP host:
|
|
112
77
|
|
|
113
78
|
```text
|
|
@@ -117,10 +82,10 @@ initiate ACE
|
|
|
117
82
|
Local-model path with Ollama:
|
|
118
83
|
|
|
119
84
|
```bash
|
|
120
|
-
npx -y @voybio/ace-swarm turnkey --project "My Project" --llm ollama --model
|
|
85
|
+
npx -y @voybio/ace-swarm turnkey --project "My Project" --llm ollama --model qwen3:8b --base-url http://localhost:11434
|
|
121
86
|
ollama serve
|
|
122
|
-
ollama pull
|
|
123
|
-
ace doctor --llm ollama --model
|
|
87
|
+
ollama pull qwen3:8b
|
|
88
|
+
ace doctor --llm ollama --model qwen3:8b --base-url http://localhost:11434
|
|
124
89
|
ace mcp
|
|
125
90
|
```
|
|
126
91
|
|
|
@@ -133,20 +98,6 @@ ace doctor --llm llama.cpp --model local-model --base-url http://localhost:8080
|
|
|
133
98
|
ace mcp
|
|
134
99
|
```
|
|
135
100
|
|
|
136
|
-
Optional local-model path with the Hermes execution engine:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
ace init --project "My Project" --llm llama.cpp --base-url http://localhost:8080
|
|
140
|
-
llama-server -m /path/to/model.gguf --port 8080
|
|
141
|
-
ace doctor --scan # auto-detect endpoint and model
|
|
142
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent HERMES_PYTHON=/path/to/python \
|
|
143
|
-
ace doctor --llm llama.cpp --base-url http://127.0.0.1:8080/v1 --model <model> --hermes
|
|
144
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent HERMES_PYTHON=/path/to/python \
|
|
145
|
-
ace tui --provider llama.cpp --base-url http://127.0.0.1:8080/v1 --model <model> --hermes
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
If you already have a local runtime running, `ace doctor --scan` will probe common Ollama and llama.cpp endpoints and write the selected profile back into the store.
|
|
149
|
-
|
|
150
101
|
Hosted provider path with Codex:
|
|
151
102
|
|
|
152
103
|
```bash
|
|
@@ -156,6 +107,8 @@ ace doctor --llm codex --model gpt-5
|
|
|
156
107
|
ace mcp
|
|
157
108
|
```
|
|
158
109
|
|
|
110
|
+
If you already have a local runtime running, `ace doctor --scan` will probe common Ollama and llama.cpp endpoints and write the selected profile back into the store. For the optional Hermes engine path, see [Local Models & Hermes](#local-models--hermes) and the [Hermes reference](docs/hermes.md). The full command list lives in the [CLI Reference](docs/cli-reference.md).
|
|
111
|
+
|
|
159
112
|
## What Bootstrap Writes
|
|
160
113
|
|
|
161
114
|
ACE bootstrap is intentionally contained. The store is authoritative at `agent-state/ace-state.ace`; only a few host-facing files land in the workspace when requested.
|
|
@@ -183,7 +136,7 @@ Developer or MCP host
|
|
|
183
136
|
│ ├── ace-state.ace (ACEPACK binary store)
|
|
184
137
|
│ └── STATUS.md / kanban.html / HANDOFF.json projections
|
|
185
138
|
│
|
|
186
|
-
├── ace mcp
|
|
139
|
+
├── ace mcp [--profile host-min|full] (full surface 119 tools; host-min 22)
|
|
187
140
|
│ │
|
|
188
141
|
│ ├── tools, prompts, resources
|
|
189
142
|
│ ├── typed handoff validation
|
|
@@ -215,20 +168,27 @@ Developer or MCP host
|
|
|
215
168
|
+----------------------+--------------------------------------------------------------+
|
|
216
169
|
| Runtime roles | ACE-Orchestrator, Coders, QA, Spec, Docs, Research, Ops, |
|
|
217
170
|
| | Security, Memory, Release, Eval, Skeptic, astgrep, Builder |
|
|
218
|
-
| MCP server |
|
|
171
|
+
| MCP server | 119 tools across 13 domain modules (stdio); host-min |
|
|
172
|
+
| | profile exposes 22 curated tools |
|
|
219
173
|
| Durable state | Single `agent-state/ace-state.ace` authority for handoffs, |
|
|
220
|
-
| | status events, todos, run ledger, job queue, and discovery
|
|
221
|
-
| Projections | Hook context, todo surface, and host config bundles
|
|
222
|
-
| Coordination | Scheduler queues, dependency gates, leases, resource locks
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
174
|
+
| | status events, todos, run ledger, job queue, and discovery |
|
|
175
|
+
| Projections | Hook context, todo surface, and host config bundles |
|
|
176
|
+
| Coordination | Scheduler queues, dependency gates, leases, resource locks, |
|
|
177
|
+
| | in-process job worker, heartbeat watchdog, circuit breakers |
|
|
178
|
+
| Goal engine | `ace goal` self-paced objective loop with evidence-gated |
|
|
179
|
+
| | completion, tick/replan budgets, and operator stop |
|
|
180
|
+
| Change intelligence | Delta scan, semantic snapshots, drift reports, rewrite hints |
|
|
181
|
+
| Structural editing | ast-grep query, locate, rewrite, compile, patch |
|
|
182
|
+
| Hermes bridge | Optional, user-supplied subprocess engine selected only with |
|
|
183
|
+
| | `--hermes`; scoped shadow MCP tools, evidence tracking |
|
|
184
|
+
| Terminal UI | Provider-aware TUI with chat, tabs, telemetry, and agent UI |
|
|
185
|
+
| Local models | Ollama and llama.cpp bootstrap, doctor checks, and bridges |
|
|
186
|
+
| Tracker integration | GitHub Issues, Linear adapter layer with snapshot cache |
|
|
187
|
+
| Vericify | Test evidence log, process post trail (incl. blocker |
|
|
188
|
+
| | routing), bridge snapshot |
|
|
189
|
+
| Skills | Packaged skills with catalog, audit, and triage |
|
|
190
|
+
| Experience playbook | Evidence-gated lessons store (experimental, injection off by |
|
|
191
|
+
| | default; `ace playbook` / `ace eval --adapt`) |
|
|
232
192
|
+----------------------+--------------------------------------------------------------+
|
|
233
193
|
```
|
|
234
194
|
|
|
@@ -243,360 +203,28 @@ ACE is for teams and solo operators who already like their coding host and want
|
|
|
243
203
|
|
|
244
204
|
In that setup, the host remains the interface. ACE becomes the state contract underneath it.
|
|
245
205
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
Local models are good at generating text. They usually need help seeing the workspace, hearing the handoff trail, and remembering what changed two turns ago. ACE closes that gap.
|
|
249
|
-
|
|
250
|
-
### What Hermes is
|
|
251
|
-
|
|
252
|
-
Hermes is an optional, user-supplied companion execution substrate. ACE does not install Hermes, clone it, or make it a package dependency. When the operator explicitly passes `--hermes` or `--engine hermes_local`, Hermes handles local provider quirks, streaming delivery, and robust tool-call framing. The local model provider is still Ollama or llama.cpp. ACE remains the system of record — state, evidence, verification, scheduler — and exports a **scoped shadow MCP tool surface** to Hermes so the local model only sees the tools it needs for a given task scope.
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
ACE TUI (ace tui --hermes / --engine hermes_local)
|
|
256
|
-
│ user input → ChatSession.sendMessage();
|
|
257
|
-
│ ACE owns session identity, policy, state
|
|
258
|
-
▼
|
|
259
|
-
runLocalModelTask() ← src/local-model-runtime.ts
|
|
260
|
-
│ ACE dispatches, ACE controls the turn
|
|
261
|
-
▼
|
|
262
|
-
HermesSubprocessExecutor ← Node.js class, src/hermes/session-manager.ts
|
|
263
|
-
│ spawns Python worker; ACE controls lifecycle
|
|
264
|
-
├── writes hermesHome/config.yaml (provider, model, user-supplied Hermes path, shadow MCP entry)
|
|
265
|
-
├── pipes ace mcp-shadow --tools <csv> ← scoped tools-only shadow server (stdio)
|
|
266
|
-
│ (ACE-owned; local model sees only allowed tools, not public prompts/resources)
|
|
267
|
-
▼
|
|
268
|
-
hermes_bridge_worker.py ← Python subprocess
|
|
269
|
-
│ reads config.yaml; calls shadow MCP & local model
|
|
270
|
-
├── streams framed NDJSON events → HermesBridgeFrameDecoder
|
|
271
|
-
└── calls local model (ollama / llama.cpp)
|
|
272
|
-
│
|
|
273
|
-
▼ bridge frames validated and applied by ACE
|
|
274
|
-
ACE store (ace-state.ace) ← authoritative output; ACE-owned
|
|
275
|
-
evidence, continuity, run ledger persisted here
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### Bridge protocol
|
|
279
|
-
|
|
280
|
-
The Node ↔ Hermes channel is a strictly typed newline-delimited JSON frame stream. Each frame carries a `type` field:
|
|
281
|
-
|
|
282
|
-
| Frame type | Direction | Purpose |
|
|
283
|
-
|---|---|---|
|
|
284
|
-
| `session_open` | N→H | start session with config |
|
|
285
|
-
| `turn_run` | N→H | submit a task turn |
|
|
286
|
-
| `interrupt` | N→H | cancel in-flight turn |
|
|
287
|
-
| `session_close` | N→H | shut down the worker |
|
|
288
|
-
| `status` | H→N | heartbeat / progress |
|
|
289
|
-
| `delta` | H→N | streaming token chunk |
|
|
290
|
-
| `reasoning` | H→N | chain-of-thought (optional) |
|
|
291
|
-
| `assistant_interim` | H→N | partial assistant message |
|
|
292
|
-
| `tool_start` | H→N | tool call initiated |
|
|
293
|
-
| `tool_progress` | H→N | tool call in flight |
|
|
294
|
-
| `tool_complete` | H→N | tool call result |
|
|
295
|
-
| `final` | H→N | complete assistant response |
|
|
296
|
-
| `error` | H→N | fatal bridge error |
|
|
206
|
+
For hosted Codex, Claude, Gemini, and Copilot backends, use the [hosted provider quick setup](docs/provider-security.md#hosted-provider-quick-setup) to configure credentials, endpoints, current default models, and a provider-specific doctor preflight.
|
|
297
207
|
|
|
298
|
-
|
|
208
|
+
## Local Models & Hermes
|
|
299
209
|
|
|
300
|
-
|
|
210
|
+
Local models are good at generating text. They usually need help seeing the workspace, hearing the handoff trail, and remembering what changed two turns ago. ACE closes that gap by giving any OpenAI-compatible local runtime — Ollama or llama.cpp — the same shared context, tool surfaces, evidence trails, and resumable state that hosted providers get. The direct provider path works out of the box; no extra runtime is required.
|
|
301
211
|
|
|
302
|
-
|
|
303
|
-
# User owns Hermes/Python setup. ACE only discovers and launches it when asked.
|
|
304
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent \
|
|
305
|
-
HERMES_PYTHON=/path/to/python \
|
|
306
|
-
ace doctor --llm llama.cpp --base-url http://127.0.0.1:8080/v1 --model <model> --hermes
|
|
307
|
-
|
|
308
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent \
|
|
309
|
-
HERMES_PYTHON=/path/to/python \
|
|
310
|
-
ace tui --provider llama.cpp --base-url http://127.0.0.1:8080/v1 --model <model> --hermes
|
|
311
|
-
|
|
312
|
-
# Optional uv-managed Hermes project, still operator supplied.
|
|
313
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent \
|
|
314
|
-
ACE_HERMES_UV_PROJECT=/path/to/hermes-agent \
|
|
315
|
-
ace tui --provider llama.cpp --base-url http://127.0.0.1:8080/v1 --model <model> --hermes
|
|
316
|
-
```
|
|
212
|
+
**Hermes** is an optional layer on top of that. Local providers vary in how they stream tokens, frame tool calls, and handle interrupts. Rather than special-case every quirk in ACE, the operator can point ACE at Hermes — a user-supplied companion execution engine — to handle streaming delivery and robust tool-call framing. ACE does not install Hermes or bundle it; it discovers and launches the operator's own Hermes/Python setup only when `--hermes` (or `--engine hermes_local`) is passed. ACE stays the system of record — state, evidence, verification, scheduler — and exposes only a scoped shadow MCP tool surface to Hermes, so the local model sees just the tools its task scope needs.
|
|
317
213
|
|
|
318
|
-
|
|
214
|
+
Hermes-local is opt-in. The local model provider is still Ollama or llama.cpp; Hermes is only the optional execution bridge around that provider.
|
|
319
215
|
|
|
320
216
|
```bash
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
ace tui --provider ollama --model llama3.1:8b --hermes
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
Note: Hermes-local is opt-in. Without `--hermes` or `--engine hermes_local`, the TUI uses the direct provider path and does not require Python, uv, or Hermes. When Hermes is selected, ACE launches the user-supplied Hermes/Python setup for that session and exposes only the scoped shadow MCP tool surface. Tool evidence, not model prose, determines executable mutation.
|
|
217
|
+
# Direct path (no Python, no Hermes) — just a local model
|
|
218
|
+
ace tui --provider ollama --model qwen3:8b
|
|
327
219
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
`ace doctor` surfaces Hermes-local readiness gates only when `--hermes` is passed:
|
|
331
|
-
|
|
332
|
-
```bash
|
|
220
|
+
# Optional Hermes engine, operator-supplied
|
|
333
221
|
ACE_HERMES_ROOT=/path/to/hermes-agent HERMES_PYTHON=/path/to/python \
|
|
334
|
-
ace
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
Checks performed:
|
|
338
|
-
|
|
339
|
-
- Hermes bridge worker packaged (`scripts/hermes_bridge_worker.py` present)
|
|
340
|
-
- Hermes checkout supplied by the operator (`ACE_HERMES_ROOT` or `--hermes-root`)
|
|
341
|
-
- Python supplied by the operator (`HERMES_PYTHON` or `--hermes-python`)
|
|
342
|
-
- Optional uv project supplied by the operator (`ACE_HERMES_UV_PROJECT` or `--hermes-uv-project`)
|
|
343
|
-
- Shadow MCP command available for scoped tools-only transport
|
|
344
|
-
- Local runtime reachable and model available
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
# Auto-scan common Ollama + llama.cpp endpoints
|
|
348
|
-
ace doctor --scan
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### Evidence model
|
|
352
|
-
|
|
353
|
-
ACE persists tool evidence only when the model invokes `write_workspace_file` successfully through the shadow MCP surface. If Hermes returns a complete artifact in its final response but never called the write tool, the live driver materializes the artifact for inspection and records `materialized_from_hermes_final` — diagnostic only, not counted as `tool_write_done`.
|
|
354
|
-
|
|
355
|
-
Operator-restricted models (e.g. `deepseek-r1:8b`) are blocked in `local-model-policy.ts` before a session even starts.
|
|
356
|
-
|
|
357
|
-
## MCP Tool Surface
|
|
358
|
-
|
|
359
|
-
ACE exposes tools through a domain-modular registration system (`src/tools.ts` delegates to 12 domain modules). Tools can be allow-listed at startup; `ace mcp-shadow` uses this to give Hermes a scoped tools-only subset. Public `ace mcp` still exposes the full tools, prompts, and resources surface.
|
|
360
|
-
|
|
361
|
-
### Agent & Runtime
|
|
362
|
-
|
|
363
|
-
| Tool | Purpose |
|
|
364
|
-
|---|---|
|
|
365
|
-
| `get_agent_instructions` | Read instruction content for any ACE agent role |
|
|
366
|
-
| `get_agent_manifest` | Read the manifest for a given agent role |
|
|
367
|
-
| `get_all_agents_summary` | List all registered agents with role metadata |
|
|
368
|
-
| `get_kernel_artifact` | Read a named kernel artifact from the store |
|
|
369
|
-
| `get_runtime_profile` | Read the active runtime profile (provider, model, base URL) |
|
|
370
|
-
| `validate_runtime_profile` | Schema-validate the stored runtime profile |
|
|
371
|
-
| `get_transition_log` | Read recent agent state-transition history |
|
|
372
|
-
| `get_capability_snapshot` | Summarize current capability coverage across agents |
|
|
373
|
-
| `get_runtime_tool_specs` | Read the tool-spec registry for the active runtime |
|
|
374
|
-
| `validate_runtime_tool_specs` | Schema-validate the tool-spec registry |
|
|
375
|
-
| `list_runtime_tool_specs` | List all registered tool specs |
|
|
376
|
-
| `execute_runtime_tool` | Execute a named runtime tool by spec |
|
|
377
|
-
|
|
378
|
-
### Orchestration & Planning
|
|
379
|
-
|
|
380
|
-
| Tool | Purpose |
|
|
381
|
-
|---|---|
|
|
382
|
-
| `propose_plan` | Generate a multi-step task plan proposal |
|
|
383
|
-
| `validate_plan` | Validate a plan proposal against acceptance contracts |
|
|
384
|
-
| `run_local_model` | Dispatch a task to the configured local model runtime |
|
|
385
|
-
| `run_orchestrator` | Run an ACE orchestrator session for a given task |
|
|
386
|
-
| `route_task` | Route an incoming task to the appropriate agent role |
|
|
387
|
-
| `bootstrap_state` | Seed or repair the ACE store for the current workspace |
|
|
388
|
-
| `get_framework_status` | Read aggregate framework health and readiness |
|
|
389
|
-
| `validate_framework` | Run the full framework validation gate suite |
|
|
390
|
-
| `audit_public_surface` | Audit schema-bound tools, resources, and prompts |
|
|
391
|
-
| `audit_store_authority` | Verify store authority and projection consistency |
|
|
392
|
-
| `execute_gates` | Run named gate conditions (dependency, handoff, time) |
|
|
393
|
-
|
|
394
|
-
### Handoffs
|
|
395
|
-
|
|
396
|
-
| Tool | Purpose |
|
|
397
|
-
|---|---|
|
|
398
|
-
| `create_handoff` | Create a typed, validated handoff record |
|
|
399
|
-
| `validate_handoff` | Validate a handoff payload against the schema |
|
|
400
|
-
| `get_handoff_template` | Retrieve the handoff template for a given role pair |
|
|
401
|
-
| `get_handoff_status` | Read the status of a specific handoff |
|
|
402
|
-
| `ack_handoff` | Acknowledge a handoff as received and accepted |
|
|
403
|
-
|
|
404
|
-
Example — creating a handoff from orchestrator to qa:
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
# via any MCP client
|
|
408
|
-
create_handoff {
|
|
409
|
-
"from_role": "orchestrator",
|
|
410
|
-
"to_role": "qa",
|
|
411
|
-
"summary": "Auth module implementation complete, ready for test coverage review",
|
|
412
|
-
"evidence": ["src/auth.ts", "src/auth.test.ts"],
|
|
413
|
-
"priority": "P1"
|
|
414
|
-
}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
### Scheduler
|
|
418
|
-
|
|
419
|
-
| Tool | Purpose |
|
|
420
|
-
|---|---|
|
|
421
|
-
| `enqueue_job` | Add a job to the queue with priority, deps, and resource locks |
|
|
422
|
-
| `dispatch_jobs` | Tick the scheduler and dispatch ready jobs |
|
|
423
|
-
| `acknowledge_job` | Mark a job as accepted by a worker |
|
|
424
|
-
| `complete_job` | Mark a job done or failed |
|
|
425
|
-
| `get_job_queue` | Read the current job queue |
|
|
426
|
-
| `get_job_lock_table` | Read active resource locks |
|
|
427
|
-
| `get_scheduler_lease` | Read the current scheduler lease |
|
|
428
|
-
|
|
429
|
-
Example — queuing a blocked job:
|
|
430
|
-
|
|
431
|
-
```bash
|
|
432
|
-
enqueue_job {
|
|
433
|
-
"kind": "handoff.lifecycle",
|
|
434
|
-
"priority": "P1",
|
|
435
|
-
"dependencies": [{ "kind": "handoff", "ref": "HNDOFF-abc123", "expected": "ack" }],
|
|
436
|
-
"resource_requirements": ["agent-state/handoff-registry.json"],
|
|
437
|
-
"run_after": "2026-05-08T18:00:00Z"
|
|
438
|
-
}
|
|
439
|
-
```
|
|
440
|
-
|
|
441
|
-
### Files & Structural Editing
|
|
442
|
-
|
|
443
|
-
| Tool | Purpose |
|
|
444
|
-
|---|---|
|
|
445
|
-
| `read_workspace_file` | Read any file in the workspace |
|
|
446
|
-
| `write_workspace_file` | Write or overwrite a file (evidence-tracked) |
|
|
447
|
-
| `list_workspace` | Directory listing with optional glob filter |
|
|
448
|
-
| `safe_edit_file` | Edit a file with collision-safe write semantics |
|
|
449
|
-
| `diff_files` | Produce a unified diff between two workspace paths |
|
|
450
|
-
| `read_file_lines` | Read a line range from a file |
|
|
451
|
-
| `outline_file` | Extract structural outline (symbols, headings) from a file |
|
|
452
|
-
| `astgrep_query` | Run an ast-grep query pattern against the workspace index |
|
|
453
|
-
| `astgrep_locate` | Locate a specific symbol or construct with ast-grep |
|
|
454
|
-
| `compile_structural_edit` | Compile an ast-grep rewrite to a patch |
|
|
455
|
-
| `preview_structural_edit` | Preview a structural edit without applying |
|
|
456
|
-
| `astgrep_rewrite` | Apply an ast-grep rewrite rule across matched files |
|
|
457
|
-
| `apply_patch` | Apply a unified diff patch to the workspace |
|
|
458
|
-
|
|
459
|
-
### Change Intelligence & Drift
|
|
460
|
-
|
|
461
|
-
| Tool | Purpose |
|
|
462
|
-
|---|---|
|
|
463
|
-
| `snapshot_state` | Take a semantic snapshot of the current workspace state |
|
|
464
|
-
| `semantic_diff` | Diff two semantic snapshots |
|
|
465
|
-
| `drift_report` | Produce a drift report between baseline and current state |
|
|
466
|
-
| `list_snapshots` | List available workspace snapshots |
|
|
467
|
-
| `rewrite_targets` | Identify files that are candidates for rewrite based on drift |
|
|
468
|
-
|
|
469
|
-
### Discovery & Indexing
|
|
470
|
-
|
|
471
|
-
| Tool | Purpose |
|
|
472
|
-
|---|---|
|
|
473
|
-
| `refresh_astgrep_index` | Rebuild the ast-grep structural index |
|
|
474
|
-
| `scan_workspace_delta` | Scan for file changes since the last index pass |
|
|
475
|
-
| `web_research_packet` | Package a web research context for agent consumption |
|
|
476
|
-
| `mcp_ingestion_probe` | Probe an MCP server and ingest its tool/resource surface |
|
|
477
|
-
| `codemunch_snapshot` | Take a full codemunch snapshot of the workspace |
|
|
478
|
-
| `codemunch_index` | Index a codemunch snapshot for search |
|
|
479
|
-
|
|
480
|
-
### Git
|
|
481
|
-
|
|
482
|
-
| Tool | Purpose |
|
|
483
|
-
|---|---|
|
|
484
|
-
| `git_status` | Read working-tree status |
|
|
485
|
-
| `git_commit` | Stage and commit changes with a message |
|
|
486
|
-
| `git_diff` | Diff staged, unstaged, or between refs |
|
|
487
|
-
| `git_log` | Read recent commit history |
|
|
488
|
-
|
|
489
|
-
### Memory & Continuity
|
|
490
|
-
|
|
491
|
-
| Tool | Purpose |
|
|
492
|
-
|---|---|
|
|
493
|
-
| `context_snapshot` | Capture a structured context snapshot for the current session |
|
|
494
|
-
| `build_continuity_packet` | Build a continuity packet for cross-session handoff |
|
|
495
|
-
| `recall_context` | Recall a previous context snapshot by ID or recency |
|
|
496
|
-
|
|
497
|
-
Example — before switching models mid-task:
|
|
498
|
-
|
|
499
|
-
```bash
|
|
500
|
-
build_continuity_packet {
|
|
501
|
-
"session_summary": "Implemented auth module, blocked on integration test setup",
|
|
502
|
-
"next_step": "Write integration tests for /api/auth endpoints"
|
|
503
|
-
}
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
### Lifecycle & Status Events
|
|
507
|
-
|
|
508
|
-
| Tool | Purpose |
|
|
509
|
-
|---|---|
|
|
510
|
-
| `emit_status_event` | Append a typed lifecycle event to `STATUS_EVENTS.ndjson` |
|
|
511
|
-
| `get_framework_status` | Read aggregate status across all modules |
|
|
512
|
-
| `refresh_kanban` | Rebuild the kanban board from current state |
|
|
513
|
-
|
|
514
|
-
Example:
|
|
515
|
-
|
|
516
|
-
```bash
|
|
517
|
-
emit_status_event {
|
|
518
|
-
"source_module": "capability-ops",
|
|
519
|
-
"event_type": "TASK_COMPLETE",
|
|
520
|
-
"status": "pass",
|
|
521
|
-
"summary": "Auth integration tests green across all providers"
|
|
522
|
-
}
|
|
222
|
+
ace tui --provider llama.cpp --base-url http://127.0.0.1:8080/v1 --model gemma-3-4b-it --hermes
|
|
523
223
|
```
|
|
524
224
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
| Tool | Purpose |
|
|
528
|
-
|---|---|
|
|
529
|
-
| `get_todo` | Read the current todo surface |
|
|
530
|
-
| `get_todo_state` | Read structured todo state from the store |
|
|
531
|
-
| `update_todo` | Update one or more todo items |
|
|
532
|
-
| `get_run_ledger` | Read the run ledger (history of major tool invocations) |
|
|
533
|
-
|
|
534
|
-
### Vericify (Verification)
|
|
535
|
-
|
|
536
|
-
| Tool | Purpose |
|
|
537
|
-
|---|---|
|
|
538
|
-
| `get_vericify_context` | Get the current verification context packet |
|
|
539
|
-
| `get_vericify_delta` | Get the incremental verification delta |
|
|
540
|
-
| `get_vericify_bridge` | Read the vericify bridge snapshot |
|
|
541
|
-
| `refresh_vericify_bridge` | Refresh the bridge snapshot from test runner output |
|
|
542
|
-
| `validate_vericify_bridge` | Schema-validate the bridge snapshot |
|
|
543
|
-
| `get_vericify_process_posts` | Read the vericify process post log |
|
|
544
|
-
| `append_vericify_process_post` | Append a test result post to the process log |
|
|
545
|
-
| `validate_vericify_process_post_log` | Schema-validate the process post log |
|
|
546
|
-
|
|
547
|
-
### Tracker Integration
|
|
548
|
-
|
|
549
|
-
| Tool | Purpose |
|
|
550
|
-
|---|---|
|
|
551
|
-
| `get_tracker_snapshot` | Read the cached tracker snapshot (GitHub Issues, Linear, etc.) |
|
|
552
|
-
| `validate_tracker_snapshot` | Schema-validate the tracker snapshot |
|
|
553
|
-
| `list_tracker_adapter_kinds` | List available tracker adapters |
|
|
554
|
-
| `get_tracker_adapter_health` | Check health of the active tracker adapter |
|
|
555
|
-
| `list_tracker_items` | List items from the tracker |
|
|
556
|
-
| `create_tracker_comment` | Post a comment to a tracker item |
|
|
557
|
-
| `update_tracker_item_state` | Update the state of a tracker item |
|
|
558
|
-
| `refresh_tracker_snapshot` | Pull fresh data from the tracker into the snapshot |
|
|
559
|
-
|
|
560
|
-
### Skills & Tasks
|
|
561
|
-
|
|
562
|
-
| Tool | Purpose |
|
|
563
|
-
|---|---|
|
|
564
|
-
| `skill_catalog_summary` | List all available skills with brief descriptions |
|
|
565
|
-
| `skill_audit` | Audit skill freshness and coverage |
|
|
566
|
-
| `problem_triage` | Triage a problem description against known skills |
|
|
567
|
-
| `list_skills` | List skills in the store |
|
|
568
|
-
| `get_skill_instructions` | Read full instructions for a named skill |
|
|
569
|
-
| `get_task_pack` | Read a named task pack |
|
|
570
|
-
| `get_lessons` | Read the lessons log |
|
|
571
|
-
| `add_lesson` | Append a lesson to the log |
|
|
572
|
-
|
|
573
|
-
### Workspace Sessions
|
|
574
|
-
|
|
575
|
-
| Tool | Purpose |
|
|
576
|
-
|---|---|
|
|
577
|
-
| `list_workspace_sessions` | List managed workspace sessions |
|
|
578
|
-
| `create_workspace_session` | Create a new managed workspace session |
|
|
579
|
-
| `remove_workspace_session` | Remove a workspace session |
|
|
580
|
-
| `validate_managed_workspace_path` | Validate a workspace path against the session registry |
|
|
581
|
-
|
|
582
|
-
### Unattended Sessions
|
|
225
|
+
Hermes launch configuration can be supplied with `--hermes-root`, `--hermes-python`, and `--hermes-uv-project`, or with the matching environment variables `ACE_HERMES_ROOT`, `HERMES_PYTHON`, and `ACE_HERMES_UV_PROJECT`.
|
|
583
226
|
|
|
584
|
-
|
|
585
|
-
|---|---|
|
|
586
|
-
| `list_unattended_sessions` | List registered unattended agent sessions |
|
|
587
|
-
| `get_unattended_session` | Read details of a specific unattended session |
|
|
588
|
-
| `start_unattended_session` | Launch an unattended agent session |
|
|
589
|
-
| `stop_unattended_session` | Stop a running unattended session |
|
|
590
|
-
| `wait_for_unattended_session` | Block until a session reaches a terminal state |
|
|
591
|
-
| `validate_unattended_session_registry` | Schema-validate the session registry |
|
|
592
|
-
|
|
593
|
-
### Framework & Config
|
|
594
|
-
|
|
595
|
-
| Tool | Purpose |
|
|
596
|
-
|---|---|
|
|
597
|
-
| `get_mcp_config` | Read the baked MCP config for a named client |
|
|
598
|
-
| `run_tests` | Run the ACE test suite |
|
|
599
|
-
| `get_cli_split` | Read the CLI split configuration |
|
|
227
|
+
Tool evidence, not model prose, authorizes completion: a `completed` claim from a mutation-intent run is demoted to `blocked` unless the declared artifacts and evidence actually exist. For the bridge architecture, frame protocol, doctor checks, and evidence model, see the [Hermes reference](docs/hermes.md).
|
|
600
228
|
|
|
601
229
|
## Compatible Surfaces
|
|
602
230
|
|
|
@@ -612,110 +240,22 @@ emit_status_event {
|
|
|
612
240
|
+-------------------+------------------------------------------------------------------+
|
|
613
241
|
```
|
|
614
242
|
|
|
615
|
-
##
|
|
616
|
-
|
|
617
|
-
```text
|
|
618
|
-
+-----------------------------------------------+---------------------------------------------------+
|
|
619
|
-
| Command | Purpose |
|
|
620
|
-
+-----------------------------------------------+---------------------------------------------------+
|
|
621
|
-
| `ace mcp` / `ace serve` | Start MCP server over stdio |
|
|
622
|
-
| `ace mcp-shadow --tools <csv>` | Start filtered shadow MCP server (Hermes use) |
|
|
623
|
-
| `ace tui [options]` | Open the terminal operator surface |
|
|
624
|
-
| `ace init [options]` | Seed the ACE store and optional host stubs |
|
|
625
|
-
| `ace connect [provider] [options]` | Register a live local runtime or hosted provider |
|
|
626
|
-
| `ace turnkey [options]` | Project store-backed host surface stubs |
|
|
627
|
-
| `ace doctor [options]` | Validate ACE runtime + Hermes readiness |
|
|
628
|
-
| `ace cache [options]` | Cache ACE artifacts into ace-state.ace |
|
|
629
|
-
| `ace mcp-config [--client <name>|--all]` | Print baked client snippets for optional install |
|
|
630
|
-
| `ace preconfig` | Write .mcp-config/ bundle for all clients |
|
|
631
|
-
| `ace paths` | Show resolved package and workspace paths |
|
|
632
|
-
| `ace help` | Show help |
|
|
633
|
-
+-----------------------------------------------+---------------------------------------------------+
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
### CLI examples
|
|
637
|
-
|
|
638
|
-
```bash
|
|
639
|
-
# Bootstrap a workspace with a hosted provider
|
|
640
|
-
ace init --project "My App" --llm claude --client-config-bundle
|
|
641
|
-
|
|
642
|
-
# Bootstrap with local Ollama model and write VS Code MCP config
|
|
643
|
-
ace init --project "My App" --llm ollama --model llama3.1:8b \
|
|
644
|
-
--base-url http://localhost:11434 --mcp-config
|
|
645
|
-
|
|
646
|
-
# Connect to a running llama.cpp server from a Hugging Face model
|
|
647
|
-
ace connect llama-server --hf bartowski/gemma-3-4b-it-GGUF \
|
|
648
|
-
--base-url http://localhost:8080
|
|
649
|
-
|
|
650
|
-
# Run doctor checks with auto-scan of common local endpoints
|
|
651
|
-
ace doctor --scan
|
|
652
|
-
|
|
653
|
-
# Run doctor checks for a specific provider + model
|
|
654
|
-
ace doctor --llm ollama --model llama3.1:8b --base-url http://localhost:11434
|
|
655
|
-
|
|
656
|
-
# Run optional Hermes checks with user-supplied Hermes/Python
|
|
657
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent HERMES_PYTHON=/path/to/python \
|
|
658
|
-
ace doctor --llm llama.cpp --model gemma-4 --base-url http://localhost:8080 --hermes
|
|
659
|
-
|
|
660
|
-
# Repair a missing Ollama model found during doctor
|
|
661
|
-
ace doctor --llm ollama --model llama3.1:8b --repair-ollama
|
|
662
|
-
|
|
663
|
-
# Print VS Code MCP config snippet to stdout
|
|
664
|
-
ace mcp-config --client vscode
|
|
665
|
-
|
|
666
|
-
# Write config bundles for every supported client at workspace root
|
|
667
|
-
ace preconfig
|
|
668
|
-
|
|
669
|
-
# Launch TUI with optional Hermes engine against a local llama.cpp server
|
|
670
|
-
ACE_HERMES_ROOT=/path/to/hermes-agent HERMES_PYTHON=/path/to/python \
|
|
671
|
-
ace tui --provider llama.cpp --base-url http://localhost:8080 --model gemma-4 --hermes
|
|
672
|
-
|
|
673
|
-
# Cache all ACE artifacts into ace-state.ace (dry run first)
|
|
674
|
-
ace cache --dry-run
|
|
675
|
-
ace cache
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
## Development
|
|
679
|
-
|
|
680
|
-
```bash
|
|
681
|
-
cd ace-mcp-server
|
|
682
|
-
npm install
|
|
683
|
-
npm run build
|
|
684
|
-
npm test
|
|
685
|
-
npm run start
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
Run the Hermes live driver against your workspace:
|
|
689
|
-
|
|
690
|
-
```bash
|
|
691
|
-
npm run build
|
|
692
|
-
# with a local llama.cpp or Ollama runtime running:
|
|
693
|
-
ACE_WORKSPACE_ROOT=$PWD \
|
|
694
|
-
ACE_LIVE_PROVIDERS=llama.cpp \
|
|
695
|
-
ACE_LIVE_LLAMA_CPP_BASE_URL=http://127.0.0.1:8080/v1 \
|
|
696
|
-
ACE_LIVE_LLAMA_CPP_MODEL=gemma-4-it \
|
|
697
|
-
ACE_LIVE_HERMES_MAX_TURNS=3 \
|
|
698
|
-
ACE_LIVE_OUTPUT_ONLY=1 \
|
|
699
|
-
node scripts/dev/run_hermes_crispr_live.mjs
|
|
700
|
-
```
|
|
701
|
-
|
|
702
|
-
Key source files:
|
|
243
|
+
## Documentation
|
|
703
244
|
|
|
704
|
-
|
|
|
245
|
+
| Reference | Contents |
|
|
705
246
|
|---|---|
|
|
706
|
-
|
|
|
707
|
-
|
|
|
708
|
-
|
|
|
709
|
-
|
|
|
710
|
-
|
|
|
711
|
-
|
|
|
712
|
-
|
|
|
713
|
-
|
|
|
714
|
-
|
|
|
715
|
-
|
|
|
716
|
-
|
|
|
717
|
-
|
|
718
|
-
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
247
|
+
| [CLI Reference](docs/cli-reference.md) | Every `ace` command and worked examples |
|
|
248
|
+
| [MCP Tool Reference](docs/mcp-tool-reference.md) | The full 119-tool surface across 13 domain modules |
|
|
249
|
+
| [ACEPACK State Model](docs/state-model.md) | On-disk binary format, KV region, columnar event log |
|
|
250
|
+
| [Hermes Companion Engine](docs/hermes.md) | Bridge architecture, frame protocol, doctor checks, evidence model |
|
|
251
|
+
| [TUI Operator Guide](docs/tui-operator-guide.md) | Provider setup, navigation, interrupt behavior, and recovery |
|
|
252
|
+
| [Provider Security](docs/provider-security.md) | Hosted/local credentials, endpoint setup, and trust boundaries |
|
|
253
|
+
| [Evaluation Safety](docs/evaluation-safety.md) | Disposable eval roots, fixtures, provenance, and reproducibility |
|
|
254
|
+
| [Troubleshooting](docs/troubleshooting.md) | Symptom-driven diagnostics and recovery commands |
|
|
255
|
+
| [Library API](docs/library-api.md) | Supported programmatic entry points and stability boundaries |
|
|
256
|
+
| [Experience Playbook](docs/experience-playbook.md) | Experimental evidence-gated lessons store |
|
|
257
|
+
| [Development](docs/development.md) | Build, test, live driver, and key source files |
|
|
258
|
+
| [CHANGELOG](./CHANGELOG.md) | Release history |
|
|
719
259
|
|
|
720
260
|
## References
|
|
721
261
|
|