@@ -6,13 +6,17 @@ The agent owns planning, scope decisions, module selection, and reporting
66judgment. OpenGhost owns the sandboxed execution layer, deterministic helpers,
77engagement state, and evidence/report files.
88
9+ OpenGhost has no hosted control plane or managed service dependency. Runtime,
10+ state, caches, and credentials for authorized target applications stay local.
11+
912## Design Goals
1013
1114- Keep offensive tooling out of the host environment.
1215- Make authorization, scope, and evidence explicit.
1316- Give agents a short skill entrypoint with deeper references loaded only when
1417 relevant.
1518- Keep engagement output separate from source code.
19+ - Reduce repeated agent context and deterministic work with local, invalidated caches.
1620- Preserve one canonical launcher implementation.
1721
1822## System Overview
@@ -91,16 +95,19 @@ Maintainers build the sandbox image from:
9195docker/Dockerfile
9296```
9397
94- The sandbox mounts the current workspace at ` /workspace ` , starts from
95- ` WORKDIR /workspace ` , and exposes tools only through the launcher allowlist.
98+ The sandbox mounts the current workspace read-only at ` /workspace ` , overlays
99+ ` .openghost/ ` read-write for generated state, starts from ` WORKDIR /workspace ` ,
100+ and exposes tools only through the launcher allowlist. Full workspace writes
101+ and the host gateway are explicit opt-ins. Memory, CPU, and process limits are
102+ set by the launcher.
96103The launcher also contains a bash blocklist for obvious destructive host or
97104system-damage patterns.
98105
99106### State Helper
100107
101108` skills/openghost-skill/scripts/openghost-state.py ` owns structured engagement
102- state. The shell launcher delegates evidence, artifact, finding, todo, and
103- report operations to this helper.
109+ state. The shell launcher delegates evidence, artifact, finding, todo,
110+ coverage, compact context, cache status, and report operations to this helper.
104111
105112Generated state normally lives under:
106113
@@ -118,6 +125,7 @@ Generated state normally lives under:
118125 |-- scripts/
119126 |-- notes/
120127 |-- reports/
128+ |-- cache/
121129 `-- runs/
122130```
123131
@@ -156,6 +164,7 @@ assessment automation and parsing, not for bypassing scope or safety controls.
156164openghost script run api-inventory -- --target-url https://target.example
157165 -> read manifest
158166 -> locate bundled script
167+ -> reuse a content-addressed script/helper bundle
159168 -> execute inside Docker
160169```
161170
@@ -167,12 +176,30 @@ directory.
167176
168177``` text
169178openghost evidence add ...
179+ openghost evidence verify
170180openghost finding add ...
181+ openghost coverage set ...
182+ openghost report validate
171183openghost report generate
172184```
173185
174186Findings should reference evidence IDs and distinguish confirmed behavior from
175- likely or possible signals.
187+ likely or possible signals. Evidence records include SHA-256 integrity metadata.
188+ Final report generation requires reviewed scope, closed coverage, valid evidence,
189+ complete confirmed findings, and no unresolved high-priority test work.
190+
191+ ### Local Cache Layers
192+
193+ ``` text
194+ .openghost/cache/scripts/ content-addressed script bundles
195+ .openghost/engagements/<name>/cache/assessment/ deterministic bounded outputs
196+ .openghost/engagements/<name>/cache/context/ compact agent resume snapshots
197+ ```
198+
199+ Cache keys include relevant source and state hashes. Target-authenticated
200+ assessment reuse is disabled by default. ` openghost context show ` is the
201+ preferred agent resume point so raw state and evidence are loaded only when
202+ needed for the active hypothesis.
176203
177204## Trust Boundaries
178205
0 commit comments