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
baudbot-safe-bash shell command deny list (installed to /usr/local/bin)
@@ -60,17 +62,27 @@ See [CONFIGURATION.md](CONFIGURATION.md) for all env vars and how to obtain them
60
62
61
63
## Architecture: Source / Runtime Separation
62
64
63
-
The admin owns the source (`~/baudbot/`). The agent (`baudbot_agent` user) owns the runtime. The agent **cannot read the source repo** — admin home is `700`.
65
+
The admin owns source checkouts (for example `~/baudbot/`). The agent (`baudbot_agent` user) owns runtime state. The agent **cannot read the source repo** — admin home is `700`.
66
+
67
+
Live operations are now release-based under `/opt/baudbot` (git-free):
64
68
65
-
Deploy is a one-way push:
66
69
```
67
-
admin: ~/baudbot/bin/deploy.sh
68
-
→ stages to /tmp/baudbot-deploy.XXXXXX (world-readable)
The bridge and all sub-agents load `~/.config/.env` on startup. If varlock is installed, variables are validated against `.env.schema` before injection.
Deploy is a one-way push: `~/baudbot/bin/deploy.sh` stages source to `/tmp`, copies as `baudbot_agent` via `sudo -u`, stamps an integrity manifest, and cleans up.
155
+
`baudbot update` creates a temp checkout (`/tmp/baudbot-update.*`), runs preflight checks, publishes a git-free snapshot to `/opt/baudbot/releases/<sha>`, deploys runtime files, then atomically switches `/opt/baudbot/current` on success.
@@ -221,15 +231,15 @@ An agent role is a skill file. Baudbot ships three but you can add more.
221
231
222
232
1. Create `pi/skills/my-agent/SKILL.md` with role instructions.
223
233
2. Add a tmux session spawn for the new agent in `pi/skills/control-agent/SKILL.md` (the control agent manages sub-agent lifecycle).
224
-
3. Deploy: `~/baudbot/bin/deploy.sh`
234
+
3. Deploy: `sudo baudbotdeploy`
225
235
226
236
See `pi/skills/dev-agent/SKILL.md` for the pattern.
227
237
228
238
## Security stack
229
239
230
240
| Layer | What | Survives prompt injection? |
231
241
|-------|------|---------------------------|
232
-
|**Source isolation**| Source repo is admin-owned. Agent has zero read access. Deploy is one-way. | ✅ Filesystem |
242
+
|**Source isolation**| Source repo is admin-owned. Agent has zero read access. Live `/opt/baudbot/releases/*` snapshots are git-free immutable artifacts. | ✅ Filesystem |
233
243
|**iptables egress**| Per-UID port allowlist (80/443/22/53 + DB ports). Blocks non-standard ports, listeners, raw sockets. | ✅ Kernel |
234
244
|**Process isolation**|`/proc` mounted `hidepid=2`. Agent can't see other PIDs. | ✅ Kernel |
235
245
|**File permissions**| Security-critical files deployed `chmod a-w`. Agent can't modify `tool-guard.ts`, `security.mjs`, etc. even via `sed` or `python`. | ✅ Filesystem |
0 commit comments