Skip to content

Commit 1c84c75

Browse files
committed
docs: restructure README, add agents/integrations sections
- Reorder: pitch β†’ install β†’ config β†’ agents β†’ integrations β†’ details - Add Agents section (control/dev/sentry roles table) - Add Integrations section (Slack, GitHub, Email, Sentry, Docker, Browser) - Add 'Adding agents' section (3-step guide) - Cut emdashes, filler words, marketing voice - Lowercase section headers (match OpenClaw style)
1 parent 2224280 commit 1c84c75

6 files changed

Lines changed: 203 additions & 59 deletions

File tree

β€Ž.pi/todos/033443c7.mdβ€Ž

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"id": "033443c7",
3+
"title": "README: Add \"Capabilities\" section (agent roles + what they do)",
4+
"tags": [
5+
"readme"
6+
],
7+
"status": "done",
8+
"created_at": "2026-02-17T05:03:15.844Z"
9+
}
10+
11+
OpenClaw has "Everything we built so far" β€” we need a capabilities section that explains what Baudbot agents can actually do.
12+
13+
Sections to add, after "Why" and before "Requirements":
14+
15+
### Agent Roles
16+
- **Control agent** β€” orchestrates, triages incoming requests, delegates to workers, monitors email
17+
- **Dev agent** β€” full coding loop: branch β†’ code β†’ test β†’ PR β†’ fix CI β†’ repeat
18+
- **Sentry agent** β€” monitors Sentry alerts, investigates via API, triages and reports
19+
20+
### What Agents Can Do
21+
- Read/write files, run shell commands (via tool-guard + safe-bash)
22+
- Git operations: clone, branch, commit, push, create PRs via `gh`
23+
- Docker builds (via security wrapper that blocks privilege escalation)
24+
- Inter-session communication (agents can message each other)
25+
- Monitor email inboxes (AgentMail integration)
26+
- Cloud browser automation (Kernel browser)
27+
- Cron-like loops with breakout conditions
28+
- Todo management (file-based, claimable across sessions)
29+
- Sentry issue investigation via API
30+
31+
Keep it concise β€” more like a feature list, not a wall of prose like OpenClaw's "Everything we built so far".

β€Ž.pi/todos/3a60235c.mdβ€Ž

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
"tags": [
55
"rename"
66
],
7-
"status": "open",
8-
"created_at": "2026-02-17T04:32:33.441Z",
9-
"assigned_to_session": "381813d9-c69a-4472-9a00-e232ffb746d1"
7+
"status": "done",
8+
"created_at": "2026-02-17T04:32:33.441Z"
109
}
1110

1211
After all renames:

β€Ž.pi/todos/ba2b0dc6.mdβ€Ž

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"id": "ba2b0dc6",
3+
"title": "README: Restructure to match OpenClaw flow β€” pitch β†’ install β†’ details",
4+
"tags": [
5+
"readme"
6+
],
7+
"status": "done",
8+
"created_at": "2026-02-17T05:04:46.492Z"
9+
}
10+
11+
OpenClaw flow: tagline β†’ one-paragraph pitch β†’ install β†’ quick start β†’ channels/config β†’ deeper docs.
12+
13+
Proposed new order:
14+
1. Title + badges + tagline
15+
2. Why (keep short)
16+
3. Requirements (table, already concise)
17+
4. Quick Start (install.sh β€” already 2 lines)
18+
5. Configuration
19+
6. **Capabilities** (NEW β€” agent roles + what they do)
20+
7. **Integrations** (NEW β€” table)
21+
8. How It Works (message flow diagram)
22+
9. Architecture (detailed tree)
23+
10. Operations
24+
11. Tests
25+
12. **Adding Agents** (NEW)
26+
13. Security Stack
27+
14. Security Details
28+
15. License
29+
30+
This front-loads the "try it now" path (Why β†’ Requirements β†’ Install β†’ Config), then explains what you get (Capabilities, Integrations, How It Works) for people who want to dig deeper.

β€Ž.pi/todos/ef3255f2.mdβ€Ž

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"id": "ef3255f2",
3+
"title": "README: Add \"Adding Agents\" section β€” how to create new agent roles",
4+
"tags": [
5+
"readme"
6+
],
7+
"status": "done",
8+
"created_at": "2026-02-17T05:03:49.567Z"
9+
}
10+
11+
OpenClaw has skills registry / workspace docs. We should briefly explain how to add custom agent roles β€” it's one of our strengths.
12+
13+
Short section near the end (after Tests, before Security):
14+
15+
### Adding Agents
16+
17+
Baudbot ships with three agent roles but you can add more. An agent role is just a skill file:
18+
19+
1. Create `pi/skills/my-agent/SKILL.md` with role instructions
20+
2. Add a startup block to the control agent's `startup-cleanup.sh`
21+
3. Deploy: `~/baudbot/bin/deploy.sh`
22+
23+
Skills are markdown files with frontmatter. The agent loads them at session start and follows the instructions. See `pi/skills/dev-agent/SKILL.md` for the pattern.
24+
25+
Keep this very short β€” point to the existing skill files as examples.

β€Ž.pi/todos/fbae7d77.mdβ€Ž

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"id": "fbae7d77",
3+
"title": "README: Add \"Integrations\" section (Slack, GitHub, email, Sentry, etc.)",
4+
"tags": [
5+
"readme"
6+
],
7+
"status": "done",
8+
"created_at": "2026-02-17T05:03:25.858Z"
9+
}
10+
11+
OpenClaw prominently lists its channels (WhatsApp, Telegram, Slack, etc.). We should do the same for our integrations, but honestly β€” we have fewer, so keep it tight.
12+
13+
Add an "Integrations" section (after Capabilities, before Requirements):
14+
15+
| Integration | How | Status |
16+
|---|---|---|
17+
| **Slack** | Socket Mode bridge, @mentions + channel monitoring, rate-limited | βœ… Built-in |
18+
| **GitHub** | SSH + PAT, PRs via `gh`, branch/commit/push | βœ… Built-in |
19+
| **Email** | AgentMail inboxes, send/receive/monitor | βœ… Built-in |
20+
| **Sentry** | API integration, alert triage from Slack channel | βœ… Built-in |
21+
| **Docker** | Security wrapper blocks privilege escalation | βœ… Built-in |
22+
| **Cloud Browser** | Kernel browser, Playwright automation | βœ… Extension |
23+
24+
Note: Unlike OpenClaw which supports 15+ messaging platforms, Baudbot focuses on Slack as the primary human interface. Email (AgentMail) is for agent-to-agent and automated workflows. Adding more channels (Discord, Teams) is straightforward β€” the bridge pattern is extensible.

β€ŽREADME.mdβ€Ž

Lines changed: 91 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@
33
[![CI](https://github.com/modem-dev/baudbot/actions/workflows/ci.yml/badge.svg)](https://github.com/modem-dev/baudbot/actions/workflows/ci.yml)
44
[![Integration](https://github.com/modem-dev/baudbot/actions/workflows/integration.yml/badge.svg)](https://github.com/modem-dev/baudbot/actions/workflows/integration.yml)
55

6-
**Hardened autonomous agent infrastructure.**
6+
**Hardened infrastructure for always-on AI agents.**
77

8-
Baudbot is an open framework for running always-on AI agents that support software teams β€” coding agents, automated SREs, QA bots, monitoring, triage, and more. Agents run as isolated Linux processes with defense-in-depth security. Baudbot assumes the worst: that an agent *will* be prompt-injected, and builds kernel-level walls that hold even when the LLM is fully compromised.
8+
Baudbot runs AI agents as isolated Linux processes with defense-in-depth security. Agents code, test, deploy, monitor, and triage. They work on real repos with real tools. The infrastructure assumes agents *will* be prompt-injected and builds kernel-level walls that hold when the LLM is compromised.
99

10-
**Built for Linux.** Baudbot uses kernel-level features (iptables, `/proc` hidepid, Unix users) that don't exist on macOS or Windows. Every PR is integration-tested on fresh **Ubuntu 24.04** and **Arch Linux** droplets.
10+
Built for Linux. Uses iptables, `/proc` hidepid, and Unix user isolation. Every PR is integration-tested on fresh Ubuntu 24.04 and Arch Linux droplets.
1111

1212
## Why
1313

14-
Every AI agent framework gives the model shell access and hopes for the best. Baudbot doesn't hope β€” it enforces:
14+
Every agent framework gives the model shell access and hopes for the best. Baudbot enforces:
1515

16-
- **OS-level isolation** β€” dedicated Unix user, no sudo, can't see other processes
17-
- **Kernel-enforced network control** β€” iptables per-UID egress allowlist
18-
- **Source/runtime separation** β€” agent can't read or modify its own infrastructure code
19-
- **Dual-layer command blocking** β€” dangerous shell patterns caught before execution at two independent layers
20-
- **Self-healing** β€” permissions hardened on every boot, secrets redacted from logs automatically
16+
- **OS-level isolation.** Dedicated Unix user, no sudo, can't see other processes.
17+
- **Network control.** iptables per-UID egress allowlist. No listeners, no reverse shells.
18+
- **Source/runtime separation.** Agent can't read or modify its own infrastructure.
19+
- **Dual-layer command blocking.** Dangerous patterns caught at two independent layers.
20+
- **Self-healing.** Permissions hardened on every boot, secrets redacted from logs.
2121

22-
Agents work on real files in real repos β€” no sandbox friction. They make real git branches, run real tests, and push real PRs. But they can't exfiltrate data, escalate privileges, or phone home.
22+
No sandbox friction. Agents make real branches, run real tests, push real PRs. But they can't exfiltrate data, escalate privileges, or phone home.
2323

2424
## Requirements
2525

@@ -37,19 +37,19 @@ git clone https://github.com/modem-dev/baudbot.git ~/baudbot
3737
sudo ~/baudbot/install.sh
3838
```
3939

40-
The installer detects your distro, installs dependencies, creates the agent user, sets up the firewall, and walks you through API keys interactively. Takes ~2 minutes.
40+
The installer detects your distro, installs dependencies, creates the agent user, sets up the firewall, and walks you through API keys. Takes ~2 minutes.
4141

4242
<details>
4343
<summary>Manual setup (without installer)</summary>
4444

4545
```bash
46-
# Setup (creates user, firewall, permissions β€” run as root)
46+
# Creates user, firewall, permissions (run as root)
4747
sudo bash ~/baudbot/setup.sh <admin_username>
4848

4949
# Add secrets
5050
sudo -u baudbot_agent vim ~/.config/.env
5151

52-
# Deploy source β†’ agent runtime
52+
# Deploy source to agent runtime
5353
~/baudbot/bin/deploy.sh
5454

5555
# Launch
@@ -61,19 +61,77 @@ See [CONFIGURATION.md](CONFIGURATION.md) for the full list of secrets and how to
6161

6262
## Configuration
6363

64-
Secrets and configuration live in `~baudbot_agent/.config/.env` (not in repo, 600 perms).
65-
See [CONFIGURATION.md](CONFIGURATION.md) for the full list and how to obtain each value.
64+
Secrets live in `~baudbot_agent/.config/.env` (not in repo, 600 perms).
65+
See [CONFIGURATION.md](CONFIGURATION.md) for all keys and how to obtain each value.
66+
67+
## Agents
68+
69+
Baudbot ships three agent roles. The control agent starts automatically and spawns the others in tmux sessions.
70+
71+
| Role | What it does |
72+
|------|-------------|
73+
| **control-agent** | Monitors email inbox, triages requests, delegates to workers, runs Slack bridge |
74+
| **dev-agent** | Full coding loop: branch, code, test, PR, fix CI, repeat |
75+
| **sentry-agent** | Watches Sentry alerts, investigates via API, reports triage to control agent |
76+
77+
Agents can read/write files, run shell commands, create git branches and PRs, build Docker images (via a security wrapper), message each other across sessions, monitor email inboxes, automate cloud browsers, and manage shared todos.
78+
79+
## Integrations
80+
81+
| Integration | How |
82+
|---|---|
83+
| **Slack** | Socket Mode bridge. @mentions + channel monitoring. Rate-limited, content-wrapped. |
84+
| **GitHub** | SSH + PAT. Branches, commits, PRs via `gh`. |
85+
| **Email** | AgentMail inboxes. Send, receive, monitor. |
86+
| **Sentry** | API integration. Alert forwarding from Slack channel. |
87+
| **Docker** | Security wrapper blocks privilege escalation. |
88+
| **Cloud browser** | Kernel browser + Playwright automation. |
89+
90+
Slack is the primary human interface. Email is for agent-to-agent and automated workflows.
91+
92+
## How it works
93+
94+
The control agent spawns sub-agents in tmux sessions and starts the Slack bridge. Messages flow through layered security:
95+
96+
```
97+
Slack β†’ bridge (access control + content wrapping) β†’ pi agent β†’ tools (tool-guard + safe-bash) β†’ workspace
98+
```
99+
100+
Every layer assumes the previous one failed. The bridge wraps content and rate-limits, but tool-guard blocks dangerous commands even if wrapping is bypassed. Safe-bash blocks patterns even if tool-guard is evaded. The firewall blocks exfiltration even if all software layers fail.
101+
102+
## Architecture
103+
104+
```
105+
admin_user (your account)
106+
β”œβ”€β”€ ~/baudbot/ ← source repo (agent CANNOT read)
107+
β”‚ β”œβ”€β”€ bin/ deploy, firewall, security scripts
108+
β”‚ β”œβ”€β”€ pi/extensions/ πŸ”’ tool-guard, auto-name, etc.
109+
β”‚ β”œβ”€β”€ pi/skills/ agent skill templates
110+
β”‚ β”œβ”€β”€ slack-bridge/ πŸ”’ bridge + security module
111+
β”‚ └── setup.sh / start.sh system setup + launcher
112+
113+
baudbot_agent (unprivileged uid)
114+
β”œβ”€β”€ ~/runtime/ ← deployed copies of bin/, bridge
115+
β”œβ”€β”€ ~/.pi/agent/
116+
β”‚ β”œβ”€β”€ extensions/ deployed extensions (read-only)
117+
β”‚ β”œβ”€β”€ skills/ agent-owned (can modify)
118+
β”‚ └── baudbot-manifest.json SHA256 integrity hashes
119+
β”œβ”€β”€ ~/workspace/ project repos + worktrees
120+
└── ~/.config/.env secrets (600 perms)
121+
```
122+
123+
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.
66124

67125
## Operations
68126

69127
```bash
70128
# Deploy after editing source
71129
~/baudbot/bin/deploy.sh
72130

73-
# Launch agent (in tmux for persistence)
131+
# Launch agent (tmux for persistence)
74132
tmux new-window -n baudbot 'sudo -u baudbot_agent ~/runtime/start.sh'
75133

76-
# Check security posture
134+
# Security audit
77135
~/baudbot/bin/security-audit.sh
78136
~/baudbot/bin/security-audit.sh --deep # includes extension scanner
79137

@@ -83,7 +141,7 @@ sudo -u baudbot_agent tmux ls
83141
# Kill everything
84142
sudo -u baudbot_agent pkill -u baudbot_agent
85143

86-
# Uninstall (reverses setup.sh)
144+
# Uninstall
87145
sudo ~/baudbot/bin/uninstall.sh --dry-run # preview
88146
sudo ~/baudbot/bin/uninstall.sh # for real
89147

@@ -107,56 +165,33 @@ bin/test.sh shell
107165
npm run lint && npm run typecheck
108166
```
109167

110-
## How It Works
168+
## Adding agents
111169

112-
Baudbot runs a **control-agent** that spawns specialized sub-agents in tmux sessions and starts a Slack bridge. Out of the box it ships with a dev-agent (coding), sentry-agent (monitoring/triage), and a control-agent (orchestration) β€” but you can add any agent role. Messages flow:
170+
An agent role is a skill file. Baudbot ships three but you can add more.
113171

114-
```
115-
Slack β†’ bridge (access control + content wrapping) β†’ pi agent β†’ tools (tool-guard + safe-bash) β†’ workspace
116-
```
117-
118-
Every layer assumes the previous one failed. The bridge wraps content and rate-limits, but tool-guard blocks dangerous commands even if wrapping is bypassed. Safe-bash blocks patterns even if tool-guard is somehow evaded. The firewall blocks exfiltration even if all software layers fail. Defense in depth, all the way down.
119-
120-
## Architecture
121-
122-
```
123-
admin_user (your account)
124-
β”œβ”€β”€ ~/baudbot/ ← source repo (agent CANNOT read)
125-
β”‚ β”œβ”€β”€ bin/ deploy, firewall, security scripts
126-
β”‚ β”œβ”€β”€ pi/extensions/ πŸ”’ tool-guard, auto-name, etc.
127-
β”‚ β”œβ”€β”€ pi/skills/ agent skill templates
128-
β”‚ β”œβ”€β”€ slack-bridge/ πŸ”’ bridge + security module
129-
β”‚ └── setup.sh / start.sh system setup + launcher
130-
131-
baudbot_agent (unprivileged uid)
132-
β”œβ”€β”€ ~/runtime/ ← deployed copies of bin/, bridge
133-
β”œβ”€β”€ ~/.pi/agent/
134-
β”‚ β”œβ”€β”€ extensions/ deployed extensions (read-only)
135-
β”‚ β”œβ”€β”€ skills/ agent-owned (can modify)
136-
β”‚ └── baudbot-manifest.json SHA256 integrity hashes
137-
β”œβ”€β”€ ~/workspace/ project repos + worktrees
138-
└── ~/.config/.env secrets (600 perms)
139-
```
172+
1. Create `pi/skills/my-agent/SKILL.md` with role instructions.
173+
2. Add a startup block to the control agent's `startup-cleanup.sh`.
174+
3. Deploy: `~/baudbot/bin/deploy.sh`
140175

141-
Deploy is a one-way push: `~/baudbot/bin/deploy.sh` stages source β†’ `/tmp` β†’ copies as `baudbot_agent` via `sudo -u` β†’ stamps integrity manifest β†’ cleans up.
176+
See `pi/skills/dev-agent/SKILL.md` for the pattern.
142177

143-
## Security Stack
178+
## Security stack
144179

145180
| Layer | What | Survives prompt injection? |
146181
|-------|------|---------------------------|
147-
| **Source isolation** | Source repo is admin-owned, agent has zero read access. Deploy is one-way. | βœ… Filesystem-enforced |
148-
| **iptables egress** | Per-UID firewall chain. Allowlisted ports only, no listeners, no reverse shells. | βœ… Kernel-enforced |
149-
| **Process isolation** | `/proc` mounted `hidepid=2`. Agent can't see other PIDs. | βœ… Kernel-enforced |
182+
| **Source isolation** | Source repo is admin-owned. Agent has zero read access. Deploy is one-way. | βœ… Filesystem |
183+
| **iptables egress** | Per-UID firewall chain. Allowlisted ports only. | βœ… Kernel |
184+
| **Process isolation** | `/proc` mounted `hidepid=2`. Agent can't see other PIDs. | βœ… Kernel |
150185
| **Shell deny list** | `baudbot-safe-bash` blocks rm -rf, reverse shells, fork bombs, curl\|sh. Root-owned. | βœ… Root-owned |
151-
| **Tool call interception** | Pi extension blocks dangerous tool calls before they hit disk or shell. | βœ… Compiled into runtime |
152-
| **Integrity manifest** | Deploy stamps SHA256 hashes of all files. Agent can verify its own runtime hasn't been tampered with. | βœ… Admin-signed |
153-
| **Content wrapping** | External messages wrapped with security boundaries + Unicode homoglyph sanitization. | ⚠️ LLM-dependent |
154-
| **Injection detection** | 12 regex patterns flag suspicious content. Log-only. | ⚠️ Detection, not prevention |
186+
| **Tool interception** | Pi extension blocks dangerous tool calls before they hit disk or shell. | βœ… Compiled |
187+
| **Integrity manifest** | Deploy stamps SHA256 hashes. Agent can verify its own runtime. | βœ… Admin-signed |
188+
| **Content wrapping** | External messages wrapped with security boundaries + homoglyph sanitization. | ⚠️ LLM-dependent |
189+
| **Injection detection** | 12 regex patterns flag suspicious content. Log-only. | ⚠️ Detection only |
155190
| **Filesystem hardening** | 700 dirs, 600 secrets, enforced on every boot. | βœ… Boot script |
156191
| **Log redaction** | Scrubs API keys, tokens, private keys from session logs. | βœ… Boot script |
157192
| **Extension scanning** | Static analysis for exfiltration, obfuscation, crypto-mining patterns. | βœ… Audit-time |
158193

159-
## Security Details
194+
## Security details
160195

161196
See [SECURITY.md](SECURITY.md) for the full threat model and trust boundary diagram.
162197

0 commit comments

Comments
Β (0)