opencode-thrum-pro 0.1.0
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/assets/commands/thrum-_deviations-protocol.md +87 -0
- package/assets/commands/thrum-_generator-idempotency-protocol.md +15 -0
- package/assets/commands/thrum-_project-rules-protocol.md +18 -0
- package/assets/commands/thrum-_snapshot-protocol.md +265 -0
- package/assets/commands/thrum-_stamp-protocol.md +112 -0
- package/assets/commands/thrum-_verify-before-write-protocol.md +27 -0
- package/assets/commands/thrum-inbox.md +22 -0
- package/assets/commands/thrum-load-context.md +17 -0
- package/assets/commands/thrum-overview.md +17 -0
- package/assets/commands/thrum-prime.md +30 -0
- package/assets/commands/thrum-quickstart.md +14 -0
- package/assets/commands/thrum-reply.md +28 -0
- package/assets/commands/thrum-restart-extended.md +195 -0
- package/assets/commands/thrum-restart.md +293 -0
- package/assets/commands/thrum-send.md +31 -0
- package/assets/commands/thrum-sleep-extended.md +186 -0
- package/assets/commands/thrum-sleep.md +212 -0
- package/assets/commands/thrum-team.md +12 -0
- package/assets/commands/thrum-update-project.md +259 -0
- package/assets/commands/thrum-wait.md +14 -0
- package/assets/skills/adversarial-critique/SKILL.md +242 -0
- package/assets/skills/brainstorm-queue-aware/SKILL.md +167 -0
- package/assets/skills/brainstorm-steward/SKILL.md +181 -0
- package/assets/skills/choosing-subagent-models/SKILL.md +244 -0
- package/assets/skills/closing-findings-while-warm/SKILL.md +104 -0
- package/assets/skills/configure-roles/SKILL.md +229 -0
- package/assets/skills/coordinator-assessing-agent-completion/SKILL.md +205 -0
- package/assets/skills/coordinator-assessing-agent-completion/scan.py +117 -0
- package/assets/skills/coordinator-branch-split-on-block/SKILL.md +168 -0
- package/assets/skills/coordinator-context-monitoring/SKILL.md +674 -0
- package/assets/skills/coordinator-dispatching-work/SKILL.md +288 -0
- package/assets/skills/coordinator-hotpath-merge-gate/SKILL.md +522 -0
- package/assets/skills/coordinator-interacting-with-the-owner/SKILL.md +171 -0
- package/assets/skills/coordinator-maintaining-memory/SKILL.md +89 -0
- package/assets/skills/coordinator-managing-state-and-lifecycle/SKILL.md +192 -0
- package/assets/skills/coordinator-merging-code/SKILL.md +331 -0
- package/assets/skills/coordinator-philosophy-merge-gate/SKILL.md +442 -0
- package/assets/skills/coordinator-plan-reconcile-gate/SKILL.md +198 -0
- package/assets/skills/coordinator-post-restart-sweep/SKILL.md +135 -0
- package/assets/skills/coordinator-running-autonomous-feature-development/SKILL.md +199 -0
- package/assets/skills/coordinator-running-brainstorm-cycles/SKILL.md +654 -0
- package/assets/skills/coordinator-running-review-cycles/SKILL.md +153 -0
- package/assets/skills/coordinator-single-responsibility-merge-gate/SKILL.md +14 -0
- package/assets/skills/diagnosing-fleet-and-daemon/SKILL.md +255 -0
- package/assets/skills/efficient-multi-agent-research/SKILL.md +177 -0
- package/assets/skills/fixing-documentation-errors/SKILL.md +258 -0
- package/assets/skills/implementer-maintaining-memory/SKILL.md +84 -0
- package/assets/skills/implementer-orchestrating-execution/SKILL.md +125 -0
- package/assets/skills/implementer-receiving-dispatch/SKILL.md +127 -0
- package/assets/skills/implementer-receiving-review-feedback/SKILL.md +125 -0
- package/assets/skills/implementer-status-and-handoff/SKILL.md +150 -0
- package/assets/skills/implementer-tdd-and-quality/SKILL.md +99 -0
- package/assets/skills/memory-audit-recover/SKILL.md +153 -0
- package/assets/skills/memory-curate/SKILL.md +139 -0
- package/assets/skills/memory-maintenance/SKILL.md +87 -0
- package/assets/skills/memory-read-discipline/SKILL.md +164 -0
- package/assets/skills/memory-search-advanced/SKILL.md +217 -0
- package/assets/skills/memory-write-discipline/SKILL.md +135 -0
- package/assets/skills/orchestrate/SKILL.md +795 -0
- package/assets/skills/persistent-watcher-archetype/SKILL.md +225 -0
- package/assets/skills/prime-agent/SKILL.md +92 -0
- package/assets/skills/project-hotpath-gate/SKILL.md +255 -0
- package/assets/skills/project-philosophy/SKILL.md +418 -0
- package/assets/skills/project-philosophy/resources/philosophy-template.md +155 -0
- package/assets/skills/project-philosophy/resources/reliability-class-library.md +653 -0
- package/assets/skills/project-setup/SKILL.md +1007 -0
- package/assets/skills/project-setup/resources/implementation-agent.md +826 -0
- package/assets/skills/researcher-answering-queries/SKILL.md +100 -0
- package/assets/skills/researcher-investigating/SKILL.md +152 -0
- package/assets/skills/researcher-maintaining-memory/SKILL.md +176 -0
- package/assets/skills/state-migration/SKILL.md +54 -0
- package/assets/skills/thrum/SKILL.md +161 -0
- package/assets/skills/thrum/resources/ANTI_PATTERNS.md +132 -0
- package/assets/skills/thrum/resources/BOUNDARIES.md +56 -0
- package/assets/skills/thrum/resources/CLI_REFERENCE.md +1066 -0
- package/assets/skills/thrum/resources/IDENTITY.md +49 -0
- package/assets/skills/thrum/resources/LISTENER_PATTERN.md +64 -0
- package/assets/skills/thrum/resources/MESSAGING.md +163 -0
- package/assets/skills/thrum/resources/TMUX_SESSIONS.md +118 -0
- package/assets/skills/thrum/resources/WORKTREES.md +117 -0
- package/assets/skills/thrum-memory/SKILL.md +138 -0
- package/assets/skills/trace-spec-to-plan/SKILL.md +104 -0
- package/assets/skills/trace-spec-to-plan/resources/sweep-agent-prompt.md +57 -0
- package/assets/skills/update-queue/SKILL.md +149 -0
- package/assets/skills/using-the-queue/SKILL.md +172 -0
- package/assets/skills/using-thrum-state/SKILL.md +104 -0
- package/assets/skills/verify-against-plan/SKILL.md +323 -0
- package/assets/skills/verify-against-source/SKILL.md +237 -0
- package/assets/skills/watcher-archetype/SKILL.md +84 -0
- package/assets/skills/writing-durable-markdown/SKILL.md +66 -0
- package/dist/hooks/block-sync-cd.d.ts +9 -0
- package/dist/hooks/block-sync-cd.js +71 -0
- package/dist/hooks/block-sync-cd.test.d.ts +1 -0
- package/dist/hooks/block-sync-cd.test.js +61 -0
- package/dist/hooks/shell-env.d.ts +8 -0
- package/dist/hooks/shell-env.js +22 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +25 -0
- package/dist/installer.d.ts +2 -0
- package/dist/installer.js +86 -0
- package/package.json +49 -0
|
@@ -0,0 +1,1066 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
Complete command syntax for `thrum`. Run `thrum <command> --help` for detailed
|
|
4
|
+
flag descriptions.
|
|
5
|
+
|
|
6
|
+
## Global Flags
|
|
7
|
+
|
|
8
|
+
These flags apply to every command:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
--json JSON output for scripting
|
|
12
|
+
--quiet Suppress non-essential output
|
|
13
|
+
--verbose Debug output
|
|
14
|
+
--role <role> Agent role (or THRUM_ROLE env var)
|
|
15
|
+
--module <mod> Agent module (or THRUM_MODULE env var)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## CLI Hint Behavior
|
|
21
|
+
|
|
22
|
+
Many commands append contextual hints after their normal output. Two kinds:
|
|
23
|
+
|
|
24
|
+
- **detection** — condition-triggered guards (e.g. identity mismatch, empty
|
|
25
|
+
agent list, peer version drift). Fire whenever the condition is present.
|
|
26
|
+
- **reinforcement** — periodic memory-aids, band-throttled by context
|
|
27
|
+
percentage. Fire occasionally, not on every command.
|
|
28
|
+
|
|
29
|
+
**Output shapes:**
|
|
30
|
+
|
|
31
|
+
- Human: stderr lines `<severity> [<code>]: <message>`
|
|
32
|
+
- `--json`: top-level `"hints"` array of objects —
|
|
33
|
+
`{code, severity, message, options[], kind}`; `kind` is always present
|
|
34
|
+
(`"detection"` or `"reinforcement"`). <!-- markdownlint-disable-line MD013 -->
|
|
35
|
+
|
|
36
|
+
**Suppression:**
|
|
37
|
+
|
|
38
|
+
| Mechanism | Effect |
|
|
39
|
+
| ---------------------- | ---------------------------------------------------- |
|
|
40
|
+
| `--quiet` | Drop all hints |
|
|
41
|
+
| `THRUM_NO_HINTS=1` | Drop all hints (stderr and JSON) |
|
|
42
|
+
| `THRUM_NO_REMINDERS=1` | Drop reinforcement hints only; detection still fires |
|
|
43
|
+
| `--json` | Moves hints into JSON body — does not drop them |
|
|
44
|
+
|
|
45
|
+
Truthy for env vars: any non-empty value except `"0"` or `"false"`
|
|
46
|
+
(case-insensitive).
|
|
47
|
+
|
|
48
|
+
**Phase D — daemon-attached hints:** RPC responses can carry a `hints[]` array
|
|
49
|
+
that the CLI merges into the top-level hints output. First use: AP-4
|
|
50
|
+
`daemon.cross-version-drift` — a `warn` detection hint on `thrum team` when a
|
|
51
|
+
peer daemon's cached version differs from this daemon's.
|
|
52
|
+
|
|
53
|
+
Full reference: [docs/cli-hints.md](https://thrum.team/docs/cli-hints.html)
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Messaging
|
|
58
|
+
|
|
59
|
+
### send
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
thrum send --to @name --body-file ./body.md # Direct message (canonical form)
|
|
63
|
+
thrum send --broadcast --body-file ./body.md # Explicit team-wide fanout (preferred)
|
|
64
|
+
thrum send --to @everyone --body-file ./body.md # Broadcast (legacy keyword form)
|
|
65
|
+
thrum send --to @name --scope type:value --scope type:value2 --body-file ./body.md
|
|
66
|
+
thrum send --to @name --ref type:value --body-file ./body.md
|
|
67
|
+
thrum send --to @name --mention @role --body-file ./body.md
|
|
68
|
+
thrum send --to @name --format plain --body-file ./body.md
|
|
69
|
+
thrum send --to @name --structured '{"key":"value"}' --body-file ./body.md
|
|
70
|
+
thrum send --to @name --body-file ./body.md # Shell-safe body (file)
|
|
71
|
+
generator | thrum send --to @name - # '-' is a --stdin alias
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
A recipient flag is REQUIRED — `thrum send 'msg'` with no `--to` or
|
|
75
|
+
`--broadcast` is a hard error. `--to` and `--broadcast` are
|
|
76
|
+
mutually exclusive.
|
|
77
|
+
|
|
78
|
+
Shell-safe bodies: backticks, `$(...)`, `$VAR`, and quotes in a
|
|
79
|
+
double-quoted message are interpreted by the shell BEFORE thrum runs, silently
|
|
80
|
+
corrupting content. Read the body from stdin (`--stdin`, or pass the message as
|
|
81
|
+
`-`) or a file (`--body-file`) with a QUOTED heredoc (`<<'EOF'`) to disable all
|
|
82
|
+
shell interpretation. The three body sources are mutually exclusive. A single
|
|
83
|
+
trailing newline is stripped from stdin/file bodies.
|
|
84
|
+
|
|
85
|
+
Flags:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
--to string Recipient — @agent_name or @everyone for broadcast (mutex with --broadcast)
|
|
89
|
+
--broadcast Fan out to the entire team (mutex with --to)
|
|
90
|
+
--mention strings Mention a role (repeatable, format: @role)
|
|
91
|
+
--ref strings Add reference (repeatable, format: type:value)
|
|
92
|
+
--scope strings Add scope (repeatable, format: type:value)
|
|
93
|
+
--format string Message format: markdown, plain, json (default "markdown")
|
|
94
|
+
--structured string Structured payload (JSON)
|
|
95
|
+
--stdin Read the message body from stdin (or pass MESSAGE as '-')
|
|
96
|
+
--body-file string Read the message body from a file (mutex with --stdin)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### reply
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
thrum reply <msg-id> --body-file ./reply.md # Reply body (file)
|
|
103
|
+
thrum reply <msg-id> --body-file ./reply.md --format plain
|
|
104
|
+
thrum reply <msg-id> --body-file ./body.md # Reply body (file)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`reply` takes **no `--to`** — the recipient is derived from the parent message.
|
|
108
|
+
To start a new thread to a specific agent, use `thrum send ... --to @name`.
|
|
109
|
+
|
|
110
|
+
Shell-safe bodies: like `send`, `reply` accepts `--stdin` (or the
|
|
111
|
+
response argument as `-`) and `--body-file` so backtick/`$(...)`/quote-bearing
|
|
112
|
+
text survives the shell. Use a QUOTED heredoc (`<<'EOF'`).
|
|
113
|
+
|
|
114
|
+
Flags:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
--format string Message format: markdown, plain, json (default "markdown")
|
|
118
|
+
--stdin Read the reply body from stdin (or pass the response as '-')
|
|
119
|
+
--body-file string Read the reply body from a file (mutex with --stdin)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### inbox
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
thrum inbox # Show inbox (auto-filtered to you)
|
|
126
|
+
thrum inbox --unread # Only unread messages
|
|
127
|
+
thrum inbox --all # All messages (no auto-filter)
|
|
128
|
+
thrum inbox --mentions # Only messages mentioning you
|
|
129
|
+
thrum inbox --from @agent # Filter to messages from a specific sender
|
|
130
|
+
thrum inbox --scope type:value # Filter by scope
|
|
131
|
+
thrum inbox --page 2 --page-size 20 # Pagination
|
|
132
|
+
thrum inbox --limit N # Alias for --page-size
|
|
133
|
+
thrum sent # Show sent items with receipts
|
|
134
|
+
thrum sent --unread # Only messages with unread recipients
|
|
135
|
+
thrum sent --to @agent # Filter by recipient or audience
|
|
136
|
+
thrum message get <message-id> # Full recipient detail for one message
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Search, don't just page.** Default `--page-size` is 10 newest-first, so
|
|
140
|
+
stale unread sorts LAST exactly when it has waited longest — the oldest
|
|
141
|
+
backlog is exactly what a default-page check can't see:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
thrum message search "<term>" # full-text across all messages (positional query, no --limit)
|
|
145
|
+
thrum inbox -q "<term>" # same full-text search, scoped to your inbox (aliases: --grep, --match)
|
|
146
|
+
thrum message reindex # rebuild the FTS index if search looks wrong
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Flags:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
-a, --all Show all messages (disable auto-filtering)
|
|
153
|
+
--unread Only unread messages (does not mark as read — safe to peek)
|
|
154
|
+
--mentions Only messages mentioning me
|
|
155
|
+
--from string Filter to messages from a specific sender (use @agent or agent)
|
|
156
|
+
--scope string Filter by scope (format: type:value)
|
|
157
|
+
--page int Page number (default 1)
|
|
158
|
+
--page-size int Results per page (default 10)
|
|
159
|
+
--limit int Alias for --page-size
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### wait
|
|
163
|
+
|
|
164
|
+
Blocks until a matching message arrives or timeout. Exit codes: 0=message,
|
|
165
|
+
1=timeout, 2=error.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
thrum wait # Wait for any message (30s default)
|
|
169
|
+
thrum wait --timeout 5m # Wait up to 5 minutes
|
|
170
|
+
thrum wait --timeout 8m --after -15s # Include messages sent up to 15s ago (covers re-arm gap)
|
|
171
|
+
thrum wait --mention @reviewer # Wait for mention of role
|
|
172
|
+
thrum wait --scope module:auth # Wait for scoped message
|
|
173
|
+
thrum wait --after -30s # Include messages sent up to 30s ago
|
|
174
|
+
thrum wait --after -5m --json # Include messages sent up to 5m ago; JSON output
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Flags:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
--timeout string Max wait time with unit (e.g., 30s, 5m) (default "30s")
|
|
181
|
+
--after string Relative time offset for filtering messages:
|
|
182
|
+
Negative (e.g., -30s, -5m): include messages sent up to N ago
|
|
183
|
+
Positive (e.g., +60s): only messages arriving at least N seconds in the future
|
|
184
|
+
Omitted: default is "now" (only messages that arrive after wait starts)
|
|
185
|
+
--mention string Wait for mentions of role (format: @role)
|
|
186
|
+
--scope string Filter by scope (format: type:value)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Note: `--after` sign convention: negative = "N ago" (look back), positive = "N
|
|
190
|
+
from now" (skip ahead). Note: `--timeout` requires a Go duration unit — use
|
|
191
|
+
`120s` not `120`.
|
|
192
|
+
|
|
193
|
+
### message
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
thrum message get <msg-id> # Get full message details
|
|
197
|
+
thrum message edit <msg-id> --body-file ./new-body.md # Full replacement (author only; body from file)
|
|
198
|
+
thrum message edit <msg-id> --body-file ./new.md # Full replacement from file
|
|
199
|
+
thrum message delete <msg-id> --force # Delete (--force required)
|
|
200
|
+
thrum message read <msg-id> [<msg-id>...] # Mark as read
|
|
201
|
+
thrum message read --all # Mark all as read
|
|
202
|
+
thrum message search "<term>" # Full-text search across all messages (see § inbox above)
|
|
203
|
+
thrum message reindex # Rebuild the FTS index if search looks wrong
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Subcommand flags:
|
|
207
|
+
|
|
208
|
+
```text
|
|
209
|
+
# message edit (shell-safe bodies)
|
|
210
|
+
--stdin Read the new text from stdin (or pass TEXT as '-')
|
|
211
|
+
--body-file string Read the new text from a file (mutex with --stdin)
|
|
212
|
+
|
|
213
|
+
# message delete
|
|
214
|
+
--force Confirm deletion (required)
|
|
215
|
+
|
|
216
|
+
# message read
|
|
217
|
+
--all Mark all unread messages as read
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Agent Management
|
|
223
|
+
|
|
224
|
+
### quickstart
|
|
225
|
+
|
|
226
|
+
Bootstrap a full session in one command: detect runtime, generate config,
|
|
227
|
+
register, start, set intent.
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
thrum quickstart implementer_auth --role implementer --module auth
|
|
231
|
+
thrum quickstart --name reviewer_auth --role reviewer --module auth --intent "Reviewing PR #42"
|
|
232
|
+
thrum quickstart alice --role impl --module auth --runtime codex
|
|
233
|
+
thrum quickstart planner_core --role planner_core --module core --no-init
|
|
234
|
+
thrum quickstart tester_api --role tester --module api --dry-run
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Name can be passed as a positional argument or via `--name`; the flag wins when
|
|
238
|
+
both are supplied. Precedence (highest → lowest): `--name` flag, positional,
|
|
239
|
+
`THRUM_NAME` env-var, identity-file name fallback.
|
|
240
|
+
|
|
241
|
+
Flags:
|
|
242
|
+
|
|
243
|
+
```text
|
|
244
|
+
--role string Agent role (or THRUM_ROLE env var)
|
|
245
|
+
--module string Agent module (or THRUM_MODULE env var)
|
|
246
|
+
--name string Human-readable agent name (defaults to role_hash)
|
|
247
|
+
--display string Display name for the agent
|
|
248
|
+
--intent string Initial work intent description
|
|
249
|
+
--runtime string Runtime preset: claude, codex, cursor, gemini, opencode, auggie, cli-only
|
|
250
|
+
--preamble-file string Custom preamble file to compose with default preamble
|
|
251
|
+
--no-init Skip runtime config generation, just register agent
|
|
252
|
+
--force Overwrite existing runtime config files
|
|
253
|
+
--dry-run Preview changes without writing files or registering
|
|
254
|
+
--no-agent-pid Persist agent_pid=0 instead of detecting the runtime ancestor; defers PID claim to first /thrum:prime (used for inline tmux quickstart)
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### agent register
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
thrum agent register --role implementer --module auth
|
|
261
|
+
thrum agent register --name alice --role impl --module auth
|
|
262
|
+
thrum agent register --force # Override existing
|
|
263
|
+
thrum agent register --re-register # Re-register same agent
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Flags:
|
|
267
|
+
|
|
268
|
+
```text
|
|
269
|
+
--role string Agent role (or THRUM_ROLE env var)
|
|
270
|
+
--module string Agent module (or THRUM_MODULE env var)
|
|
271
|
+
--name string Human-readable agent name (defaults to role_hash)
|
|
272
|
+
--display string Display name for the agent
|
|
273
|
+
--force Force registration (override existing)
|
|
274
|
+
--re-register Re-register same agent
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### agent list
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
thrum agent list # List all registered agents
|
|
281
|
+
thrum agent list --role reviewer # Filter by role
|
|
282
|
+
thrum agent list --module auth # Filter by module
|
|
283
|
+
thrum agent list --context # Show work context (branch, commits, intent)
|
|
284
|
+
thrum agent list --json
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Flags:
|
|
288
|
+
|
|
289
|
+
```text
|
|
290
|
+
--context Show work context (branch, commits, intent)
|
|
291
|
+
--role string Filter by role
|
|
292
|
+
--module string Filter by module
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### agent set-intent / session set-intent
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
thrum agent set-intent "Fixing memory leak in connection pool"
|
|
299
|
+
thrum session set-intent "Refactoring login flow"
|
|
300
|
+
thrum agent set-intent "" # Clear intent
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### agent set-task / session set-task
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
thrum agent set-task beads:thrum-xyz
|
|
307
|
+
thrum session set-task "JIRA-1234"
|
|
308
|
+
thrum agent set-task "" # Clear task
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### agent heartbeat / session heartbeat
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
thrum agent heartbeat
|
|
315
|
+
thrum session heartbeat
|
|
316
|
+
thrum session heartbeat --add-scope module:auth
|
|
317
|
+
thrum session heartbeat --remove-ref pr:42
|
|
318
|
+
thrum session heartbeat --add-ref pr:123 --remove-scope module:old
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Flags:
|
|
322
|
+
|
|
323
|
+
```text
|
|
324
|
+
--add-scope strings Add scope (repeatable, format: type:value)
|
|
325
|
+
--remove-scope strings Remove scope (repeatable, format: type:value)
|
|
326
|
+
--add-ref strings Add ref (repeatable, format: type:value)
|
|
327
|
+
--remove-ref strings Remove ref (repeatable, format: type:value)
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### agent start / session start
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
thrum agent start
|
|
334
|
+
thrum session start
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### agent end / session end
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
thrum agent end
|
|
341
|
+
thrum session end
|
|
342
|
+
thrum session end --reason crash
|
|
343
|
+
thrum session end --session-id <id>
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Flags:
|
|
347
|
+
|
|
348
|
+
```text
|
|
349
|
+
--reason string End reason: normal|crash (default "normal")
|
|
350
|
+
--session-id string Session ID to end (defaults to current session)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### agent cleanup
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
thrum agent cleanup # Interactive cleanup of orphaned agents
|
|
357
|
+
thrum agent cleanup --dry-run # List orphans without deleting
|
|
358
|
+
thrum agent cleanup --force # Delete all orphans without prompting
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Flags:
|
|
362
|
+
|
|
363
|
+
```text
|
|
364
|
+
--dry-run List orphans without deleting
|
|
365
|
+
--force Delete all orphans without prompting
|
|
366
|
+
--threshold int Days since last seen to consider agent stale (default 30)
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### agent delete
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
thrum agent delete <name>
|
|
373
|
+
thrum agent delete coordinator_1B9K --force
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Flags:
|
|
377
|
+
|
|
378
|
+
```text
|
|
379
|
+
--force Skip confirmation prompt
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### agent whoami / whoami
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
thrum agent whoami
|
|
386
|
+
thrum whoami
|
|
387
|
+
thrum whoami --json
|
|
388
|
+
thrum whoami --field agent_id # Print a single field's value and exit
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Flags:
|
|
392
|
+
|
|
393
|
+
```text
|
|
394
|
+
--field string Print a single field's value (e.g. agent_id, tmux_alive) and exit
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### session list
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
thrum session list # List all sessions
|
|
401
|
+
thrum session list --active # Only active sessions
|
|
402
|
+
thrum session list --agent <agent-id> # Filter by agent
|
|
403
|
+
thrum session list --json
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
Flags:
|
|
407
|
+
|
|
408
|
+
```text
|
|
409
|
+
--active Show only active sessions
|
|
410
|
+
--agent string Filter by agent ID
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### team
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
thrum team # Rich multi-line status for all active agents
|
|
417
|
+
thrum team --all # Include offline agents
|
|
418
|
+
thrum team --json
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
Flags:
|
|
422
|
+
|
|
423
|
+
```text
|
|
424
|
+
--all Include offline agents
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Coordination
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
thrum who-has <file> # Check which agents are editing a file
|
|
433
|
+
thrum ping @name # Check agent presence
|
|
434
|
+
thrum ping planner # @ prefix optional
|
|
435
|
+
thrum overview # Combined: identity + team + inbox + sync
|
|
436
|
+
thrum overview --json
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Context
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
thrum prime # Gather full session context (AI-optimized)
|
|
445
|
+
thrum prime --json
|
|
446
|
+
thrum context show # Show saved agent context
|
|
447
|
+
thrum context show --agent coordinator # Show another agent's context
|
|
448
|
+
thrum context show --raw # Raw output with file boundary markers
|
|
449
|
+
thrum context show --no-preamble # Exclude preamble from output
|
|
450
|
+
thrum context load # Alias for context show
|
|
451
|
+
thrum context save # Save context from stdin
|
|
452
|
+
thrum context save --file path/to/context.md # Save context from file
|
|
453
|
+
thrum context save --agent other_agent
|
|
454
|
+
thrum context clear # Clear saved context
|
|
455
|
+
thrum context clear --agent coordinator
|
|
456
|
+
thrum context sync # Sync context to a-sync branch
|
|
457
|
+
thrum context sync --agent coordinator
|
|
458
|
+
thrum context preamble # Show current preamble
|
|
459
|
+
thrum context preamble --init # Create/reset to default preamble
|
|
460
|
+
thrum context preamble --file path.md # Set preamble from file
|
|
461
|
+
thrum context preamble --agent coordinator
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
`context show` flags:
|
|
465
|
+
|
|
466
|
+
```text
|
|
467
|
+
--agent string Override agent name
|
|
468
|
+
--raw Raw output with file boundary markers, no header
|
|
469
|
+
--no-preamble Exclude preamble from output
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
`context save` flags:
|
|
473
|
+
|
|
474
|
+
```text
|
|
475
|
+
--agent string Override agent name
|
|
476
|
+
--file string Read context from file (default: stdin)
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
`context preamble` flags:
|
|
480
|
+
|
|
481
|
+
```text
|
|
482
|
+
--agent string Override agent name
|
|
483
|
+
--file string Set preamble from file
|
|
484
|
+
--init Create or reset to default preamble
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
`context clear` / `context sync` flags:
|
|
488
|
+
|
|
489
|
+
```text
|
|
490
|
+
--agent string Override agent name
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Daemon
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
thrum daemon start # Start daemon in background
|
|
499
|
+
thrum daemon stop # Stop daemon gracefully
|
|
500
|
+
thrum daemon restart # Restart (preserves WebSocket port)
|
|
501
|
+
thrum daemon status # Show daemon status
|
|
502
|
+
thrum daemon status --json
|
|
503
|
+
thrum daemon start --local # Local-only mode (no git push/fetch)
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
The `--local` and `--force` flags are available on all daemon subcommands:
|
|
507
|
+
|
|
508
|
+
```text
|
|
509
|
+
--local Local-only mode: skip git push/fetch in sync loop
|
|
510
|
+
--force Proceed even when the repo directory is not git-anchored (G2 override)
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
Note: `--foreground` flag does NOT exist. Daemon always starts in background.
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
## Init
|
|
518
|
+
|
|
519
|
+
`thrum init` also automatically starts the daemon if it is not already running.
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
thrum init # On a TTY: launches the interactive wizard. Non-TTY: legacy silent path.
|
|
523
|
+
thrum init --runtime claude # Pin runtime (skips runtime prompt)
|
|
524
|
+
thrum init --runtime codex --force # Re-init: pre-seeds wizard prompts from existing values
|
|
525
|
+
thrum init --runtime all --dry-run # Preview all runtime configs (bypasses wizard)
|
|
526
|
+
thrum init --non-interactive --runtime claude # Force the legacy silent path even on a TTY
|
|
527
|
+
thrum init --stealth # Zero tracked-file footprint
|
|
528
|
+
thrum init --name alice --role implementer --module auth # Pre-fill wizard identity prompts
|
|
529
|
+
thrum init --no-daemon # Run wizard but skip starting the daemon
|
|
530
|
+
thrum init --skills # Install thrum skill only (no MCP, no startup script)
|
|
531
|
+
thrum init --skills --runtime cursor # Install skill to Cursor's skill directory
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
Flags:
|
|
535
|
+
|
|
536
|
+
```text
|
|
537
|
+
--runtime string Generate runtime-specific configs: claude|codex|cursor|gemini|opencode|cli-only|all
|
|
538
|
+
--skills Install thrum skill only (no MCP config, no startup script)
|
|
539
|
+
--stealth Use .git/info/exclude instead of .gitignore (zero footprint)
|
|
540
|
+
--force Force reinitialization. On a TTY this re-runs the wizard with existing values pre-seeded.
|
|
541
|
+
--dry-run Preview changes without writing files (bypasses the wizard)
|
|
542
|
+
--non-interactive Force the legacy silent path even on a TTY
|
|
543
|
+
--no-daemon Skip auto-starting the daemon at the end of the wizard
|
|
544
|
+
--name string Pre-fill the wizard's identity-name prompt
|
|
545
|
+
--role string Pre-fill the wizard's role prompt
|
|
546
|
+
--module string Pre-fill the wizard's module prompt
|
|
547
|
+
--worktrees-root string Pre-fill the wizard's worktrees-root prompt (absolute path outside the repo)
|
|
548
|
+
--roles string Pre-fill the wizard's role-template choice: enhanced|default|skip
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
The wizard's suggested default agent name is derived from the repo directory,
|
|
552
|
+
lowercased and sanitized to satisfy the agent-name validator (a-z, 0-9,
|
|
553
|
+
underscore only).
|
|
554
|
+
|
|
555
|
+
**tmux gate:** if `tmux` is not on `PATH` when the wizard reaches the
|
|
556
|
+
daemon-start step, init exits early with an OS-appropriate install hint
|
|
557
|
+
(`brew install tmux` / `apt install tmux`).
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## Setup
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
thrum setup claude-md # Print Thrum CLAUDE.md block to stdout
|
|
565
|
+
thrum setup claude-md --apply # Create or append CLAUDE.md block
|
|
566
|
+
thrum setup claude-md --apply --force # Replace existing Thrum block in place
|
|
567
|
+
thrum worktree setup <name> # Set up redirect in feature worktree (<name> required)
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
`setup claude-md` flags:
|
|
571
|
+
|
|
572
|
+
```text
|
|
573
|
+
--apply Write to ./CLAUDE.md (create or append); errors if block exists (use --force to replace)
|
|
574
|
+
--force Replace an existing Thrum block idempotently; no effect without --apply
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
Block is wrapped in `<!-- BEGIN THRUM -->` / `<!-- END THRUM -->` markers for
|
|
578
|
+
detection. Use only if you are NOT running the Thrum Claude Code plugin — the
|
|
579
|
+
plugin already injects equivalent content via its SessionStart hook.
|
|
580
|
+
|
|
581
|
+
`worktree setup` flags:
|
|
582
|
+
|
|
583
|
+
```text
|
|
584
|
+
--base string Base branch/ref for the new branch (default: main repo HEAD or configured merge_target)
|
|
585
|
+
-b, --branch string Branch name (default: feature/<name>)
|
|
586
|
+
--detach Create detached HEAD worktree
|
|
587
|
+
--effort string Pin reasoning effort (low|medium|high|xhigh|max)
|
|
588
|
+
--from string Alias for --base
|
|
589
|
+
--identity string Agent identity class (long_lived|ephemeral)
|
|
590
|
+
--intent string Agent intent
|
|
591
|
+
--mode string Agent mode (persistent|ephemeral)
|
|
592
|
+
--model string Pin the runtime LLM model
|
|
593
|
+
--module string Agent module
|
|
594
|
+
--name string Agent name: registers AND launches in a tmux session (requires --role)
|
|
595
|
+
--role string Agent role; required with --name
|
|
596
|
+
--runtime string Preferred runtime
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
|
|
601
|
+
## Sync
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
thrum sync force # Force immediate sync (non-blocking)
|
|
605
|
+
thrum sync status # Show sync status, last sync time, errors
|
|
606
|
+
thrum sync status --json
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
Note: `thrum sync` alone prints help — use `thrum sync force` or
|
|
610
|
+
`thrum sync status`.
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
## Backup
|
|
615
|
+
|
|
616
|
+
```bash
|
|
617
|
+
thrum backup # Snapshot all thrum data
|
|
618
|
+
thrum backup --dir /path/to/backup # Override backup directory
|
|
619
|
+
thrum backup status # Show last backup info
|
|
620
|
+
thrum backup config # Show effective backup config
|
|
621
|
+
thrum backup schedule # Show current schedule
|
|
622
|
+
thrum backup schedule 24h # Back up every 24 hours
|
|
623
|
+
thrum backup schedule 8h --dir /path/to/backup # Set interval + directory
|
|
624
|
+
thrum backup schedule off # Disable scheduled backups
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
`backup schedule` flags:
|
|
628
|
+
|
|
629
|
+
```text
|
|
630
|
+
--dir string Set backup directory
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
Note: Daemon must be restarted for schedule changes to take effect.
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
## Purge
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
thrum purge --before 2d # Preview: what's older than 2 days
|
|
641
|
+
thrum purge --before 2d --confirm # Execute the purge
|
|
642
|
+
thrum purge --before 2026-03-15 --confirm # Purge before a specific date
|
|
643
|
+
thrum purge --all --confirm # Delete all messages/sessions/events
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
`purge` flags:
|
|
647
|
+
|
|
648
|
+
```text
|
|
649
|
+
--before string Cutoff: duration (2d, 24h), date (2026-03-15), or RFC 3339
|
|
650
|
+
--all Purge all messages, sessions, and events
|
|
651
|
+
--confirm Execute the purge (without this, only shows a preview)
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
Removes messages, sessions, and events from both SQLite and sync JSONL files.
|
|
655
|
+
Agents, groups, and subscriptions are not touched. `--before` and `--all` are
|
|
656
|
+
mutually exclusive.
|
|
657
|
+
|
|
658
|
+
```bash
|
|
659
|
+
thrum backup restore # Restore from latest backup
|
|
660
|
+
thrum backup restore archive.zip # Restore from specific archive
|
|
661
|
+
thrum backup restore --yes # Skip confirmation
|
|
662
|
+
thrum backup plugin list # List configured plugins
|
|
663
|
+
thrum backup plugin add --preset beads # Add built-in preset
|
|
664
|
+
thrum backup plugin add --name myplugin --command "cmd" --include "*.json"
|
|
665
|
+
thrum backup plugin remove --name myplugin
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
`backup` flags (inherited by all subcommands):
|
|
669
|
+
|
|
670
|
+
```text
|
|
671
|
+
--dir string Override backup directory
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
`backup plugin add` flags:
|
|
675
|
+
|
|
676
|
+
```text
|
|
677
|
+
--preset string Use built-in preset: beads, beads-rust
|
|
678
|
+
--name string Plugin name
|
|
679
|
+
--command string Command to run before collecting files
|
|
680
|
+
--include strings File patterns to collect (glob, repeatable)
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
`backup restore` flags:
|
|
684
|
+
|
|
685
|
+
```text
|
|
686
|
+
--yes Skip confirmation prompt
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
## Peer
|
|
692
|
+
|
|
693
|
+
```bash
|
|
694
|
+
thrum peer add # Start pairing (displays 4-digit code, blocks 5min)
|
|
695
|
+
thrum peer join <peercode> --type <tailscale|local|...> # --type is REQUIRED
|
|
696
|
+
thrum peer list # List paired peers
|
|
697
|
+
thrum peer remove <name> # Remove a paired peer
|
|
698
|
+
thrum peer status # Detailed sync status for all peers
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
`peer join` accepts the peercode (format: `name:ip:port:code`) via four input
|
|
702
|
+
methods (tried in order): positional argument, `--peercode` flag, stdin pipe,
|
|
703
|
+
interactive prompt.
|
|
704
|
+
|
|
705
|
+
Flags:
|
|
706
|
+
|
|
707
|
+
```text
|
|
708
|
+
--peercode string Peer connection code (format: name:ip:port:code)
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
---
|
|
712
|
+
|
|
713
|
+
## Runtime
|
|
714
|
+
|
|
715
|
+
```bash
|
|
716
|
+
thrum runtime list # List all runtime presets
|
|
717
|
+
thrum runtime list --json
|
|
718
|
+
thrum runtime show <name> # Show details for a preset
|
|
719
|
+
thrum runtime show claude --json
|
|
720
|
+
thrum runtime set-default <name> # Set the default runtime preset
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
Supported runtimes: `claude`, `codex`, `cursor`, `gemini`, `opencode`, `auggie`,
|
|
724
|
+
`cli-only`
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
## Role Templates
|
|
729
|
+
|
|
730
|
+
```bash
|
|
731
|
+
thrum roles list # List templates and matching agents
|
|
732
|
+
thrum roles deploy # Re-render preambles from templates (all agents)
|
|
733
|
+
thrum roles deploy --agent alice # Deploy for a specific agent
|
|
734
|
+
thrum roles deploy --dry-run # Preview changes without writing files
|
|
735
|
+
thrum roles refresh # Re-render templates from saved role_config answers
|
|
736
|
+
thrum roles save-config # Write role_config to config.json from JSON on stdin
|
|
737
|
+
thrum roles templates print <role>-<autonomy> # Print an embedded shipped template to stdout
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
`roles deploy` flags:
|
|
741
|
+
|
|
742
|
+
```text
|
|
743
|
+
--agent string Deploy for a specific agent only
|
|
744
|
+
--dry-run Preview changes without writing files
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
`roles templates print` takes a single positional argument of the form
|
|
748
|
+
`<role>-<autonomy>` (e.g. `implementer-autonomous`, `coordinator-strict`). Exit
|
|
749
|
+
code is non-zero if the template name is not found.
|
|
750
|
+
|
|
751
|
+
`roles save-config` reads a `RoleConfig` JSON object from stdin and atomically
|
|
752
|
+
writes `role_config` to `.thrum/config.json`, preserving all other top-level
|
|
753
|
+
keys. Used internally by `/thrum:configure-roles`.
|
|
754
|
+
|
|
755
|
+
---
|
|
756
|
+
|
|
757
|
+
## Telegram
|
|
758
|
+
|
|
759
|
+
```bash
|
|
760
|
+
thrum telegram configure # Interactive setup (prompts for token, target, user)
|
|
761
|
+
thrum telegram configure --token <token> --target <chat-id> --user <username>
|
|
762
|
+
thrum telegram configure --token <token> --target <chat-id> --user <username> --yes
|
|
763
|
+
thrum telegram status # Show bridge connection status and config
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
`telegram configure` flags:
|
|
767
|
+
|
|
768
|
+
```text
|
|
769
|
+
--token string Telegram bot token
|
|
770
|
+
--target string Target chat ID or username
|
|
771
|
+
--user string Telegram username to associate
|
|
772
|
+
--yes Skip confirmation prompt (non-interactive)
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
When flags are omitted, `configure` runs in interactive mode and prompts for
|
|
776
|
+
each value.
|
|
777
|
+
|
|
778
|
+
`telegram status` has no additional flags beyond globals.
|
|
779
|
+
|
|
780
|
+
---
|
|
781
|
+
|
|
782
|
+
## MCP Server
|
|
783
|
+
|
|
784
|
+
```bash
|
|
785
|
+
thrum mcp serve # Start MCP stdio server
|
|
786
|
+
thrum mcp serve --agent-id alice # Override agent identity
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
`mcp serve` flags:
|
|
790
|
+
|
|
791
|
+
```text
|
|
792
|
+
--agent-id string Override agent identity (selects .thrum/identities/{name}.json)
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
Configure in `.claude/settings.json`:
|
|
796
|
+
|
|
797
|
+
```json
|
|
798
|
+
{
|
|
799
|
+
"mcpServers": {
|
|
800
|
+
"thrum": {
|
|
801
|
+
"type": "stdio",
|
|
802
|
+
"command": "thrum",
|
|
803
|
+
"args": ["mcp", "serve"]
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
---
|
|
810
|
+
|
|
811
|
+
## Tmux Sessions
|
|
812
|
+
|
|
813
|
+
```bash
|
|
814
|
+
thrum tmux start # One-command in current worktree: launch + prime + attach
|
|
815
|
+
thrum tmux start --name <session> # Override session name
|
|
816
|
+
thrum tmux start --runtime opencode # Override runtime
|
|
817
|
+
thrum tmux create <name> --cwd <path> \
|
|
818
|
+
--name <agent> --role <role> --module <mod> # Create session + register agent (flags required)
|
|
819
|
+
thrum tmux create <name> --cwd <path> \
|
|
820
|
+
--no-agent # Create session without agent registration
|
|
821
|
+
thrum tmux quickstart <name> --cwd <path> \
|
|
822
|
+
--name <agent> --role <role> --module <mod> # Alias for tmux create
|
|
823
|
+
thrum tmux launch <name> # Start AI runtime in session
|
|
824
|
+
thrum tmux launch <name> --runtime claude # Override runtime for this launch
|
|
825
|
+
thrum tmux status # Show managed sessions with state
|
|
826
|
+
thrum tmux connect # Attach (interactive picker)
|
|
827
|
+
thrum tmux connect <name> # Attach directly by name
|
|
828
|
+
thrum tmux restart <name> # Restart session with context snapshot
|
|
829
|
+
thrum tmux restart <name> # PREFERRED — re-applies the --model pin
|
|
830
|
+
thrum tmux restart <name> --force # Skips confirmation AND DROPS THE --model PIN
|
|
831
|
+
thrum tmux kill <name> # Tear down a session
|
|
832
|
+
thrum tmux queue <session> <command> # Submit command to session queue
|
|
833
|
+
thrum tmux queue <session> <command> --wait # Queue + block until complete
|
|
834
|
+
thrum tmux queue-status <session> # Show active + queued commands
|
|
835
|
+
thrum tmux cancel <command-id> # Cancel a queued or active command
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
`tmux start` flags (operates on current working directory):
|
|
839
|
+
|
|
840
|
+
```text
|
|
841
|
+
--name string Override session name (default: directory name)
|
|
842
|
+
--runtime string Override runtime (default: from config or claude)
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
`tmux create` / `tmux quickstart` flags:
|
|
846
|
+
|
|
847
|
+
```text
|
|
848
|
+
--cwd string Working directory for the session
|
|
849
|
+
--name string Agent name (required unless --no-agent)
|
|
850
|
+
--role string Agent role (required unless --no-agent)
|
|
851
|
+
--module string Agent module (required unless --no-agent)
|
|
852
|
+
--intent string Initial work intent description
|
|
853
|
+
--runtime string Runtime preset: claude, codex, cursor, gemini, opencode, auggie
|
|
854
|
+
--no-agent Skip agent registration (create session only)
|
|
855
|
+
--force Overwrite existing runtime config files
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
Without `--no-agent`, the command errors if `--name`, `--role`, and `--module`
|
|
859
|
+
are all missing. Old identity files in the session worktree are cleaned up after
|
|
860
|
+
quickstart runs (one identity per worktree enforced).
|
|
861
|
+
|
|
862
|
+
`tmux launch` flags:
|
|
863
|
+
|
|
864
|
+
```text
|
|
865
|
+
--runtime AI tool to launch (default: from config or claude)
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
`tmux queue` flags:
|
|
869
|
+
|
|
870
|
+
```text
|
|
871
|
+
--timeout int Command timeout in seconds (default 120)
|
|
872
|
+
--wait Block until command reaches terminal state
|
|
873
|
+
--silence float Silence threshold in seconds (server default: 5.0)
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
---
|
|
877
|
+
|
|
878
|
+
## Config
|
|
879
|
+
|
|
880
|
+
```bash
|
|
881
|
+
thrum config show # Show effective configuration
|
|
882
|
+
thrum config show --json
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
---
|
|
886
|
+
|
|
887
|
+
## Worktree Management
|
|
888
|
+
|
|
889
|
+
```bash
|
|
890
|
+
thrum worktree create <name> # Create worktree with thrum/beads setup
|
|
891
|
+
thrum worktree create <name> -b <branch> # Specify branch name
|
|
892
|
+
thrum worktree create <name> --base <ref> # Override base ref (default: cwd HEAD)
|
|
893
|
+
thrum worktree create <name> --detach # Detached HEAD worktree
|
|
894
|
+
thrum worktree create <name> \
|
|
895
|
+
--name <agent> --role <role> --module <mod> # Create worktree + register agent
|
|
896
|
+
thrum worktree setup <name> # Alias for worktree create
|
|
897
|
+
thrum worktree teardown <name> # Remove worktree, keep branch
|
|
898
|
+
thrum worktree teardown <name> --delete-branch # Also delete the worktree's branch
|
|
899
|
+
thrum worktree list # List worktrees with agent info
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
`worktree create` / `worktree setup` flags:
|
|
903
|
+
|
|
904
|
+
```text
|
|
905
|
+
--branch, -b string Branch name (default: feature/<name>)
|
|
906
|
+
--base string Base ref for the new branch (default: current HEAD of cwd)
|
|
907
|
+
--detach Create detached HEAD worktree
|
|
908
|
+
--name string Agent name (triggers quickstart when combined with --role + --module)
|
|
909
|
+
--role string Agent role
|
|
910
|
+
--module string Agent module
|
|
911
|
+
--intent string Initial work intent description
|
|
912
|
+
--runtime string Runtime preset: claude, codex, cursor, gemini, opencode, auggie
|
|
913
|
+
```
|
|
914
|
+
|
|
915
|
+
`worktree teardown` flags:
|
|
916
|
+
|
|
917
|
+
```text
|
|
918
|
+
--delete-branch Delete the worktree's branch after removing the worktree
|
|
919
|
+
(branch stays by default)
|
|
920
|
+
```
|
|
921
|
+
|
|
922
|
+
When `--name`, `--role`, and `--module` are all provided, a tmux session is
|
|
923
|
+
created with the worktree as cwd and quickstart runs inside the pane (PID
|
|
924
|
+
isolation). The agent identity is registered, but **the runtime is NOT started
|
|
925
|
+
yet** — follow up with `thrum tmux launch <name>` to start the agent. The output
|
|
926
|
+
explicitly shows the next-step launch command.
|
|
927
|
+
|
|
928
|
+
If the agent flags are omitted, the worktree is created with redirects only and
|
|
929
|
+
the output shows the full `tmux create` command needed to register an agent
|
|
930
|
+
later.
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## Monitor Jobs
|
|
935
|
+
|
|
936
|
+
Run a long-lived command, filter output through a regex, and deliver matching
|
|
937
|
+
lines as Thrum messages. Jobs persist across daemon restarts. Max 100
|
|
938
|
+
concurrent. The command must follow `--`.
|
|
939
|
+
|
|
940
|
+
```bash
|
|
941
|
+
thrum monitor start --name <n> --match <re> --to @agent -- <cmd> [args...]
|
|
942
|
+
thrum monitor start --name <n> --match <re> --to @agent \
|
|
943
|
+
--debounce 120s --env KEY=VALUE -- <cmd>
|
|
944
|
+
thrum monitor list # Running jobs only
|
|
945
|
+
thrum monitor list --all # Include stopped/dead (<1 week)
|
|
946
|
+
thrum monitor show <id|name> # Full detail (env values redacted)
|
|
947
|
+
thrum monitor stop <id|name> # SIGTERM → 5s → SIGKILL
|
|
948
|
+
thrum monitor logs <id|name> # Last 20 matched lines
|
|
949
|
+
thrum monitor logs <id|name> -n 50 # Last 50 matched lines
|
|
950
|
+
thrum monitor restart <id|name> # Restart dead/stopped monitor
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
Note: `monitor add` is retained as an alias for `monitor start`.
|
|
954
|
+
|
|
955
|
+
`monitor start` flags:
|
|
956
|
+
|
|
957
|
+
```text
|
|
958
|
+
--name string Unique monitor name (required)
|
|
959
|
+
--match string Regex pattern — matching lines trigger a message (required)
|
|
960
|
+
--to string Target agent or group, e.g. @coordinator (required)
|
|
961
|
+
--debounce duration Leading-edge debounce window, minimum 30s (default 60s)
|
|
962
|
+
--env strings Environment variable in KEY=VALUE form (repeatable)
|
|
963
|
+
--cwd string Working directory for the command (default: current dir)
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
`monitor list` flags:
|
|
967
|
+
|
|
968
|
+
```text
|
|
969
|
+
--all Include stopped/dead monitors younger than one week
|
|
970
|
+
```
|
|
971
|
+
|
|
972
|
+
`monitor logs` flags:
|
|
973
|
+
|
|
974
|
+
```text
|
|
975
|
+
-n, --limit int Max number of matches to return (default 20)
|
|
976
|
+
```
|
|
977
|
+
|
|
978
|
+
Key constraints: local Unix socket only, max line length 2KB (lines truncated),
|
|
979
|
+
leading-edge debounce (min 30s), auto-persists across daemon restart, sends a
|
|
980
|
+
notify-only message on child exit.
|
|
981
|
+
|
|
982
|
+
---
|
|
983
|
+
|
|
984
|
+
## Memory
|
|
985
|
+
|
|
986
|
+
### memory migrate-from-bd
|
|
987
|
+
|
|
988
|
+
One-shot migration utility that moves every `bd memories <prefix>` entry into a
|
|
989
|
+
v0.11 `thrum memory` record. Runs at v0.11 ship-day, BEFORE any rc.N tag is cut
|
|
990
|
+
— and, critically, **BEFORE any agent restarts or re-primes on the v0.11
|
|
991
|
+
binary**. The v0.11 role preambles load role-rules from `thrum memory`
|
|
992
|
+
(`thrum memory list --kind agent_rule --scope role`); if an agent re-primes
|
|
993
|
+
before this migration runs, it primes with EMPTY role-rule lists while the rules
|
|
994
|
+
still sit orphaned in beads (silent loss, no error). Confirm the run reports
|
|
995
|
+
MIGRATED > 0 before letting any agent reprime. If MIGRATED is 0, investigate the
|
|
996
|
+
logs before re-running (the run may have partially succeeded).
|
|
997
|
+
|
|
998
|
+
```bash
|
|
999
|
+
thrum memory migrate-from-bd [flags]
|
|
1000
|
+
```
|
|
1001
|
+
|
|
1002
|
+
Flags:
|
|
1003
|
+
|
|
1004
|
+
```text
|
|
1005
|
+
--dry-run Print what would be migrated; no writes
|
|
1006
|
+
(still requires daemon + LLM unless
|
|
1007
|
+
--no-llm-summaries is also set)
|
|
1008
|
+
--limit N Migrate only the first N entries (0 = no limit)
|
|
1009
|
+
--model <name> LLM chat model (default qwen3:30b-a3b-instruct-2507-q4_K_M)
|
|
1010
|
+
--endpoint <url> Override endpoint list (default reads OLLAMA_HOST_1/_2 / OLLAMA_HOSTS)
|
|
1011
|
+
--no-llm-summaries Skip LLM synthesis; write body_full only (MEM-010 hints fire per-entry)
|
|
1012
|
+
--rollback Reverse a migration via manifest
|
|
1013
|
+
--manifest <path> With --rollback: manifest path (default: latest in dev-docs/migrations/)
|
|
1014
|
+
--hard With --rollback: hard-purge instead of soft-delete
|
|
1015
|
+
--confirm-rollback "DELETE <n>" With --rollback: safety token; n must match manifest entry count
|
|
1016
|
+
--yes Skip the interactive confirmation prompt
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
Behavior:
|
|
1020
|
+
|
|
1021
|
+
- Idempotent: re-runs skip entries already carrying the
|
|
1022
|
+
`migrated-from-bd:<bd-key>` tag and record them as Skipped, not Migrated.
|
|
1023
|
+
- Migrated entries land as v0.11 memory records with `title=<bd-key>` and the
|
|
1024
|
+
idempotency tag. The bd-key classification table (D2 in the design doc) maps
|
|
1025
|
+
prefixes to kind/scope: `research-*` → research_note/agent, `<role>-rule-*` →
|
|
1026
|
+
agent_rule/role, `tmux-*` → stable_infra/project, `release-rule-*` →
|
|
1027
|
+
agent_rule/project, `self-*` → agent_rule/agent.
|
|
1028
|
+
- Outliers (entries that don't match any D2 pattern OR fail LLM synthesis after
|
|
1029
|
+
all retries) land in a sidecar JSON file in `dev-docs/migrations/` for manual
|
|
1030
|
+
operator review. The migration loop continues — single-entry failures never
|
|
1031
|
+
abort the run.
|
|
1032
|
+
- Artifacts under
|
|
1033
|
+
`dev-docs/migrations/<YYYY-MM-DDThhmmZ>-bd-to-thrum-migration*`: the manifest
|
|
1034
|
+
(bd-key → memory-id mapping, required for `--rollback`), the per-entry log,
|
|
1035
|
+
and a human-readable summary.md.
|
|
1036
|
+
|
|
1037
|
+
Rollback:
|
|
1038
|
+
|
|
1039
|
+
```bash
|
|
1040
|
+
# Default: pick the latest manifest in dev-docs/migrations/
|
|
1041
|
+
thrum memory migrate-from-bd --rollback --confirm-rollback "DELETE 53"
|
|
1042
|
+
|
|
1043
|
+
# Explicit manifest, hard purge:
|
|
1044
|
+
thrum memory migrate-from-bd --rollback \
|
|
1045
|
+
--manifest dev-docs/migrations/2026-05-26T1500Z-bd-to-thrum-migration-manifest.json \
|
|
1046
|
+
--hard --confirm-rollback "DELETE 53"
|
|
1047
|
+
```
|
|
1048
|
+
|
|
1049
|
+
The `--confirm-rollback` token must equal `DELETE <n>` where `<n>` is the exact
|
|
1050
|
+
number of entries in the manifest. Mismatch aborts before any writes. Hard purge
|
|
1051
|
+
additionally requires a per-entry `DELETE <id>` token per the standard
|
|
1052
|
+
`thrum memory delete --hard` semantics; the rollback flow synthesizes these
|
|
1053
|
+
automatically from the manifest.
|
|
1054
|
+
|
|
1055
|
+
---
|
|
1056
|
+
|
|
1057
|
+
## Utility
|
|
1058
|
+
|
|
1059
|
+
```bash
|
|
1060
|
+
thrum version # Show version, build hash, repo URL, docs URL
|
|
1061
|
+
thrum version --json
|
|
1062
|
+
thrum prime # Gather full session context for initialization
|
|
1063
|
+
thrum prime --json
|
|
1064
|
+
thrum overview # Combined status + team + inbox view
|
|
1065
|
+
thrum overview --json
|
|
1066
|
+
```
|