switchman-dev 0.1.3 → 0.1.5

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/README.md CHANGED
@@ -1,554 +1,152 @@
1
1
  # Switchman
2
2
 
3
- **Stop your AI agents from overwriting each other.**
3
+ **Run 10+ agents on one codebase. Safely.**
4
4
 
5
- When you run multiple Claude Code instances on the same repo, they have no idea what each other is doing. One agent edits a file while another rewrites it. Hours of work disappear at merge time.
5
+ Switchman acts like a project manager for your AI coding assistants. It hands out tasks, stops agents from editing the same file at the same time, and double-checks their work before saving.
6
6
 
7
- Switchman gives them a shared task queue and file locking so they stay on separate tracks and you stay in control.
7
+ When you run multiple agents on the same repo, they need shared coordination or they collide, duplicate work, and create risky merges. Switchman gives them leases, scoped ownership, merge gates, and landing workflows so they can move in parallel without stepping on each other.
8
8
 
9
- ---
9
+ In the docs, `workspace` means the folder each agent works in. Some commands still use the Git term `worktree`, because that is the underlying Git feature.
10
10
 
11
- ## Requirements
11
+ Questions, feedback, or testing Switchman with your team? Join the [Discord](https://discord.gg/pnT8BEC4D)
12
12
 
13
+ ## Install
14
+
15
+ Requirements:
13
16
  - Node.js 22.5+
14
17
  - Git 2.5+
15
18
 
16
- ---
17
-
18
- ## Install
19
-
20
19
  ```bash
21
20
  npm install -g @switchman-dev
22
21
  ```
23
22
 
24
- ---
23
+ ## Why Switchman?
25
24
 
26
- ## First successful run: 3 agents on one repo
25
+ Git worktrees, branches, and raw coding agents are useful, but they do not coordinate themselves.
27
26
 
28
- If you only try one thing, try this.
27
+ What it adds that plain Git does not:
28
+ - task assignment, so agents do not duplicate work
29
+ - file locking, so parallel edits do not quietly collide
30
+ - live status, so you can see what is running, blocked, or stale
31
+ - stale-work recovery, so abandoned work does not clog the repo
32
+ - governed landing, so finished work reaches `main` one item at a time with retries and checks
29
33
 
30
- ### 1. Create a test repo and three agent worktrees
34
+ In short:
35
+ - Git gives you branches
36
+ - Switchman gives you coordination
31
37
 
32
- ```bash
33
- cd my-project
34
- switchman setup --agents 3
35
- ```
36
-
37
- This gives you:
38
- - one shared Switchman database in `.switchman/`
39
- - three linked worktrees
40
- - local `.mcp.json` files so Claude Code can discover Switchman automatically
38
+ ## Quickstart
41
39
 
42
- ### 2. Add three small, separate tasks
40
+ Recommended first run:
41
+ - editor: Claude Code
42
+ - goal: feel safe parallel agent work in under 10 minutes
43
+ - proof: status stays clear, agents stay separated, and the repo gate passes
43
44
 
44
45
  ```bash
46
+ cd my-project
47
+ switchman setup --agents 5
48
+ switchman verify-setup
49
+
45
50
  switchman task add "Implement auth helper" --priority 9
46
51
  switchman task add "Add auth tests" --priority 8
47
52
  switchman task add "Update auth docs" --priority 7
48
- ```
49
-
50
- Use real tasks from your repo. If a task looks broad enough to fan out across many files or shared areas, Switchman will warn and suggest using `switchman pipeline start` instead.
51
-
52
- ### 3. Open one Claude Code window per worktree
53
-
54
- Open each generated worktree folder in its own Claude Code window.
55
-
56
- If Claude Code sees the local `.mcp.json`, each agent can use Switchman without extra setup.
57
-
58
- ### 4. Tell each agent to work through Switchman
59
-
60
- Use this exact instruction:
61
-
62
- ```text
63
- Use Switchman for all task coordination in this repo.
64
-
65
- 1. Run `switchman lease next --json` to get your task and lease.
66
- 2. Before editing anything, run `switchman claim <taskId> <worktree> <files...>`.
67
- 3. Only edit files you have claimed.
68
- 4. If a claim is blocked, do not use --force. Pick a different file or different approach.
69
- 5. When finished, run `switchman task done <taskId>`.
70
-
71
- Do not read or write `.switchman/switchman.db` directly.
72
- Do not bypass Switchman for file coordination.
73
- ```
74
-
75
- ### 5. Watch the run
76
-
77
- In the repo root:
78
-
79
- ```bash
80
- switchman status
81
- switchman scan
82
- ```
83
-
84
- What a good first run looks like:
85
- - all three tasks end in `done`
86
- - `switchman scan` reports no conflicts
87
- - `switchman gate ci` passes
88
-
89
- ### 6. If you want a built-in local demo instead
90
-
91
- ```bash
92
- bash examples/setup.sh
93
- bash examples/walkthrough.sh
94
- ```
95
-
96
- That runs the included 3-agent demo against the example API in [examples/README.md](/Users/ned/Documents/GitHub/switchman/examples/README.md).
97
-
98
- ---
99
-
100
- ## Pick your setup
101
-
102
- ### Option A — Claude Code (recommended)
103
-
104
- Claude Code has a native Switchman integration via MCP. Your agents coordinate automatically — no manual CLI calls, no extra prompting.
105
-
106
- **Step 1 — Create your agent workspaces**
107
-
108
- ```bash
109
- cd my-project
110
- switchman setup --agents 3
111
- ```
112
-
113
- That's it. Switchman creates three isolated workspaces, one per agent, and initialises the database. You'll see the folder paths printed — you'll need them in step 4.
114
-
115
- **Step 2 — Add Switchman to Claude Code**
116
-
117
- `switchman setup` now writes a project-local `.mcp.json` into the repo root and each generated worktree, so Claude Code can discover Switchman automatically when you open those folders.
118
-
119
- If you prefer a global fallback, add this to `~/.claude/claude_desktop_config.json`:
120
-
121
- ```json
122
- {
123
- "mcpServers": {
124
- "switchman": {
125
- "command": "switchman-mcp",
126
- "args": []
127
- }
128
- }
129
- }
130
- ```
131
-
132
- Then restart Claude Code. The project-local `.mcp.json` is the preferred path because it travels with the repo and the generated worktrees.
133
-
134
- **Step 3 — Copy CLAUDE.md into your repo root**
135
-
136
- ```bash
137
- curl -O https://raw.githubusercontent.com/switchman-dev/switchman/main/CLAUDE.md
138
- ```
139
-
140
- This tells your agents how to use Switchman. Without it they may bypass Switchman entirely, so keep it in the repo root and do not let agents talk to `.switchman/switchman.db` directly.
141
-
142
- **Step 4 — Add your tasks**
143
-
144
- ```bash
145
- switchman task add "Fix the login bug" --priority 8
146
- switchman task add "Add rate limiting" --priority 6
147
- switchman task add "Update README" --priority 2
148
- ```
149
-
150
- **Step 5 — Open Claude Code in each workspace**
151
-
152
- Open a separate Claude Code window in each folder that `switchman setup` created. Each agent should automatically see the local MCP config, pick up a task, lock the files it needs, and release them when it's done.
153
-
154
- **Step 6 — Check before merging**
155
-
156
- ```bash
157
- switchman scan
158
- ```
159
-
160
- ---
161
-
162
- ### Option B — Any other agent (Cursor, Windsurf, Aider, etc.)
163
-
164
- Switchman works as a CLI tool with any agent that can run terminal commands. The coordination isn't automatic — you'll need to prompt your agents to use Switchman commands.
165
-
166
- **Step 1 — Create your agent workspaces**
167
-
168
- ```bash
169
- cd my-project
170
- switchman setup --agents 3
171
- ```
172
-
173
- **Step 2 — Add your tasks**
174
-
175
- ```bash
176
- switchman task add "Fix the login bug" --priority 8
177
- switchman task add "Add rate limiting" --priority 6
178
- ```
179
-
180
- **Step 3 — Give each agent this prompt**
181
-
182
- Paste this into your agent at the start of each session:
183
53
 
184
- ```
185
- Before starting any work:
186
- 1. Run `switchman lease next --json` to get your assigned task and lease
187
- 2. Run `switchman claim <taskId> <worktreeName> <files...>` to lock the files you'll edit
188
- - If a file is already claimed, pick a different approach or different files
189
- 3. If the task runs for a while, refresh the lease with `switchman lease heartbeat <leaseId>`
190
- 4. When finished, run `switchman task done <taskId>`
191
-
192
- Never edit a file you haven't claimed. If a claim fails, do not use --force.
193
- ```
194
-
195
- **Step 4 — Check before merging**
196
-
197
- ```bash
198
- switchman scan
199
- ```
200
-
201
- ---
202
-
203
- ## What your agents will see
204
-
205
- Here's what a normal session looks like with Switchman running:
206
-
207
- ```
208
- # Agent 1 picks up a task
209
- switchman lease next
210
- ✓ Lease acquired: "Add rate limiting to all routes" [task-abc-123 / lease-xyz-123]
211
-
212
- # Agent 1 locks its files
213
- switchman claim task-abc-123 agent1 src/middleware/auth.js src/server.js
214
- ✓ 2 files locked — no conflicts
215
-
216
- # Agent 2 picks up a different task
217
- switchman lease next
218
- ✓ Lease acquired: "Add validation to POST /tasks" [task-def-456 / lease-xyz-456]
219
-
220
- # Agent 2 tries to claim a file already locked by Agent 1
221
- switchman claim task-def-456 agent2 src/middleware/auth.js
222
- ⚠ Conflict: auth.js is locked by agent1
223
-
224
- # Agent 2 claims different files instead
225
- switchman claim task-def-456 agent2 src/middleware/validate.js src/routes/tasks.js
226
- ✓ 2 files locked — no conflicts
227
-
228
- # Both agents working, zero collisions
229
54
  switchman status
230
- agent1 → "Add rate limiting" editing auth.js, server.js
231
- agent2 → "Add validation" editing validate.js, tasks.js
232
- ```
233
-
234
- ---
235
-
236
- ## If something goes wrong
237
-
238
- Start here before digging into the internals.
239
-
240
- ### `switchman status`
241
-
242
- Use this first when a run feels stuck.
243
-
244
- It answers:
245
- - what is running
246
- - what is blocked
247
- - what failed
248
- - what needs attention next
249
-
250
- ### `switchman scan`
251
-
252
- Use this before merge, or any time you suspect agents overlapped.
253
-
254
- It tells you:
255
- - changed files per worktree
256
- - unclaimed or unmanaged changes
257
- - conflict signals across worktrees
258
-
259
- ### `switchman gate ci`
260
-
261
- Use this as the final repo-level check.
262
-
263
- ```bash
55
+ switchman status --watch
264
56
  switchman gate ci
265
57
  ```
266
58
 
267
- If it fails, Switchman has detected unmanaged changes, stale state, or merge-governance problems.
268
-
269
- ### Common recovery cases
270
-
271
- `A file claim is blocked`
272
- - another task already owns that file
273
- - do not use `--force`
274
- - choose a different file or let the other task finish first
275
-
276
- `A task is still in progress but the agent is gone`
277
- - inspect with `switchman status`
278
- - if the lease is stale, run:
279
-
280
- ```bash
281
- switchman lease reap
282
- ```
283
-
284
- `A pipeline task failed`
285
- - run:
286
-
287
- ```bash
288
- switchman pipeline status <pipelineId>
289
- ```
290
-
291
- Switchman now prints:
292
- - `why:` what failed
293
- - `next:` what to do next
294
-
295
- ---
296
-
297
- ## Commands
298
-
299
- ### `switchman setup`
300
- One-command setup — creates agent workspaces and initialises the database.
301
- - `--agents 3` — number of workspaces to create (default: 3, max: 10)
302
- - `--prefix switchman` — branch name prefix (default: switchman)
303
- - Writes `.mcp.json` to the repo root and each generated worktree so Claude Code can attach the Switchman MCP server automatically
304
-
305
- ### `switchman init`
306
- Initialise in the current git repo without creating worktrees. Creates `.switchman/switchman.db` and auto-detects existing worktrees.
307
-
308
- ### `switchman task add <title>`
309
- Add a task to the queue.
310
- - `--priority 1-10` (default: 5)
311
- - `--description "..."`
312
-
313
- ### `switchman task list`
314
- List all tasks. Filter with `--status pending|in_progress|done|failed`.
315
-
316
- ### `switchman task next`
317
- Get and assign the next pending task. This is a compatibility shim over the lease workflow. Use `--json` for agent automation.
318
- - `--worktree <name>` — worktree to assign to (defaults to current folder name)
319
- - `--agent <name>` — agent identifier for logging
320
-
321
- ### `switchman lease next`
322
- Acquire the next pending task as a first-class lease. Use `--json` for agent automation.
323
- - `--worktree <name>` — worktree to assign to (defaults to current folder name)
324
- - `--agent <name>` — agent identifier for logging
325
-
326
- ### `switchman lease list`
327
- List active and historical leases. Filter with `--status active|completed|failed|expired`.
328
-
329
- ### `switchman lease heartbeat <leaseId>`
330
- Refresh the heartbeat timestamp for a long-running lease so it does not get treated as stale.
331
-
332
- ### `switchman lease reap`
333
- Expire stale leases, release their claims, and return their tasks to `pending`.
334
- - `--stale-after-minutes <n>` — staleness threshold (default: 15)
335
-
336
- ### `switchman task done <taskId>`
337
- Mark a task complete and automatically release all file claims.
338
- When the task has an active lease, Switchman finalises the execution through that lease so provenance stays tied to the live session.
339
-
340
- ### `switchman task fail <taskId>`
341
- Mark a task failed and automatically release all file claims.
342
- When the task has an active lease, Switchman records the failure against that lease so execution history stays lease-first.
343
-
344
- ### `switchman claim <taskId> <worktree> [files...]`
345
- Lock files before editing. Warns immediately if any file is already claimed by another agent.
346
-
347
- ### `switchman release <taskId>`
348
- Release all file claims for a task.
349
-
350
- ### `switchman scan`
351
- Check all worktrees for conflicts — both uncommitted file overlaps and branch-level merge conflicts. Run this before merging.
352
- By default, common generated paths such as `node_modules/`, `dist/`, `build/`, and `coverage/` are ignored.
353
-
354
- ### `switchman status`
355
- Full overview: task counts, active leases, stale leases, locked files, a quick conflict scan, and readable failure explanations.
356
-
357
- ### `switchman worktree list`
358
- List all git worktrees with their registered agents and status.
359
-
360
- ### `switchman worktree sync`
361
- Re-sync git worktrees into the Switchman database (useful if you add worktrees after init).
362
-
363
- ---
364
-
365
- ## Pipelines and PRs
366
-
367
- Switchman can now take a backlog item through planning, governed execution, review, and PR handoff.
368
-
369
- ### Happy-path pipeline flow
370
-
371
- ```bash
372
- switchman pipeline start "Harden auth API permissions" \
373
- --description "Update login permissions for the public API and add migration checks"
374
-
375
- switchman pipeline exec pipe-123 "/path/to/your-agent-command"
376
- switchman pipeline status pipe-123
377
- switchman pipeline pr pipe-123
378
- switchman pipeline publish pipe-123 --base main --draft
379
- ```
380
-
381
- The intended operator loop is:
382
- 1. start the pipeline
383
- 2. run it
384
- 3. inspect `pipeline status` if anything blocks
385
- 4. review the PR artifact or publish the PR
59
+ What `switchman setup` gives you:
60
+ - one shared Switchman database in `.switchman/`
61
+ - linked workspaces for each agent
62
+ - local MCP config for Claude Code and Cursor
386
63
 
387
- ### Create a pipeline from one issue
64
+ Fastest path to success:
65
+ 1. Use Claude Code for the first run.
66
+ 2. Run `switchman verify-setup` once so editor wiring is confirmed before you start.
67
+ 3. Open one Claude Code window per generated workspace.
68
+ 4. Let each agent pick up one clearly separate task.
69
+ 5. Keep `switchman status --watch` open in another terminal.
70
+ 6. Run `switchman gate ci` when the tasks finish.
388
71
 
389
- ```bash
390
- switchman pipeline start "Harden auth API permissions" \
391
- --description "Update login permissions for the public API and add migration checks"
392
- ```
72
+ If you want the recommended editor setup guide, start here:
73
+ - [Claude Code setup](docs/setup-claude-code.md)
393
74
 
394
- This creates structured subtasks with task specs, dependencies, and suggested worktrees.
75
+ If you want a guided demo, see [examples/README.md](examples/README.md).
395
76
 
396
- ### Run the pipeline
77
+ ## What good looks like
397
78
 
398
- ```bash
399
- switchman pipeline exec pipe-123 "/path/to/your-agent-command"
400
- ```
79
+ You know the first run is working when:
80
+ - agents claim different files instead of stepping on each other
81
+ - `switchman status` stays calm and readable instead of filling with blocked work
82
+ - the landing queue moves finished work safely back toward `main`
83
+ - `switchman gate ci` passes cleanly
401
84
 
402
- This dispatches dependency-ready tasks, launches agents with `SWITCHMAN_*` task context, applies retries/timeouts from the task spec, and runs review follow-ups until the pipeline is ready or blocked.
85
+ That is the moment Switchman should feel different from “just using a few branches.”
403
86
 
404
- ### Generate a reviewer-facing PR summary
87
+ ## Why not just use branches or worktrees?
405
88
 
406
- ```bash
407
- switchman pipeline pr pipe-123
408
- switchman pipeline pr pipe-123 --json
409
- ```
89
+ Because branches and worktrees solve isolation, not coordination.
410
90
 
411
- Use this to inspect the current PR-ready summary, gate results, risk notes, and provenance.
412
- Completed work provenance now includes the lease that executed the work, not just the task and worktree.
91
+ They do not tell you:
92
+ - which task each agent should take next
93
+ - who already owns a file
94
+ - whether a session is stale
95
+ - whether finished work is still safe to land
413
96
 
414
- ### Export a PR bundle
97
+ Switchman is for the point where “we can manage this by hand” stops being true.
415
98
 
416
- ```bash
417
- switchman pipeline bundle pipe-123 .switchman/pr-bundles/auth-hardening
418
- ```
99
+ ## Choose your setup
419
100
 
420
- This writes:
101
+ Pick the guide that matches how you work:
421
102
 
422
- - `pr-summary.json`
423
- - `pr-summary.md`
424
- - `pr-body.md`
103
+ | Setup | Guide |
104
+ |------|------|
105
+ | Claude Code | [Claude Code setup](docs/setup-claude-code.md) |
106
+ | Cursor | [Cursor setup](docs/setup-cursor.md) |
107
+ | Windsurf | [Windsurf setup](docs/setup-windsurf.md) |
108
+ | Any CLI-driven agent | [CLI agent setup](docs/setup-cli-agents.md) |
425
109
 
426
- The exported reviewer bundle includes lease-aware provenance, so a reviewer can see which execution session produced each completed task.
110
+ ## If something feels stuck
427
111
 
428
- ### Publish a GitHub PR
112
+ Use `switchman status` first.
429
113
 
430
- ```bash
431
- switchman pipeline publish pipe-123 --base main --draft
432
- ```
114
+ It is the main terminal dashboard for the repo:
115
+ - top health banner and compact counts
116
+ - boxed sections for `Running`, `Blocked`, `Warnings`, `Queue`, and `Next action`
117
+ - exact follow-up commands when something needs attention
118
+ - `--watch` mode for a live terminal view
433
119
 
434
- This uses `gh pr create` with the generated PR title and body. Requirements:
435
-
436
- - GitHub CLI (`gh`) installed
437
- - `gh auth login` already completed
438
- - the pipeline worktree branch pushed or otherwise available as the PR head branch
439
-
440
- ---
441
-
442
- ## CI and GitHub Actions
443
-
444
- Switchman can publish CI-friendly gate output and install a ready-to-run GitHub Actions workflow.
445
-
446
- ### Run the repo gate in CI
120
+ Useful commands:
447
121
 
448
122
  ```bash
123
+ switchman status
124
+ switchman status --watch
125
+ switchman status --json
126
+ switchman scan
449
127
  switchman gate ci
450
- switchman gate ci --json
451
- switchman gate ci --github
452
- ```
453
-
454
- `switchman gate ci` fails non-zero when the repo contains unmanaged changes, stale compliance problems, or merge-governance issues.
455
-
456
- When run under GitHub Actions with `--github`, Switchman writes:
457
-
458
- - a step summary markdown report
459
- - `GITHUB_OUTPUT` values such as `switchman_ok=true|false`
460
-
461
- You can also point these explicitly:
462
-
463
- ```bash
464
- switchman gate ci \
465
- --github-step-summary /path/to/summary.md \
466
- --github-output /path/to/output.txt
467
128
  ```
468
129
 
469
- ### Install the GitHub Actions workflow
470
-
471
- ```bash
472
- switchman gate install-ci
473
- ```
474
-
475
- This writes `.github/workflows/switchman-gate.yml`, which runs the Switchman CI gate on pushes and pull requests.
476
-
477
- ---
478
-
479
- ## Tamper-evident audit trail
480
-
481
- Switchman now keeps a signed audit trail for governed work.
482
-
483
- Every audit event is:
484
- - appended with a monotonic sequence number
485
- - chained to the previous event with `prev_hash`
486
- - hashed into its own `entry_hash`
487
- - signed with a per-project audit key stored at `.switchman/audit.key`
488
-
489
- That means Switchman can detect if someone edits stored audit history after the fact.
490
-
491
- ### Verify the audit trail
492
-
493
- ```bash
494
- switchman audit verify
495
- switchman audit verify --json
496
- ```
497
-
498
- Use this when you want proof that the recorded history still matches the project audit key and the stored event chain.
499
-
500
- What a successful verification means:
501
- - every event is still in the expected sequence
502
- - every `prev_hash` still matches the prior event
503
- - every event payload still matches its stored `entry_hash`
504
- - every signature still matches the project audit key
505
-
506
- If verification fails, Switchman exits non-zero and reports the reason, for example:
507
- - `sequence_gap`
508
- - `prev_hash_mismatch`
509
- - `entry_hash_mismatch`
510
- - `signature_mismatch`
511
-
512
- This is different from normal CI:
513
- - `switchman gate ci` answers whether the repo is safe and governed right now
514
- - `switchman audit verify` answers whether the recorded audit history has been tampered with
515
-
516
- ---
517
-
518
- ## MCP tools (Claude Code)
519
-
520
- | Tool | What it does |
521
- |------|-------------|
522
- | `switchman_task_next` | Get + assign the next pending task |
523
- | `switchman_task_add` | Add a new task to the queue |
524
- | `switchman_task_claim` | Claim files before editing (conflict check) |
525
- | `switchman_task_done` | Mark task complete, release file claims |
526
- | `switchman_task_fail` | Mark task failed, release file claims |
527
- | `switchman_lease_heartbeat` | Refresh a long-running lease heartbeat |
528
- | `switchman_scan` | Scan all worktrees for conflicts |
529
- | `switchman_status` | Full system overview |
530
-
531
- ---
532
-
533
- ## Roadmap
534
-
535
- - [ ] Merge queue — serialize worktree→main merges with auto-retry
536
- - [ ] Automatic stale-lease policies — configurable heartbeat/reap behaviour
537
- - [ ] Cursor and Windsurf native MCP integration
538
- - [ ] Web dashboard
539
- - [ ] `brew install switchman`
130
+ More help:
131
+ - [Status and recovery](docs/status-and-recovery.md)
132
+ - [Merge queue](docs/merge-queue.md)
133
+ - [Stale lease policy](docs/stale-lease-policy.md)
540
134
 
541
- ---
135
+ ## More docs
542
136
 
543
- ## Feedback & contact
137
+ - [Merge queue](docs/merge-queue.md)
138
+ - [Pipelines and PRs](docs/pipelines.md)
139
+ - [Stale lease policy](docs/stale-lease-policy.md)
140
+ - [MCP tools](docs/mcp-tools.md)
141
+ - [Command reference](docs/command-reference.md)
544
142
 
545
- Building this in public — if you're running parallel agents and hit something broken or missing, I'd love to hear about it.
143
+ ## Feedback
546
144
 
547
- - **GitHub Issues** [github.com/switchman-dev/switchman/issues](https://github.com/switchman-dev/switchman/issues)
548
- - **Email** — [hello@switchman.dev](mailto:hello@switchman.dev)
145
+ Building this in public. If you're running parallel agents and hit something broken or missing, I’d love to hear about it.
549
146
 
550
- ---
147
+ - GitHub Issues: [github.com/switchman-dev/switchman/issues](https://github.com/switchman-dev/switchman/issues)
148
+ - Email: [hello@switchman.dev](mailto:hello@switchman.dev)
551
149
 
552
150
  ## License
553
151
 
554
- MIT — free to use, modify, and distribute.
152
+ MIT
@@ -35,13 +35,31 @@ npm install -g . # from the switchman repo root
35
35
  Then from the switchman repo root:
36
36
  ```bash
37
37
  bash examples/setup.sh
38
+ bash examples/demo.sh
38
39
  bash examples/walkthrough.sh
39
40
  ```
40
41
 
41
42
  If you want the shortest path:
42
43
  - `setup.sh` creates the repo, worktrees, and seed tasks
44
+ - `demo.sh` is the 45-90 second recordable version
43
45
  - `walkthrough.sh` shows one complete 3-agent happy path, including a real claim conflict
44
46
 
47
+ ## Recordable demo
48
+
49
+ If you want the short “wow” version for recording or showing the product quickly:
50
+
51
+ ```bash
52
+ bash examples/setup.sh
53
+ bash examples/demo.sh
54
+ ```
55
+
56
+ What it shows:
57
+ - a clean repo dashboard
58
+ - one agent locking files safely
59
+ - another agent getting blocked from overlapping work
60
+ - both branches landing through the queue
61
+ - a clean `switchman gate ci` at the end
62
+
45
63
  ## What the walkthrough shows
46
64
 
47
65
  1. **3 worktrees created** — simulating 3 parallel Claude Code instances each on their own branch