You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(`strict`, `balanced`, `connected`) for portable secure launch defaults.
62
+
-**Launch-time enforcement**: Policy is resolved before the agent process starts, so the sandbox is not a prompt-level suggestion that the agent can rewrite from inside the session.
63
+
-**Operational hardening**: macOS launcher support now resolves relative paths before emitting Seatbelt rules and accounts for required local IPC paths such as 1Password and SLIM runtime state.
62
64
63
65
#### Key modules
64
66
-`crates/shadi_sandbox/src/policy.rs`: policy model and helpers.
@@ -68,14 +70,14 @@ actions and prevent unauthorized data access or exfiltration.
68
70
### 3) Memory layer
69
71
-**Local encrypted store**: SQLCipher-backed SQLite for portable, on-device memory.
70
72
-**Key management**: Encryption keys live in SHADI secrets (keychain backed).
71
-
-**Agent usage**: SecOps writes summaries to the encrypted store; ADK memory remains in-process unless configured for persistent backends.
73
+
-**Agent usage**: workloads running on SHADI can persist local state in the encrypted store; the SecOps demo writes summaries there, while ADK memory remains in-process unless configured for persistent backends.
72
74
73
75
#### Key modules
74
76
-`crates/shadi_memory/src/lib.rs`: SQLCipher store and query helpers.
-`agents/secops/skills.py`: example summary persistence used by the SecOps demo.
79
81
80
82
### 4) Transport layer
81
83
-**SLIM/A2A**: MLS provides confidentiality and integrity between agents.
@@ -87,6 +89,9 @@ actions and prevent unauthorized data access or exfiltration.
87
89
### 5) Brokered secret injection (optional)
88
90
- If sandbox rules prevent keystore access, secrets can be brokered outside the
89
91
sandbox and injected as environment variables into the agent process.
92
+
- This is also the fallback path used by the demo launchers when the optional
93
+
1Password backend is enabled: required items are read in the foreground and
94
+
exported into the sandboxed process environment.
90
95
91
96
#### Key modules
92
97
-`crates/shadictl/src/main.rs`: `--inject-keychain` and policy enforcement.
@@ -114,9 +119,10 @@ The CLI combines profile defaults, policy file settings, and explicit flags:
114
119
- CLI flags override or extend resulting policy.
115
120
- The effective policy can be printed with `--print-policy`.
116
121
117
-
## SecOps agent architecture
118
-
The SecOps agent runs locally under SHADI and uses the Python bindings for secrets
119
-
plus GitHub APIs for security signals.
122
+
## Demo workload: SecOps agent
123
+
The SecOps agent is an example workload that runs on top of SHADI. It uses the
124
+
Python bindings for secrets plus GitHub APIs for security signals, but it is
125
+
not part of the core runtime itself.
120
126
121
127
#### Key modules
122
128
-`agents/secops/skills.py`: skills to collect alerts and issues.
@@ -128,7 +134,71 @@ plus GitHub APIs for security signals.
128
134
1. Read config from secops.toml.
129
135
2. Fetch GitHub token and workspace path from SHADI.
130
136
3. Collect Dependabot alerts and security-labeled issues.
131
-
4. Write `secops_security_report.json` to the workspace.
137
+
4. Collect code-scanning alerts for container findings via GitHub code scanning.
138
+
5. For dependency alerts, patch supported manifests and stage repo-relative changes.
139
+
6. For container CVEs, locate the authoritative Dockerfile from GitHub workflow metadata when possible and recommend image rebuilds or base-image refreshes instead of ad-hoc package-install edits.
140
+
7. Create remediation issues and optional PRs, then write `secops_security_report.json` to the workspace.
141
+
142
+
## Updated system view
143
+
144
+
```mermaid
145
+
flowchart TB
146
+
subgraph Operator[Operator and Control Plane]
147
+
Human[Human operator]
148
+
Config[secops.toml and policy JSON]
149
+
Launchers[Launch scripts and shadictl]
150
+
end
151
+
152
+
subgraph Trust[Identity and Secret Plane]
153
+
Verify[PySessionContext and verifier]
154
+
Secrets[ShadiStore]
155
+
Keychain[OS keychain or 1Password backend]
156
+
MemoryKey[SQLCipher memory key]
157
+
end
158
+
159
+
subgraph Runtime[Sandboxed Runtime Plane]
160
+
Sandbox[shadi_sandbox policy enforcement]
161
+
Avatar[Avatar ADK agent]
162
+
SecOps[SecOps agent or A2A server]
163
+
Memory[SqlCipherMemoryStore]
164
+
end
165
+
166
+
subgraph External[External Services]
167
+
GitHub[GitHub APIs and gh CLI]
168
+
Models[LLM provider endpoints]
169
+
SLIM[SLIM or A2A transport]
170
+
end
171
+
172
+
Human --> Launchers
173
+
Config --> Launchers
174
+
Launchers --> Sandbox
175
+
Human --> Verify
176
+
Verify --> Secrets
177
+
Secrets --> Keychain
178
+
Secrets --> MemoryKey
179
+
Sandbox --> Avatar
180
+
Sandbox --> SecOps
181
+
Avatar --> SLIM
182
+
SecOps --> SLIM
183
+
SecOps --> GitHub
184
+
SecOps --> Models
185
+
SecOps --> Memory
186
+
MemoryKey --> Memory
187
+
Avatar -. verified secret reads .-> Secrets
188
+
SecOps -. verified secret reads .-> Secrets
189
+
```
190
+
191
+
The main architecture update is that SHADI now has a clearer split between:
192
+
- control-plane launch logic that resolves policy and optional secret brokerage before process start,
193
+
- runtime enforcement that the agent cannot weaken by rewriting a local denylist path string,
194
+
- and application-layer behavior implemented by example workloads such as SecOps remediation planning and Avatar-to-SecOps orchestration.
195
+
196
+
## Demo workload behavior: SecOps remediation model
197
+
198
+
- Dependency remediation still edits supported manifests directly and can open PRs.
199
+
- Container CVEs are handled as rebuild guidance, not by mutating Dockerfiles with ad-hoc OS package commands.
200
+
- Dockerfile discovery prefers `.github/workflows/*` as the authoritative source of build definitions, then falls back to portable filesystem scanning.
201
+
- If only guidance is needed, SecOps opens a remediation issue so the repo owner can refresh the base image or rebuild the container in the right place.
132
202
133
203
## Data flow (high level)
134
204
1. Human identity material is ingested (OpenPGP or seed bytes).
0 commit comments