projmux 0.15.3 → 0.16.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/docs/cli.md CHANGED
@@ -39,7 +39,7 @@ Root parser bridges outside the route graph are censused from their parser token
39
39
 
40
40
  Every route declares one allowed-effect record over seven independent resource axes. A pipe separates conditional success outcomes; preflight refusal remains zero-effect. `domain-effect=null` means the route has no typed extension beyond this resource tuple.
41
41
 
42
- The machine-readable manifest contains 191 route-effect records, including hidden plumbing that the public route sections omit.
42
+ The machine-readable manifest contains 194 route-effect records, including hidden plumbing that the public route sections omit.
43
43
 
44
44
  | Axis | Closed vocabulary |
45
45
  | --- | --- |
@@ -63,7 +63,7 @@ projmux <command> [args...]
63
63
  | [`projmux agent`](#projmux-agent) | canonical | Manage Agent state, messages, waits, capabilities, integrations, and account usage |
64
64
  | [`projmux attention`](#projmux-attention) | canonical | View and manage live tmux pane attention state |
65
65
  | [`projmux attach`](#projmux-attach) | canonical | Enter a Project runtime from outside tmux |
66
- | [`projmux config`](#projmux-config) | canonical | Edit AI split-mode settings; render or apply generated tmux configuration |
66
+ | [`projmux config`](#projmux-config) | canonical | Edit AI split-mode and enabled-provider settings; render or apply generated tmux configuration |
67
67
  | [`projmux create`](#projmux-create) | canonical | Create Projmux resources |
68
68
  | [`projmux delete`](#projmux-delete) | canonical | Delete Projmux resources with an explicit cascade plan |
69
69
  | [`projmux describe`](#projmux-describe) | canonical | Describe one Projmux resource |
@@ -72,16 +72,17 @@ projmux <command> [args...]
72
72
  | [`projmux focus`](#projmux-focus) | canonical | Move the current client to a live resource |
73
73
  | [`projmux get`](#projmux-get) | canonical | Read Projmux resources by selector |
74
74
  | [`projmux hook`](#projmux-hook) | canonical | List, edit, validate, and trust lifecycle hook config |
75
+ | [`projmux label`](#projmux-label) | canonical | Set or remove Projmux resource metadata.labels after creation |
75
76
  | [`projmux notification`](#projmux-notification) | canonical | Manage pending notification workflow state |
76
77
  | [`projmux open`](#projmux-open) | canonical | Open a Project runtime and move the current client to it |
78
+ | [`projmux persona`](#projmux-persona) | canonical | List, show, edit, set, and delete Agent persona files |
77
79
  | [`projmux pin`](#projmux-pin) | canonical | Manage pinned project directories |
78
- | [`projmux prune`](#projmux-prune) | canonical | Prune stale Projects, Agents, and snapshots |
80
+ | [`projmux prune`](#projmux-prune) | canonical | Prune stale Projects and Agents |
79
81
  | [`projmux quit`](#projmux-quit) | shortcut | Quit the app-owned projmux tmux runtime |
80
82
  | [`projmux reconcile`](#projmux-reconcile) | canonical | Preview or repair Registry and exact tmux resource drift |
81
83
  | [`projmux rebind`](#projmux-rebind) | canonical | Rebind a Project to a new absolute root without moving files |
82
84
  | [`projmux rename`](#projmux-rename) | canonical | Rename a Projmux resource metadata.name |
83
85
  | [`projmux resources`](#projmux-resources) | shortcut | Inspect live Project, Window, and Pane CPU/RSS attribution |
84
- | [`projmux restore`](#projmux-restore) | canonical | Project a saved snapshot into one exact closed Project desired state |
85
86
  | [`projmux runtime`](#projmux-runtime) | canonical | Manage the live and ephemeral tmux runtime inventory |
86
87
  | [`projmux settings`](#projmux-settings) | shortcut | Configure projmux |
87
88
  | [`projmux setup`](#projmux-setup) | canonical | Probe terminal keys or remediate them with setup terminal |
@@ -118,22 +119,23 @@ projmux agent status [get [<agent-ref>] | set <unknown|idle|in_progress|approval
118
119
  projmux agent topic get|clear [<agent-ref>] [--agent <ref>]
119
120
  projmux agent topic set <text> [<agent-ref>] [--agent <ref>]
120
121
  projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
122
+ projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
123
+ projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
121
124
  projmux agent turn start|steer <agent-ref> -- <text>
122
125
  projmux agent turn interrupt <agent-ref>
123
126
  projmux agent approval review <agent-ref> [--request <normalized-id>]
124
127
  projmux agent review [<agent-ref>] [--agent <ref>] [--base <branch> | --commit <sha> | --instructions <text>]
125
128
  projmux agent integrate <codex|claude|antigravity|tmux-bell> [--remove] [--dry-run]
126
- projmux agent usage [--model <codex|claude|antigravity|all>] [--window <name>] [--json] [--force]
127
- projmux agent app-server upgrade qualify --receipt <absolute-json>
128
- projmux agent app-server upgrade plan|apply --request <absolute-json>
129
- projmux agent app-server upgrade resume|abort --operation <ref>
130
- projmux agent app-server handover plan|apply --request <absolute-json>
131
- projmux agent app-server handover resume|abort --operation <ref>
129
+ projmux agent usage [--model <codex|claude|all>] [--window <name>] [--json] [--force]
132
130
  projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json]
133
131
  projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
134
132
  projmux agent message status <message-ref> [-o json]
135
133
  projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
136
134
  projmux agent wait <agent-ref> [--until idle] [--timeout <duration>] [-o json]
135
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
136
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
137
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
138
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
137
139
  ```
138
140
 
139
141
  Subcommands:
@@ -143,17 +145,18 @@ Subcommands:
143
145
  | [`projmux agent status`](#projmux-agent-status) | Read or set semantic Agent interaction independently of lifecycle |
144
146
  | [`projmux agent topic`](#projmux-agent-topic) | Read, set, or clear one exact Agent topic annotation |
145
147
  | [`projmux agent resume`](#projmux-agent-resume) | Rebind an Offline or Failed Agent detached on its Window's exact shell or Agent anchor |
148
+ | [`projmux agent persona`](#projmux-agent-persona) | Attach or detach a persona on one exact Claude Agent and resume it on the same conversation |
146
149
  | [`projmux agent turn`](#projmux-agent-turn) | Send, steer, or interrupt one exact native Codex turn |
147
150
  | [`projmux agent approval`](#projmux-agent-approval) | Review one exact pending native Codex approval |
148
151
  | [`projmux agent review`](#projmux-agent-review) | Start a native review on an exact-bound Codex Agent |
149
152
  | [`projmux agent integrate`](#projmux-agent-integrate) | Install, remove, or preview provider hooks and tmux-bell integration |
150
153
  | [`projmux agent usage`](#projmux-agent-usage) | Read provider account usage quota snapshots |
151
- | [`projmux agent app-server`](#projmux-agent-app-server) | Manage explicitly requested private Codex app-server generation operations |
152
154
  | [`projmux agent capabilities`](#projmux-agent-capabilities) | Read static provider support or one exact Agent's Registry-backed runtime eligibility |
153
155
  | [`projmux agent message`](#projmux-agent-message) | Exchange bounded untrusted coordination messages; --source selects a source Agent anchor, not caller authentication (default: active Pane) |
154
156
  | [`projmux agent wait`](#projmux-agent-wait) | Wait read-only for one exact Agent's Registry-backed idle observation |
157
+ | [`projmux agent question`](#projmux-agent-question) | Answer one exact opted-in Claude Agent's AskUserQuestion prompts from the command line |
155
158
 
156
- Canonical spelling: `projmux agent status`, `projmux agent topic`, `projmux agent resume`, `projmux agent turn start`, `projmux agent turn steer`, `projmux agent turn interrupt`, `projmux agent approval review`, `projmux agent review`, `projmux agent integrate`, `projmux agent usage`, `projmux agent app-server upgrade qualify`, `projmux agent app-server upgrade plan`, `projmux agent app-server upgrade apply`, `projmux agent app-server upgrade resume`, `projmux agent app-server upgrade abort`, `projmux agent app-server handover plan`, `projmux agent app-server handover apply`, `projmux agent app-server handover resume`, `projmux agent app-server handover abort`, `projmux agent capabilities`, `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`, `projmux agent wait`
159
+ Canonical spelling: `projmux agent status`, `projmux agent topic`, `projmux agent resume`, `projmux agent persona attach`, `projmux agent persona detach`, `projmux agent turn start`, `projmux agent turn steer`, `projmux agent turn interrupt`, `projmux agent approval review`, `projmux agent review`, `projmux agent integrate`, `projmux agent usage`, `projmux agent capabilities`, `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`, `projmux agent wait`, `projmux agent question enable`, `projmux agent question disable`, `projmux agent question list`, `projmux agent question answer`
157
160
 
158
161
  ### `projmux agent status`
159
162
 
@@ -219,6 +222,83 @@ Allowed effects:
219
222
  projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
220
223
  ```
221
224
 
225
+ ### `projmux agent persona`
226
+
227
+ Attach or detach a persona on one exact Claude Agent and resume it on the same conversation
228
+
229
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
230
+
231
+ Allowed effects:
232
+
233
+ - `identity=unchanged`
234
+ - `address=unchanged`
235
+ - `topology=unchanged`
236
+ - `desired-state=unchanged`
237
+ - `runtime=unchanged`
238
+ - `focus=unchanged`
239
+ - `cardinality=exact-one`
240
+ - `domain-effect=null`
241
+
242
+ ```
243
+ projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
244
+ projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
245
+ ```
246
+
247
+ Subcommands:
248
+
249
+ | Route | Summary |
250
+ | --- | --- |
251
+ | [`projmux agent persona attach`](#projmux-agent-persona-attach) | Give one exact Claude Agent a persona and restart it on the same conversation |
252
+ | [`projmux agent persona detach`](#projmux-agent-persona-detach) | Take the persona off one exact Claude Agent and restart it on the same conversation |
253
+
254
+ Canonical spelling: `projmux agent persona attach`, `projmux agent persona detach`
255
+
256
+ #### `projmux agent persona attach`
257
+
258
+ Give one exact Claude Agent a persona and restart it on the same conversation
259
+
260
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
261
+
262
+ Allowed effects:
263
+
264
+ - `identity=unchanged|reused`
265
+ - `address=unchanged`
266
+ - `topology=unchanged|replaced`
267
+ - `desired-state=unchanged|replaced`
268
+ - `runtime=unchanged|materialized`
269
+ - `focus=unchanged`
270
+ - `cardinality=exact-one`
271
+ - `domain-effect=null`
272
+
273
+ ```
274
+ projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
275
+ ```
276
+
277
+ Output modes (`-o`): `json`
278
+
279
+ #### `projmux agent persona detach`
280
+
281
+ Take the persona off one exact Claude Agent and restart it on the same conversation
282
+
283
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
284
+
285
+ Allowed effects:
286
+
287
+ - `identity=unchanged|reused`
288
+ - `address=unchanged`
289
+ - `topology=unchanged|replaced`
290
+ - `desired-state=unchanged|replaced`
291
+ - `runtime=unchanged|materialized`
292
+ - `focus=unchanged`
293
+ - `cardinality=exact-one`
294
+ - `domain-effect=null`
295
+
296
+ ```
297
+ projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
298
+ ```
299
+
300
+ Output modes (`-o`): `json`
301
+
222
302
  ### `projmux agent turn`
223
303
 
224
304
  Send, steer, or interrupt one exact native Codex turn
@@ -424,14 +504,14 @@ Allowed effects:
424
504
  - `domain-effect=null`
425
505
 
426
506
  ```
427
- projmux agent usage [--model <codex|claude|antigravity|all>] [--window <name>] [--json] [--force]
507
+ projmux agent usage [--model <codex|claude|all>] [--window <name>] [--json] [--force]
428
508
  ```
429
509
 
430
- ### `projmux agent app-server`
510
+ ### `projmux agent capabilities`
431
511
 
432
- Manage explicitly requested private Codex app-server generation operations
512
+ Read static provider support or one exact Agent's Registry-backed runtime eligibility
433
513
 
434
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
514
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
435
515
 
436
516
  Allowed effects:
437
517
 
@@ -441,25 +521,18 @@ Allowed effects:
441
521
  - `desired-state=unchanged`
442
522
  - `runtime=unchanged`
443
523
  - `focus=unchanged`
444
- - `cardinality=unchanged`
524
+ - `cardinality=exact-one`
445
525
  - `domain-effect=null`
446
526
 
447
527
  ```
448
- projmux agent app-server
528
+ projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json]
449
529
  ```
450
530
 
451
- Subcommands:
452
-
453
- | Route | Summary |
454
- | --- | --- |
455
- | [`projmux agent app-server upgrade`](#projmux-agent-app-server-upgrade) | Plan, apply, resume, or abort one exact rolling generation operation |
456
- | [`projmux agent app-server handover`](#projmux-agent-app-server-handover) | Plan, apply, resume, or abort one exact generation-wide handover |
457
-
458
- Canonical spelling: `projmux agent app-server upgrade qualify`, `projmux agent app-server upgrade plan`, `projmux agent app-server upgrade apply`, `projmux agent app-server upgrade resume`, `projmux agent app-server upgrade abort`, `projmux agent app-server handover plan`, `projmux agent app-server handover apply`, `projmux agent app-server handover resume`, `projmux agent app-server handover abort`
531
+ Output modes (`-o`): `json`
459
532
 
460
- #### `projmux agent app-server upgrade`
533
+ ### `projmux agent message`
461
534
 
462
- Plan, apply, resume, or abort one exact rolling generation operation
535
+ Exchange bounded untrusted coordination messages; --source selects a source Agent anchor, not caller authentication (default: active Pane)
463
536
 
464
537
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
465
538
 
@@ -471,28 +544,28 @@ Allowed effects:
471
544
  - `desired-state=unchanged`
472
545
  - `runtime=unchanged`
473
546
  - `focus=unchanged`
474
- - `cardinality=unchanged`
475
- - `domain-effect=null`
547
+ - `cardinality=exact-one`
548
+ - `domain-effect=agent-delivery`
476
549
 
477
550
  ```
478
- projmux agent app-server upgrade
551
+ projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
552
+ projmux agent message status <message-ref> [-o json]
553
+ projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
479
554
  ```
480
555
 
481
556
  Subcommands:
482
557
 
483
558
  | Route | Summary |
484
559
  | --- | --- |
485
- | [`projmux agent app-server upgrade qualify`](#projmux-agent-app-server-upgrade-qualify) | Install one measured version-pair qualification receipt for the generation entry paths |
486
- | [`projmux agent app-server upgrade plan`](#projmux-agent-app-server-upgrade-plan) | Read the mutation-zero plan for one exact private generation upgrade |
487
- | [`projmux agent app-server upgrade apply`](#projmux-agent-app-server-upgrade-apply) | Apply one exact crash-resumable private generation admission switch |
488
- | [`projmux agent app-server upgrade resume`](#projmux-agent-app-server-upgrade-resume) | Resume one exact durable rolling generation operation |
489
- | [`projmux agent app-server upgrade abort`](#projmux-agent-app-server-upgrade-abort) | Abort one pre-admission operation and clean only its exact candidate |
560
+ | [`projmux agent message send`](#projmux-agent-message-send) | Submit bounded peer coordination; --source selects a source Agent anchor, not caller authentication (default: active Pane); exits nonzero after printing a failed, refused, expired, or stale receipt |
561
+ | [`projmux agent message status`](#projmux-agent-message-status) | Read a payload-free broker delivery receipt |
562
+ | [`projmux agent message qualify`](#projmux-agent-message-qualify) | Explicitly qualify one exact Claude target using owned current-version isolation evidence and one marker push |
490
563
 
491
- Canonical spelling: `projmux agent app-server upgrade qualify`, `projmux agent app-server upgrade plan`, `projmux agent app-server upgrade apply`, `projmux agent app-server upgrade resume`, `projmux agent app-server upgrade abort`
564
+ Canonical spelling: `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`
492
565
 
493
- ##### `projmux agent app-server upgrade qualify`
566
+ #### `projmux agent message send`
494
567
 
495
- Install one measured version-pair qualification receipt for the generation entry paths
568
+ Submit bounded peer coordination; --source selects a source Agent anchor, not caller authentication (default: active Pane); exits nonzero after printing a failed, refused, expired, or stale receipt
496
569
 
497
570
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
498
571
 
@@ -504,16 +577,16 @@ Allowed effects:
504
577
  - `desired-state=unchanged`
505
578
  - `runtime=unchanged`
506
579
  - `focus=unchanged`
507
- - `cardinality=unchanged`
508
- - `domain-effect=null`
580
+ - `cardinality=exact-one`
581
+ - `domain-effect=agent-delivery`
509
582
 
510
583
  ```
511
- projmux agent app-server upgrade qualify --receipt <absolute-json>
584
+ projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
512
585
  ```
513
586
 
514
- ##### `projmux agent app-server upgrade plan`
587
+ #### `projmux agent message status`
515
588
 
516
- Read the mutation-zero plan for one exact private generation upgrade
589
+ Read a payload-free broker delivery receipt
517
590
 
518
591
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
519
592
 
@@ -526,36 +599,17 @@ Allowed effects:
526
599
  - `runtime=unchanged`
527
600
  - `focus=unchanged`
528
601
  - `cardinality=unchanged`
529
- - `domain-effect=null`
602
+ - `domain-effect=agent-delivery`
530
603
 
531
604
  ```
532
- projmux agent app-server upgrade plan --request <absolute-json>
605
+ projmux agent message status <message-ref> [-o json]
533
606
  ```
534
607
 
535
- ##### `projmux agent app-server upgrade apply`
536
-
537
- Apply one exact crash-resumable private generation admission switch
538
-
539
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
540
-
541
- Allowed effects:
542
-
543
- - `identity=unchanged`
544
- - `address=unchanged`
545
- - `topology=unchanged`
546
- - `desired-state=unchanged`
547
- - `runtime=unchanged`
548
- - `focus=unchanged`
549
- - `cardinality=unchanged`
550
- - `domain-effect=null`
551
-
552
- ```
553
- projmux agent app-server upgrade apply --request <absolute-json>
554
- ```
608
+ Output modes (`-o`): `json`
555
609
 
556
- ##### `projmux agent app-server upgrade resume`
610
+ #### `projmux agent message qualify`
557
611
 
558
- Resume one exact durable rolling generation operation
612
+ Explicitly qualify one exact Claude target using owned current-version isolation evidence and one marker push
559
613
 
560
614
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
561
615
 
@@ -567,16 +621,18 @@ Allowed effects:
567
621
  - `desired-state=unchanged`
568
622
  - `runtime=unchanged`
569
623
  - `focus=unchanged`
570
- - `cardinality=unchanged`
571
- - `domain-effect=null`
624
+ - `cardinality=exact-one`
625
+ - `domain-effect=agent-delivery`
572
626
 
573
627
  ```
574
- projmux agent app-server upgrade resume --operation <ref>
628
+ projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
575
629
  ```
576
630
 
577
- ##### `projmux agent app-server upgrade abort`
631
+ Output modes (`-o`): `json`
632
+
633
+ ### `projmux agent wait`
578
634
 
579
- Abort one pre-admission operation and clean only its exact candidate
635
+ Wait read-only for one exact Agent's Registry-backed idle observation
580
636
 
581
637
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
582
638
 
@@ -588,18 +644,20 @@ Allowed effects:
588
644
  - `desired-state=unchanged`
589
645
  - `runtime=unchanged`
590
646
  - `focus=unchanged`
591
- - `cardinality=unchanged`
647
+ - `cardinality=exact-one`
592
648
  - `domain-effect=null`
593
649
 
594
650
  ```
595
- projmux agent app-server upgrade abort --operation <ref>
651
+ projmux agent wait <agent-ref> [--until idle] [--timeout <duration>] [-o json]
596
652
  ```
597
653
 
598
- #### `projmux agent app-server handover`
654
+ Output modes (`-o`): `json`
599
655
 
600
- Plan, apply, resume, or abort one exact generation-wide handover
656
+ ### `projmux agent question`
601
657
 
602
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
658
+ Answer one exact opted-in Claude Agent's AskUserQuestion prompts from the command line
659
+
660
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
603
661
 
604
662
  Allowed effects:
605
663
 
@@ -609,27 +667,30 @@ Allowed effects:
609
667
  - `desired-state=unchanged`
610
668
  - `runtime=unchanged`
611
669
  - `focus=unchanged`
612
- - `cardinality=unchanged`
670
+ - `cardinality=exact-one`
613
671
  - `domain-effect=null`
614
672
 
615
673
  ```
616
- projmux agent app-server handover
674
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
675
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
676
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
677
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
617
678
  ```
618
679
 
619
680
  Subcommands:
620
681
 
621
682
  | Route | Summary |
622
683
  | --- | --- |
623
- | [`projmux agent app-server handover plan`](#projmux-agent-app-server-handover-plan) | Read the exact target-set generation handover plan |
624
- | [`projmux agent app-server handover apply`](#projmux-agent-app-server-handover-apply) | Apply one crash-resumable generation-wide handover |
625
- | [`projmux agent app-server handover resume`](#projmux-agent-app-server-handover-resume) | Resume one exact durable generation handover |
626
- | [`projmux agent app-server handover abort`](#projmux-agent-app-server-handover-abort) | Abort one exact pre-stop generation handover |
684
+ | [`projmux agent question enable`](#projmux-agent-question-enable) | Opt one exact Claude Agent into answering its AskUserQuestion prompts from the command line |
685
+ | [`projmux agent question disable`](#projmux-agent-question-disable) | Opt one exact Claude Agent out and hand its waiting questions back to its own prompt |
686
+ | [`projmux agent question list`](#projmux-agent-question-list) | List one exact Claude Agent's waiting and recent questions |
687
+ | [`projmux agent question answer`](#projmux-agent-question-answer) | Answer one waiting question by option label, option number, or explicit free text |
627
688
 
628
- Canonical spelling: `projmux agent app-server handover plan`, `projmux agent app-server handover apply`, `projmux agent app-server handover resume`, `projmux agent app-server handover abort`
689
+ Canonical spelling: `projmux agent question enable`, `projmux agent question disable`, `projmux agent question list`, `projmux agent question answer`
629
690
 
630
- ##### `projmux agent app-server handover plan`
691
+ #### `projmux agent question enable`
631
692
 
632
- Read the exact target-set generation handover plan
693
+ Opt one exact Claude Agent into answering its AskUserQuestion prompts from the command line
633
694
 
634
695
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
635
696
 
@@ -641,16 +702,16 @@ Allowed effects:
641
702
  - `desired-state=unchanged`
642
703
  - `runtime=unchanged`
643
704
  - `focus=unchanged`
644
- - `cardinality=unchanged`
705
+ - `cardinality=exact-one`
645
706
  - `domain-effect=null`
646
707
 
647
708
  ```
648
- projmux agent app-server handover plan --request <absolute-json>
709
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
649
710
  ```
650
711
 
651
- ##### `projmux agent app-server handover apply`
712
+ #### `projmux agent question disable`
652
713
 
653
- Apply one crash-resumable generation-wide handover
714
+ Opt one exact Claude Agent out and hand its waiting questions back to its own prompt
654
715
 
655
716
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
656
717
 
@@ -662,16 +723,16 @@ Allowed effects:
662
723
  - `desired-state=unchanged`
663
724
  - `runtime=unchanged`
664
725
  - `focus=unchanged`
665
- - `cardinality=unchanged`
726
+ - `cardinality=exact-one`
666
727
  - `domain-effect=null`
667
728
 
668
729
  ```
669
- projmux agent app-server handover apply --request <absolute-json>
730
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
670
731
  ```
671
732
 
672
- ##### `projmux agent app-server handover resume`
733
+ #### `projmux agent question list`
673
734
 
674
- Resume one exact durable generation handover
735
+ List one exact Claude Agent's waiting and recent questions
675
736
 
676
737
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
677
738
 
@@ -683,16 +744,18 @@ Allowed effects:
683
744
  - `desired-state=unchanged`
684
745
  - `runtime=unchanged`
685
746
  - `focus=unchanged`
686
- - `cardinality=unchanged`
747
+ - `cardinality=exact-one`
687
748
  - `domain-effect=null`
688
749
 
689
750
  ```
690
- projmux agent app-server handover resume --operation <ref>
751
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
691
752
  ```
692
753
 
693
- ##### `projmux agent app-server handover abort`
754
+ Output modes (`-o`): `json`
755
+
756
+ #### `projmux agent question answer`
694
757
 
695
- Abort one exact pre-stop generation handover
758
+ Answer one waiting question by option label, option number, or explicit free text
696
759
 
697
760
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
698
761
 
@@ -704,18 +767,18 @@ Allowed effects:
704
767
  - `desired-state=unchanged`
705
768
  - `runtime=unchanged`
706
769
  - `focus=unchanged`
707
- - `cardinality=unchanged`
770
+ - `cardinality=exact-one`
708
771
  - `domain-effect=null`
709
772
 
710
773
  ```
711
- projmux agent app-server handover abort --operation <ref>
774
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
712
775
  ```
713
776
 
714
- ### `projmux agent capabilities`
777
+ ## `projmux attention`
715
778
 
716
- Read static provider support or one exact Agent's Registry-backed runtime eligibility
779
+ View and manage live tmux pane attention state
717
780
 
718
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
781
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
719
782
 
720
783
  Allowed effects:
721
784
 
@@ -725,20 +788,30 @@ Allowed effects:
725
788
  - `desired-state=unchanged`
726
789
  - `runtime=unchanged`
727
790
  - `focus=unchanged`
728
- - `cardinality=exact-one`
791
+ - `cardinality=unchanged`
729
792
  - `domain-effect=null`
730
793
 
731
794
  ```
732
- projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json]
795
+ projmux attention toggle|clear|arm|list|window
733
796
  ```
734
797
 
735
- Output modes (`-o`): `json`
798
+ Subcommands:
736
799
 
737
- ### `projmux agent message`
800
+ | Route | Summary |
801
+ | --- | --- |
802
+ | [`projmux attention toggle`](#projmux-attention-toggle) | Toggle attention state for a pane |
803
+ | [`projmux attention clear`](#projmux-attention-clear) | Clear attention state for a pane |
804
+ | [`projmux attention arm`](#projmux-attention-arm) | Arm focus-only attention consumption |
805
+ | [`projmux attention list`](#projmux-attention-list) | List live pane attention state |
806
+ | [`projmux attention window`](#projmux-attention-window) | Render window-scoped attention badges |
738
807
 
739
- Exchange bounded untrusted coordination messages; --source selects a source Agent anchor, not caller authentication (default: active Pane)
808
+ Canonical spelling: `projmux attention list`, `projmux attention toggle`, `projmux attention clear`, `projmux attention arm`, `projmux attention window`
740
809
 
741
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
810
+ ### `projmux attention toggle`
811
+
812
+ Toggle attention state for a pane
813
+
814
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
742
815
 
743
816
  Allowed effects:
744
817
 
@@ -749,29 +822,17 @@ Allowed effects:
749
822
  - `runtime=unchanged`
750
823
  - `focus=unchanged`
751
824
  - `cardinality=exact-one`
752
- - `domain-effect=agent-delivery`
825
+ - `domain-effect=null`
753
826
 
754
827
  ```
755
- projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
756
- projmux agent message status <message-ref> [-o json]
757
- projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
828
+ projmux attention toggle [pane]
758
829
  ```
759
830
 
760
- Subcommands:
761
-
762
- | Route | Summary |
763
- | --- | --- |
764
- | [`projmux agent message send`](#projmux-agent-message-send) | Submit bounded peer coordination; --source selects a source Agent anchor, not caller authentication (default: active Pane); exits nonzero after printing a failed, refused, expired, or stale receipt |
765
- | [`projmux agent message status`](#projmux-agent-message-status) | Read a payload-free broker delivery receipt |
766
- | [`projmux agent message qualify`](#projmux-agent-message-qualify) | Explicitly qualify one exact Claude target using owned current-version isolation evidence and one marker push |
767
-
768
- Canonical spelling: `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`
769
-
770
- #### `projmux agent message send`
831
+ ### `projmux attention clear`
771
832
 
772
- Submit bounded peer coordination; --source selects a source Agent anchor, not caller authentication (default: active Pane); exits nonzero after printing a failed, refused, expired, or stale receipt
833
+ Clear attention state for a pane
773
834
 
774
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
835
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
775
836
 
776
837
  Allowed effects:
777
838
 
@@ -782,17 +843,17 @@ Allowed effects:
782
843
  - `runtime=unchanged`
783
844
  - `focus=unchanged`
784
845
  - `cardinality=exact-one`
785
- - `domain-effect=agent-delivery`
846
+ - `domain-effect=null`
786
847
 
787
848
  ```
788
- projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
849
+ projmux attention clear [pane]
789
850
  ```
790
851
 
791
- #### `projmux agent message status`
852
+ ### `projmux attention arm`
792
853
 
793
- Read a payload-free broker delivery receipt
854
+ Arm focus-only attention consumption
794
855
 
795
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
856
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
796
857
 
797
858
  Allowed effects:
798
859
 
@@ -802,20 +863,18 @@ Allowed effects:
802
863
  - `desired-state=unchanged`
803
864
  - `runtime=unchanged`
804
865
  - `focus=unchanged`
805
- - `cardinality=unchanged`
806
- - `domain-effect=agent-delivery`
866
+ - `cardinality=exact-one`
867
+ - `domain-effect=null`
807
868
 
808
869
  ```
809
- projmux agent message status <message-ref> [-o json]
870
+ projmux attention arm [pane]
810
871
  ```
811
872
 
812
- Output modes (`-o`): `json`
813
-
814
- #### `projmux agent message qualify`
873
+ ### `projmux attention list`
815
874
 
816
- Explicitly qualify one exact Claude target using owned current-version isolation evidence and one marker push
875
+ List live pane attention state
817
876
 
818
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
877
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
819
878
 
820
879
  Allowed effects:
821
880
 
@@ -825,20 +884,18 @@ Allowed effects:
825
884
  - `desired-state=unchanged`
826
885
  - `runtime=unchanged`
827
886
  - `focus=unchanged`
828
- - `cardinality=exact-one`
829
- - `domain-effect=agent-delivery`
887
+ - `cardinality=zero-or-more`
888
+ - `domain-effect=null`
830
889
 
831
890
  ```
832
- projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
891
+ projmux attention list
833
892
  ```
834
893
 
835
- Output modes (`-o`): `json`
836
-
837
- ### `projmux agent wait`
894
+ ### `projmux attention window`
838
895
 
839
- Wait read-only for one exact Agent's Registry-backed idle observation
896
+ Render window-scoped attention badges
840
897
 
841
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
898
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
842
899
 
843
900
  Allowed effects:
844
901
 
@@ -848,18 +905,16 @@ Allowed effects:
848
905
  - `desired-state=unchanged`
849
906
  - `runtime=unchanged`
850
907
  - `focus=unchanged`
851
- - `cardinality=exact-one`
908
+ - `cardinality=zero-or-more`
852
909
  - `domain-effect=null`
853
910
 
854
911
  ```
855
- projmux agent wait <agent-ref> [--until idle] [--timeout <duration>] [-o json]
912
+ projmux attention window
856
913
  ```
857
914
 
858
- Output modes (`-o`): `json`
859
-
860
- ## `projmux attention`
915
+ ## `projmux attach`
861
916
 
862
- View and manage live tmux pane attention state
917
+ Enter a Project runtime from outside tmux
863
918
 
864
919
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
865
920
 
@@ -875,68 +930,22 @@ Allowed effects:
875
930
  - `domain-effect=null`
876
931
 
877
932
  ```
878
- projmux attention toggle|clear|arm|list|window
933
+ projmux attach project <ref>
879
934
  ```
880
935
 
881
936
  Subcommands:
882
937
 
883
938
  | Route | Summary |
884
939
  | --- | --- |
885
- | [`projmux attention toggle`](#projmux-attention-toggle) | Toggle attention state for a pane |
886
- | [`projmux attention clear`](#projmux-attention-clear) | Clear attention state for a pane |
887
- | [`projmux attention arm`](#projmux-attention-arm) | Arm focus-only attention consumption |
888
- | [`projmux attention list`](#projmux-attention-list) | List live pane attention state |
889
- | [`projmux attention window`](#projmux-attention-window) | Render window-scoped attention badges |
940
+ | [`projmux attach project`](#projmux-attach-project) | Enter a Project runtime from outside tmux, materializing it when offline |
890
941
 
891
- Canonical spelling: `projmux attention list`, `projmux attention toggle`, `projmux attention clear`, `projmux attention arm`, `projmux attention window`
942
+ Canonical spelling: `projmux attach project`
892
943
 
893
- ### `projmux attention toggle`
944
+ ### `projmux attach project`
894
945
 
895
- Toggle attention state for a pane
946
+ Enter a Project runtime from outside tmux, materializing it when offline
896
947
 
897
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
898
-
899
- Allowed effects:
900
-
901
- - `identity=unchanged`
902
- - `address=unchanged`
903
- - `topology=unchanged`
904
- - `desired-state=unchanged`
905
- - `runtime=unchanged`
906
- - `focus=unchanged`
907
- - `cardinality=exact-one`
908
- - `domain-effect=null`
909
-
910
- ```
911
- projmux attention toggle [pane]
912
- ```
913
-
914
- ### `projmux attention clear`
915
-
916
- Clear attention state for a pane
917
-
918
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
919
-
920
- Allowed effects:
921
-
922
- - `identity=unchanged`
923
- - `address=unchanged`
924
- - `topology=unchanged`
925
- - `desired-state=unchanged`
926
- - `runtime=unchanged`
927
- - `focus=unchanged`
928
- - `cardinality=exact-one`
929
- - `domain-effect=null`
930
-
931
- ```
932
- projmux attention clear [pane]
933
- ```
934
-
935
- ### `projmux attention arm`
936
-
937
- Arm focus-only attention consumption
938
-
939
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
948
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
940
949
 
941
950
  Allowed effects:
942
951
 
@@ -944,60 +953,18 @@ Allowed effects:
944
953
  - `address=unchanged`
945
954
  - `topology=unchanged`
946
955
  - `desired-state=unchanged`
947
- - `runtime=unchanged`
948
- - `focus=unchanged`
956
+ - `runtime=materialized|already-live`
957
+ - `focus=attached-caller`
949
958
  - `cardinality=exact-one`
950
959
  - `domain-effect=null`
951
960
 
952
961
  ```
953
- projmux attention arm [pane]
954
- ```
955
-
956
- ### `projmux attention list`
957
-
958
- List live pane attention state
959
-
960
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
961
-
962
- Allowed effects:
963
-
964
- - `identity=unchanged`
965
- - `address=unchanged`
966
- - `topology=unchanged`
967
- - `desired-state=unchanged`
968
- - `runtime=unchanged`
969
- - `focus=unchanged`
970
- - `cardinality=zero-or-more`
971
- - `domain-effect=null`
972
-
973
- ```
974
- projmux attention list
975
- ```
976
-
977
- ### `projmux attention window`
978
-
979
- Render window-scoped attention badges
980
-
981
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
982
-
983
- Allowed effects:
984
-
985
- - `identity=unchanged`
986
- - `address=unchanged`
987
- - `topology=unchanged`
988
- - `desired-state=unchanged`
989
- - `runtime=unchanged`
990
- - `focus=unchanged`
991
- - `cardinality=zero-or-more`
992
- - `domain-effect=null`
993
-
994
- ```
995
- projmux attention window
962
+ projmux attach project <ref>
996
963
  ```
997
964
 
998
- ## `projmux attach`
965
+ ## `projmux config`
999
966
 
1000
- Enter a Project runtime from outside tmux
967
+ Edit AI split-mode and enabled-provider settings; render or apply generated tmux configuration
1001
968
 
1002
969
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
1003
970
 
@@ -1013,43 +980,28 @@ Allowed effects:
1013
980
  - `domain-effect=null`
1014
981
 
1015
982
  ```
1016
- projmux attach project <ref>
983
+ projmux config edit [--get|--set <mode>]
984
+ projmux config providers [--enable <id>|--disable <id>]
985
+ projmux config render standalone|app [--bin <path>]
986
+ projmux config apply [--bin <path>] [--config <path>] [--socket <name>]
1017
987
  ```
1018
988
 
1019
989
  Subcommands:
1020
990
 
1021
991
  | Route | Summary |
1022
992
  | --- | --- |
1023
- | [`projmux attach project`](#projmux-attach-project) | Enter a Project runtime from outside tmux, materializing it when offline |
1024
-
1025
- Canonical spelling: `projmux attach project`
1026
-
1027
- ### `projmux attach project`
1028
-
1029
- Enter a Project runtime from outside tmux, materializing it when offline
1030
-
1031
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
1032
-
1033
- Allowed effects:
993
+ | [`projmux config edit`](#projmux-config-edit) | Edit the AI split-mode configuration |
994
+ | [`projmux config providers`](#projmux-config-providers) | List AI providers as enabled or disabled; --enable or --disable changes one |
995
+ | [`projmux config render`](#projmux-config-render) | Print a generated tmux config to stdout; writes nothing |
996
+ | [`projmux config apply`](#projmux-config-apply) | Write the generated app tmux config and reload the live projmux server |
1034
997
 
1035
- - `identity=unchanged`
1036
- - `address=unchanged`
1037
- - `topology=unchanged`
1038
- - `desired-state=unchanged`
1039
- - `runtime=materialized|already-live`
1040
- - `focus=attached-caller`
1041
- - `cardinality=exact-one`
1042
- - `domain-effect=null`
998
+ Canonical spelling: `projmux config edit`, `projmux config providers`, `projmux config render`, `projmux config apply`
1043
999
 
1044
- ```
1045
- projmux attach project <ref>
1046
- ```
1047
-
1048
- ## `projmux config`
1000
+ ### `projmux config edit`
1049
1001
 
1050
- Edit AI split-mode settings; render or apply generated tmux configuration
1002
+ Edit the AI split-mode configuration
1051
1003
 
1052
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
1004
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1053
1005
 
1054
1006
  Allowed effects:
1055
1007
 
@@ -1064,23 +1016,11 @@ Allowed effects:
1064
1016
 
1065
1017
  ```
1066
1018
  projmux config edit [--get|--set <mode>]
1067
- projmux config render standalone|app [--bin <path>]
1068
- projmux config apply [--bin <path>] [--config <path>] [--socket <name>]
1069
1019
  ```
1070
1020
 
1071
- Subcommands:
1072
-
1073
- | Route | Summary |
1074
- | --- | --- |
1075
- | [`projmux config edit`](#projmux-config-edit) | Edit the AI split-mode configuration |
1076
- | [`projmux config render`](#projmux-config-render) | Print a generated tmux config to stdout; writes nothing |
1077
- | [`projmux config apply`](#projmux-config-apply) | Write the generated app tmux config and reload the live projmux server |
1078
-
1079
- Canonical spelling: `projmux config edit`, `projmux config render`, `projmux config apply`
1021
+ ### `projmux config providers`
1080
1022
 
1081
- ### `projmux config edit`
1082
-
1083
- Edit the AI split-mode configuration
1023
+ List AI providers as enabled or disabled; --enable or --disable changes one
1084
1024
 
1085
1025
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1086
1026
 
@@ -1096,7 +1036,9 @@ Allowed effects:
1096
1036
  - `domain-effect=null`
1097
1037
 
1098
1038
  ```
1099
- projmux config edit [--get|--set <mode>]
1039
+ projmux config providers
1040
+ projmux config providers --enable <id>
1041
+ projmux config providers --disable <id>
1100
1042
  ```
1101
1043
 
1102
1044
  ### `projmux config render`
@@ -1214,13 +1156,12 @@ Allowed effects:
1214
1156
 
1215
1157
  ```
1216
1158
  projmux create project --root <absolute-path> [--name <name>] [--label key=value]... [-o <mode>]
1217
- projmux create window [--project <ref> | -p <ref>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1159
+ projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1218
1160
  projmux create pane [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1219
- projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1220
- projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--window <ref> | -w <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1161
+ projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1162
+ projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--persona <name>] [--window <ref> | -w <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1221
1163
  projmux create claude|antigravity [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--window <ref> | -w <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1222
1164
  projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>]
1223
- projmux create snapshot
1224
1165
  ```
1225
1166
 
1226
1167
  Subcommands:
@@ -1228,11 +1169,10 @@ Subcommands:
1228
1169
  | Route | Summary |
1229
1170
  | --- | --- |
1230
1171
  | [`projmux create project`](#projmux-create-project) | Register one exact filesystem path as a Registry Project; no runtime is materialized |
1231
- | [`projmux create window`](#projmux-create-window) | Create a Window and its initial Pane below one Project; the runtime is materialized detached |
1172
+ | [`projmux create window`](#projmux-create-window) | Create a Window below one Project, opening on a shell Pane or on one Agent; the runtime is materialized detached |
1232
1173
  | [`projmux create pane`](#projmux-create-pane) | Create a shell Pane detached on an explicit Pane or the Window's exact shell or Agent anchor |
1233
1174
  | [`projmux create agent`](#projmux-create-agent) | Create an Agent detached on an explicit Pane or the Window's exact shell or Agent anchor; --provider is required |
1234
1175
  | [`projmux create notification`](#projmux-create-notification) | Create a pending notification row |
1235
- | [`projmux create snapshot`](#projmux-create-snapshot) | Create a session snapshot |
1236
1176
 
1237
1177
  Provider shortcuts:
1238
1178
 
@@ -1242,7 +1182,7 @@ Provider shortcuts:
1242
1182
  | [`projmux create claude`](#projmux-create-claude) | Provider shortcut for create agent --provider claude |
1243
1183
  | [`projmux create antigravity`](#projmux-create-antigravity) | Provider shortcut for create agent --provider antigravity |
1244
1184
 
1245
- Canonical spelling: `projmux create project`, `projmux create window`, `projmux create pane`, `projmux create agent`, `projmux create notification`, `projmux create snapshot`, `projmux create codex`, `projmux create claude`, `projmux create antigravity`
1185
+ Canonical spelling: `projmux create project`, `projmux create window`, `projmux create pane`, `projmux create agent`, `projmux create notification`, `projmux create codex`, `projmux create claude`, `projmux create antigravity`
1246
1186
 
1247
1187
  ### `projmux create project`
1248
1188
 
@@ -1265,11 +1205,15 @@ Allowed effects:
1265
1205
  projmux create project --root <absolute-path> [--name <name>] [--label key=value]... [-o <mode>]
1266
1206
  ```
1267
1207
 
1208
+ Without `--name` a new Project is named after its root directory, sanitized into a valid name (`my repo` becomes `my-repo`). When that basename is empty (the filesystem root) or another Project already holds it, the Project is named by its exact uid instead; no numbered variant is ever invented.
1209
+
1210
+ An explicit `--name` that another Project holds exits 2 with no Registry write. A root that is already registered reuses its Project; an explicit `--name` there must match the stored name.
1211
+
1268
1212
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `none`, `receipt`
1269
1213
 
1270
1214
  ### `projmux create window`
1271
1215
 
1272
- Create a Window and its initial Pane below one Project; the runtime is materialized detached
1216
+ Create a Window below one Project, opening on a shell Pane or on one Agent; the runtime is materialized detached
1273
1217
 
1274
1218
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1275
1219
 
@@ -1285,7 +1229,7 @@ Allowed effects:
1285
1229
  - `domain-effect=null`
1286
1230
 
1287
1231
  ```
1288
- projmux create window [--project <ref> | -p <ref>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1232
+ projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1289
1233
  ```
1290
1234
 
1291
1235
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1331,7 +1275,7 @@ Allowed effects:
1331
1275
  - `domain-effect=null`
1332
1276
 
1333
1277
  ```
1334
- projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1278
+ projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1335
1279
  ```
1336
1280
 
1337
1281
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1357,27 +1301,6 @@ Allowed effects:
1357
1301
  projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>]
1358
1302
  ```
1359
1303
 
1360
- ### `projmux create snapshot`
1361
-
1362
- Create a session snapshot
1363
-
1364
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1365
-
1366
- Allowed effects:
1367
-
1368
- - `identity=unchanged`
1369
- - `address=unchanged`
1370
- - `topology=unchanged`
1371
- - `desired-state=unchanged`
1372
- - `runtime=unchanged`
1373
- - `focus=unchanged`
1374
- - `cardinality=unchanged`
1375
- - `domain-effect=null`
1376
-
1377
- ```
1378
- projmux create snapshot
1379
- ```
1380
-
1381
1304
  ### `projmux create codex`
1382
1305
 
1383
1306
  Provider shortcut for create agent --provider codex
@@ -1396,7 +1319,7 @@ Allowed effects:
1396
1319
  - `domain-effect=null`
1397
1320
 
1398
1321
  ```
1399
- projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1322
+ projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1400
1323
  ```
1401
1324
 
1402
1325
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1419,7 +1342,7 @@ Allowed effects:
1419
1342
  - `domain-effect=null`
1420
1343
 
1421
1344
  ```
1422
- projmux create claude [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1345
+ projmux create claude [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1423
1346
  ```
1424
1347
 
1425
1348
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1475,18 +1398,17 @@ Subcommands:
1475
1398
 
1476
1399
  | Route | Summary |
1477
1400
  | --- | --- |
1478
- | [`projmux delete project`](#projmux-delete-project) | Deprecated alias of unregister project; unregisters Projects and Registry descendants while preserving roots, Git/worktrees, snapshots, and runtime |
1401
+ | [`projmux delete project`](#projmux-delete-project) | Deprecated alias of unregister project; unregisters Projects and Registry descendants while preserving roots, Git/worktrees, and runtime |
1479
1402
  | [`projmux delete window`](#projmux-delete-window) | Delete Registry Windows and every descendant Agent and Pane, killing an exact live tmux mirror when present; no selector inside tmux means the active Window, and --all means every Window in the registry |
1480
1403
  | [`projmux delete pane`](#projmux-delete-pane) | Delete Panes; an Agent-owned current Pane leaves its Agent Offline; no selector inside tmux means the active Pane, and --all means every Pane in the registry |
1481
1404
  | [`projmux delete agent`](#projmux-delete-agent) | Delete Agents and their managed Panes; no selector inside tmux means the active Agent, and --all means every Agent in the registry |
1482
1405
  | [`projmux delete notification`](#projmux-delete-notification) | Delete pending notification rows |
1483
- | [`projmux delete snapshot`](#projmux-delete-snapshot) | Delete saved session snapshots |
1484
1406
 
1485
- Canonical spelling: `projmux unregister project`, `projmux delete window`, `projmux delete pane`, `projmux delete agent`, `projmux delete notification`, `projmux delete snapshot`
1407
+ Canonical spelling: `projmux unregister project`, `projmux delete window`, `projmux delete pane`, `projmux delete agent`, `projmux delete notification`
1486
1408
 
1487
1409
  ### `projmux delete project`
1488
1410
 
1489
- Deprecated alias of unregister project; unregisters Projects and Registry descendants while preserving roots, Git/worktrees, snapshots, and runtime
1411
+ Deprecated alias of unregister project; unregisters Projects and Registry descendants while preserving roots, Git/worktrees, and runtime
1490
1412
 
1491
1413
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1492
1414
 
@@ -1601,29 +1523,6 @@ projmux delete notification
1601
1523
 
1602
1524
  Aliases: `notifications`
1603
1525
 
1604
- ### `projmux delete snapshot`
1605
-
1606
- Delete saved session snapshots
1607
-
1608
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
1609
-
1610
- Allowed effects:
1611
-
1612
- - `identity=unchanged`
1613
- - `address=unchanged`
1614
- - `topology=unchanged`
1615
- - `desired-state=unchanged`
1616
- - `runtime=unchanged`
1617
- - `focus=unchanged`
1618
- - `cardinality=unchanged`
1619
- - `domain-effect=null`
1620
-
1621
- ```
1622
- projmux delete snapshot
1623
- ```
1624
-
1625
- Aliases: `snapshots`
1626
-
1627
1526
  ## `projmux describe`
1628
1527
 
1629
1528
  Describe one Projmux resource
@@ -1896,7 +1795,9 @@ Allowed effects:
1896
1795
  ```
1897
1796
  projmux focus project <ref>
1898
1797
  projmux focus window <ref> {--project <ref> | -p <ref>}
1798
+ projmux focus window uid:<uid> [--project <ref> | -p <ref>]
1899
1799
  projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>}
1800
+ projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]
1900
1801
  ```
1901
1802
 
1902
1803
  Subcommands:
@@ -1930,6 +1831,8 @@ Allowed effects:
1930
1831
  projmux focus project <ref> [--socket <path>] [--client <tty>] [--json]
1931
1832
  ```
1932
1833
 
1834
+ `<ref>` is the live tmux session name, or `uid:<uid>` for a Registry Project, which resolves to its `status.session.name`. A `uid:` ref uses the Project's recorded socket; an explicit `--socket` naming another server exits 2. The resolved session must still be live.
1835
+
1933
1836
  ### `projmux focus window`
1934
1837
 
1935
1838
  Move the current client to an already-live Window in an exact live root session; never materializes
@@ -1949,8 +1852,13 @@ Allowed effects:
1949
1852
 
1950
1853
  ```
1951
1854
  projmux focus window <ref> {--project <ref> | -p <ref>} [--socket <path>] [--client <tty>] [--json]
1855
+ projmux focus window uid:<uid> [--project <ref> | -p <ref>] [--socket <path>] [--client <tty>] [--json]
1952
1856
  ```
1953
1857
 
1858
+ A plain `<ref>` is a live window name or `@id` and requires `--project`. `uid:<uid>` names a Registry Window, which resolves to its `status.runtimeID` inside its owning Project's session, so `--project` is optional; when given it must be that Project (`uid:` or its session name) or the route exits 2. `--project uid:<uid>` also works with a plain `<ref>`.
1859
+
1860
+ A `uid:` resolution uses the Project's recorded socket; an explicit `--socket` naming another server exits 2. The resolved window must still be live.
1861
+
1954
1862
  ### `projmux focus pane`
1955
1863
 
1956
1864
  Move the current client to an already-live Pane in an exact live root session; never materializes
@@ -1970,8 +1878,13 @@ Allowed effects:
1970
1878
 
1971
1879
  ```
1972
1880
  projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>} [--socket <path>] [--json]
1881
+ projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>] [--socket <path>] [--json]
1973
1882
  ```
1974
1883
 
1884
+ A plain `<ref>` is a live pane name or `%id` and requires `--project` and `--window`. `uid:<uid>` names a Registry Pane, which resolves to its `status.activation.runtimeID` inside its owning Window and Project, so both flags are optional; when given they must match that owner chain or the route exits 2. `--project` and `--window` also accept `uid:<uid>` with a plain `<ref>`.
1885
+
1886
+ A `uid:` resolution uses the Project's recorded socket; an explicit `--socket` naming another server exits 2. The resolved pane must still be live.
1887
+
1975
1888
  ## `projmux get`
1976
1889
 
1977
1890
  Read Projmux resources by selector
@@ -2009,10 +1922,9 @@ Subcommands:
2009
1922
  | [`projmux get agents`](#projmux-get-agents) | List Agent resources as NAME STATUS ACTIONS AGE; route-implied KIND is omitted, shifting stdout positions; -o wide retains KIND and diagnostics, and -o json retains kind and invocation context; inside tmux defaults to the active managed root, and --all-projects lists the whole Registry |
2010
1923
  | [`projmux get runtime`](#projmux-get-runtime) | List every tmux Session, Window, and Pane on one exact server with its attribution |
2011
1924
  | [`projmux get notifications`](#projmux-get-notifications) | List pending notification rows |
2012
- | [`projmux get snapshots`](#projmux-get-snapshots) | List saved session snapshots |
2013
1925
  | [`projmux get pane`](#projmux-get-pane) | Read one Pane resource; with no selector inside tmux, the active Pane |
2014
1926
 
2015
- Canonical spelling: `projmux get projects`, `projmux get windows`, `projmux get panes`, `projmux get agents`, `projmux get runtime sessions`, `projmux get runtime windows`, `projmux get runtime panes`, `projmux get notifications`, `projmux get snapshots`, `projmux get pane`
1927
+ Canonical spelling: `projmux get projects`, `projmux get windows`, `projmux get panes`, `projmux get agents`, `projmux get runtime sessions`, `projmux get runtime windows`, `projmux get runtime panes`, `projmux get notifications`, `projmux get pane`
2016
1928
 
2017
1929
  ### `projmux get projects`
2018
1930
 
@@ -2114,9 +2026,255 @@ Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `none`, `wide`
2114
2026
 
2115
2027
  ### `projmux get runtime`
2116
2028
 
2117
- List every tmux Session, Window, and Pane on one exact server with its attribution
2029
+ List every tmux Session, Window, and Pane on one exact server with its attribution
2030
+
2031
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2032
+
2033
+ Allowed effects:
2034
+
2035
+ - `identity=unchanged`
2036
+ - `address=unchanged`
2037
+ - `topology=unchanged`
2038
+ - `desired-state=unchanged`
2039
+ - `runtime=unchanged`
2040
+ - `focus=unchanged`
2041
+ - `cardinality=zero-or-more`
2042
+ - `domain-effect=null`
2043
+
2044
+ ```
2045
+ projmux get runtime sessions [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2046
+ projmux get runtime windows [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2047
+ projmux get runtime panes [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2048
+ ```
2049
+
2050
+ Subcommands:
2051
+
2052
+ | Route | Summary |
2053
+ | --- | --- |
2054
+ | [`projmux get runtime sessions`](#projmux-get-runtime-sessions) | List every tmux session on one exact server with its attribution |
2055
+ | [`projmux get runtime windows`](#projmux-get-runtime-windows) | List every tmux window on one exact server with its attribution |
2056
+ | [`projmux get runtime panes`](#projmux-get-runtime-panes) | List every tmux pane on one exact server with its attribution |
2057
+
2058
+ Canonical spelling: `projmux get runtime sessions`, `projmux get runtime windows`, `projmux get runtime panes`
2059
+
2060
+ #### `projmux get runtime sessions`
2061
+
2062
+ List every tmux session on one exact server with its attribution
2063
+
2064
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2065
+
2066
+ Allowed effects:
2067
+
2068
+ - `identity=unchanged`
2069
+ - `address=unchanged`
2070
+ - `topology=unchanged`
2071
+ - `desired-state=unchanged`
2072
+ - `runtime=unchanged`
2073
+ - `focus=unchanged`
2074
+ - `cardinality=zero-or-more`
2075
+ - `domain-effect=null`
2076
+
2077
+ ```
2078
+ projmux get runtime sessions [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2079
+ ```
2080
+
2081
+ Output modes (`-o`): `wide`, `json`, `none`
2082
+
2083
+ #### `projmux get runtime windows`
2084
+
2085
+ List every tmux window on one exact server with its attribution
2086
+
2087
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2088
+
2089
+ Allowed effects:
2090
+
2091
+ - `identity=unchanged`
2092
+ - `address=unchanged`
2093
+ - `topology=unchanged`
2094
+ - `desired-state=unchanged`
2095
+ - `runtime=unchanged`
2096
+ - `focus=unchanged`
2097
+ - `cardinality=zero-or-more`
2098
+ - `domain-effect=null`
2099
+
2100
+ ```
2101
+ projmux get runtime windows [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2102
+ ```
2103
+
2104
+ Output modes (`-o`): `wide`, `json`, `none`
2105
+
2106
+ #### `projmux get runtime panes`
2107
+
2108
+ List every tmux pane on one exact server with its attribution
2109
+
2110
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2111
+
2112
+ Allowed effects:
2113
+
2114
+ - `identity=unchanged`
2115
+ - `address=unchanged`
2116
+ - `topology=unchanged`
2117
+ - `desired-state=unchanged`
2118
+ - `runtime=unchanged`
2119
+ - `focus=unchanged`
2120
+ - `cardinality=zero-or-more`
2121
+ - `domain-effect=null`
2122
+
2123
+ ```
2124
+ projmux get runtime panes [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2125
+ ```
2126
+
2127
+ Output modes (`-o`): `wide`, `json`, `none`
2128
+
2129
+ ### `projmux get notifications`
2130
+
2131
+ List pending notification rows
2132
+
2133
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2134
+
2135
+ Allowed effects:
2136
+
2137
+ - `identity=unchanged`
2138
+ - `address=unchanged`
2139
+ - `topology=unchanged`
2140
+ - `desired-state=unchanged`
2141
+ - `runtime=unchanged`
2142
+ - `focus=unchanged`
2143
+ - `cardinality=zero-or-more`
2144
+ - `domain-effect=null`
2145
+
2146
+ ```
2147
+ projmux get notifications
2148
+ ```
2149
+
2150
+ Aliases: `notification`
2151
+
2152
+ ### `projmux get pane`
2153
+
2154
+ Read one Pane resource; with no selector inside tmux, the active Pane
2155
+
2156
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2157
+
2158
+ Allowed effects:
2159
+
2160
+ - `identity=unchanged`
2161
+ - `address=unchanged`
2162
+ - `topology=unchanged`
2163
+ - `desired-state=unchanged`
2164
+ - `runtime=unchanged`
2165
+ - `focus=unchanged`
2166
+ - `cardinality=exact-one`
2167
+ - `domain-effect=null`
2168
+
2169
+ ```
2170
+ projmux get pane [--current] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
2171
+ ```
2172
+
2173
+ Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `none`
2174
+
2175
+ Field projections (`-o`): `cwd`
2176
+
2177
+ ## `projmux hook`
2178
+
2179
+ List, edit, validate, and trust lifecycle hook config
2180
+
2181
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2182
+
2183
+ Allowed effects:
2184
+
2185
+ - `identity=unchanged`
2186
+ - `address=unchanged`
2187
+ - `topology=unchanged`
2188
+ - `desired-state=unchanged`
2189
+ - `runtime=unchanged`
2190
+ - `focus=unchanged`
2191
+ - `cardinality=unchanged`
2192
+ - `domain-effect=null`
2193
+
2194
+ ```
2195
+ projmux hook list|edit|validate|trust|untrust
2196
+ ```
2197
+
2198
+ Subcommands:
2199
+
2200
+ | Route | Summary |
2201
+ | --- | --- |
2202
+ | [`projmux hook list`](#projmux-hook-list) | List global and project lifecycle hooks |
2203
+ | [`projmux hook edit`](#projmux-hook-edit) | Edit lifecycle hook config |
2204
+ | [`projmux hook validate`](#projmux-hook-validate) | Validate lifecycle hook config |
2205
+ | [`projmux hook trust`](#projmux-hook-trust) | Trust the current project hook config |
2206
+ | [`projmux hook untrust`](#projmux-hook-untrust) | Revoke project hook config trust |
2207
+
2208
+ Canonical spelling: `projmux hook list`, `projmux hook edit`, `projmux hook validate`, `projmux hook trust`, `projmux hook untrust`
2209
+
2210
+ ### `projmux hook list`
2211
+
2212
+ List global and project lifecycle hooks
2213
+
2214
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2215
+
2216
+ Allowed effects:
2217
+
2218
+ - `identity=unchanged`
2219
+ - `address=unchanged`
2220
+ - `topology=unchanged`
2221
+ - `desired-state=unchanged`
2222
+ - `runtime=unchanged`
2223
+ - `focus=unchanged`
2224
+ - `cardinality=unchanged`
2225
+ - `domain-effect=null`
2226
+
2227
+ ```
2228
+ projmux hook list
2229
+ ```
2230
+
2231
+ ### `projmux hook edit`
2232
+
2233
+ Edit lifecycle hook config
2234
+
2235
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2236
+
2237
+ Allowed effects:
2238
+
2239
+ - `identity=unchanged`
2240
+ - `address=unchanged`
2241
+ - `topology=unchanged`
2242
+ - `desired-state=unchanged`
2243
+ - `runtime=unchanged`
2244
+ - `focus=unchanged`
2245
+ - `cardinality=unchanged`
2246
+ - `domain-effect=null`
2247
+
2248
+ ```
2249
+ projmux hook edit
2250
+ ```
2251
+
2252
+ ### `projmux hook validate`
2253
+
2254
+ Validate lifecycle hook config
2255
+
2256
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2257
+
2258
+ Allowed effects:
2259
+
2260
+ - `identity=unchanged`
2261
+ - `address=unchanged`
2262
+ - `topology=unchanged`
2263
+ - `desired-state=unchanged`
2264
+ - `runtime=unchanged`
2265
+ - `focus=unchanged`
2266
+ - `cardinality=unchanged`
2267
+ - `domain-effect=null`
2268
+
2269
+ ```
2270
+ projmux hook validate
2271
+ ```
2272
+
2273
+ ### `projmux hook trust`
2274
+
2275
+ Trust the current project hook config
2118
2276
 
2119
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2277
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2120
2278
 
2121
2279
  Allowed effects:
2122
2280
 
@@ -2126,30 +2284,18 @@ Allowed effects:
2126
2284
  - `desired-state=unchanged`
2127
2285
  - `runtime=unchanged`
2128
2286
  - `focus=unchanged`
2129
- - `cardinality=zero-or-more`
2287
+ - `cardinality=unchanged`
2130
2288
  - `domain-effect=null`
2131
2289
 
2132
2290
  ```
2133
- projmux get runtime sessions [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2134
- projmux get runtime windows [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2135
- projmux get runtime panes [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2291
+ projmux hook trust
2136
2292
  ```
2137
2293
 
2138
- Subcommands:
2139
-
2140
- | Route | Summary |
2141
- | --- | --- |
2142
- | [`projmux get runtime sessions`](#projmux-get-runtime-sessions) | List every tmux session on one exact server with its attribution |
2143
- | [`projmux get runtime windows`](#projmux-get-runtime-windows) | List every tmux window on one exact server with its attribution |
2144
- | [`projmux get runtime panes`](#projmux-get-runtime-panes) | List every tmux pane on one exact server with its attribution |
2145
-
2146
- Canonical spelling: `projmux get runtime sessions`, `projmux get runtime windows`, `projmux get runtime panes`
2147
-
2148
- #### `projmux get runtime sessions`
2294
+ ### `projmux hook untrust`
2149
2295
 
2150
- List every tmux session on one exact server with its attribution
2296
+ Revoke project hook config trust
2151
2297
 
2152
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2298
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2153
2299
 
2154
2300
  Allowed effects:
2155
2301
 
@@ -2159,20 +2305,18 @@ Allowed effects:
2159
2305
  - `desired-state=unchanged`
2160
2306
  - `runtime=unchanged`
2161
2307
  - `focus=unchanged`
2162
- - `cardinality=zero-or-more`
2308
+ - `cardinality=unchanged`
2163
2309
  - `domain-effect=null`
2164
2310
 
2165
2311
  ```
2166
- projmux get runtime sessions [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2312
+ projmux hook untrust
2167
2313
  ```
2168
2314
 
2169
- Output modes (`-o`): `wide`, `json`, `none`
2170
-
2171
- #### `projmux get runtime windows`
2315
+ ## `projmux label`
2172
2316
 
2173
- List every tmux window on one exact server with its attribution
2317
+ Set or remove Projmux resource metadata.labels after creation
2174
2318
 
2175
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2319
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2176
2320
 
2177
2321
  Allowed effects:
2178
2322
 
@@ -2182,20 +2326,32 @@ Allowed effects:
2182
2326
  - `desired-state=unchanged`
2183
2327
  - `runtime=unchanged`
2184
2328
  - `focus=unchanged`
2185
- - `cardinality=zero-or-more`
2329
+ - `cardinality=unchanged`
2186
2330
  - `domain-effect=null`
2187
2331
 
2188
2332
  ```
2189
- projmux get runtime windows [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2333
+ projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2334
+ projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2335
+ projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2336
+ projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2190
2337
  ```
2191
2338
 
2192
- Output modes (`-o`): `wide`, `json`, `none`
2339
+ Subcommands:
2193
2340
 
2194
- #### `projmux get runtime panes`
2341
+ | Route | Summary |
2342
+ | --- | --- |
2343
+ | [`projmux label project`](#projmux-label-project) | Set or remove Project labels; with no selector inside tmux, the active Project |
2344
+ | [`projmux label window`](#projmux-label-window) | Set or remove Window labels; inside tmux a reference resolves within the active Project or ControlSession and no selector means the active Window |
2345
+ | [`projmux label pane`](#projmux-label-pane) | Set or remove Pane labels; inside tmux a reference resolves within the active Project or ControlSession and no selector means the active Pane |
2346
+ | [`projmux label agent`](#projmux-label-agent) | Set or remove Agent labels within the active Project or ControlSession without changing its name, topic, provider, or managed Pane |
2195
2347
 
2196
- List every tmux pane on one exact server with its attribution
2348
+ Canonical spelling: `projmux label project`, `projmux label window`, `projmux label pane`, `projmux label agent`
2197
2349
 
2198
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2350
+ ### `projmux label project`
2351
+
2352
+ Set or remove Project labels; with no selector inside tmux, the active Project
2353
+
2354
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2199
2355
 
2200
2356
  Allowed effects:
2201
2357
 
@@ -2205,20 +2361,20 @@ Allowed effects:
2205
2361
  - `desired-state=unchanged`
2206
2362
  - `runtime=unchanged`
2207
2363
  - `focus=unchanged`
2208
- - `cardinality=zero-or-more`
2364
+ - `cardinality=exact-one`
2209
2365
  - `domain-effect=null`
2210
2366
 
2211
2367
  ```
2212
- projmux get runtime panes [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2368
+ projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2213
2369
  ```
2214
2370
 
2215
- Output modes (`-o`): `wide`, `json`, `none`
2371
+ Aliases: `projects`
2216
2372
 
2217
- ### `projmux get notifications`
2373
+ ### `projmux label window`
2218
2374
 
2219
- List pending notification rows
2375
+ Set or remove Window labels; inside tmux a reference resolves within the active Project or ControlSession and no selector means the active Window
2220
2376
 
2221
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2377
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2222
2378
 
2223
2379
  Allowed effects:
2224
2380
 
@@ -2228,20 +2384,20 @@ Allowed effects:
2228
2384
  - `desired-state=unchanged`
2229
2385
  - `runtime=unchanged`
2230
2386
  - `focus=unchanged`
2231
- - `cardinality=zero-or-more`
2387
+ - `cardinality=exact-one`
2232
2388
  - `domain-effect=null`
2233
2389
 
2234
2390
  ```
2235
- projmux get notifications
2391
+ projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2236
2392
  ```
2237
2393
 
2238
- Aliases: `notification`
2394
+ Aliases: `windows`
2239
2395
 
2240
- ### `projmux get snapshots`
2396
+ ### `projmux label pane`
2241
2397
 
2242
- List saved session snapshots
2398
+ Set or remove Pane labels; inside tmux a reference resolves within the active Project or ControlSession and no selector means the active Pane
2243
2399
 
2244
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2400
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2245
2401
 
2246
2402
  Allowed effects:
2247
2403
 
@@ -2251,18 +2407,18 @@ Allowed effects:
2251
2407
  - `desired-state=unchanged`
2252
2408
  - `runtime=unchanged`
2253
2409
  - `focus=unchanged`
2254
- - `cardinality=zero-or-more`
2410
+ - `cardinality=exact-one`
2255
2411
  - `domain-effect=null`
2256
2412
 
2257
2413
  ```
2258
- projmux get snapshots
2414
+ projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2259
2415
  ```
2260
2416
 
2261
- Aliases: `snapshot`
2417
+ Aliases: `panes`
2262
2418
 
2263
- ### `projmux get pane`
2419
+ ### `projmux label agent`
2264
2420
 
2265
- Read one Pane resource; with no selector inside tmux, the active Pane
2421
+ Set or remove Agent labels within the active Project or ControlSession without changing its name, topic, provider, or managed Pane
2266
2422
 
2267
2423
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2268
2424
 
@@ -2278,16 +2434,14 @@ Allowed effects:
2278
2434
  - `domain-effect=null`
2279
2435
 
2280
2436
  ```
2281
- projmux get pane [--current] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
2437
+ projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2282
2438
  ```
2283
2439
 
2284
- Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `none`
2285
-
2286
- Field projections (`-o`): `cwd`
2440
+ Aliases: `agents`
2287
2441
 
2288
- ## `projmux hook`
2442
+ ## `projmux notification`
2289
2443
 
2290
- List, edit, validate, and trust lifecycle hook config
2444
+ Manage pending notification workflow state
2291
2445
 
2292
2446
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2293
2447
 
@@ -2303,26 +2457,24 @@ Allowed effects:
2303
2457
  - `domain-effect=null`
2304
2458
 
2305
2459
  ```
2306
- projmux hook list|edit|validate|trust|untrust
2460
+ projmux notification ack <id> | --all
2461
+ projmux notification reconcile [--json]
2307
2462
  ```
2308
2463
 
2309
2464
  Subcommands:
2310
2465
 
2311
2466
  | Route | Summary |
2312
2467
  | --- | --- |
2313
- | [`projmux hook list`](#projmux-hook-list) | List global and project lifecycle hooks |
2314
- | [`projmux hook edit`](#projmux-hook-edit) | Edit lifecycle hook config |
2315
- | [`projmux hook validate`](#projmux-hook-validate) | Validate lifecycle hook config |
2316
- | [`projmux hook trust`](#projmux-hook-trust) | Trust the current project hook config |
2317
- | [`projmux hook untrust`](#projmux-hook-untrust) | Revoke project hook config trust |
2468
+ | [`projmux notification ack`](#projmux-notification-ack) | Acknowledge notification rows |
2469
+ | [`projmux notification reconcile`](#projmux-notification-reconcile) | Reconcile the notification queue against live targets |
2318
2470
 
2319
- Canonical spelling: `projmux hook list`, `projmux hook edit`, `projmux hook validate`, `projmux hook trust`, `projmux hook untrust`
2471
+ Canonical spelling: `projmux notification ack`, `projmux notification reconcile`
2320
2472
 
2321
- ### `projmux hook list`
2473
+ ### `projmux notification ack`
2322
2474
 
2323
- List global and project lifecycle hooks
2475
+ Acknowledge notification rows
2324
2476
 
2325
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2477
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2326
2478
 
2327
2479
  Allowed effects:
2328
2480
 
@@ -2336,14 +2488,14 @@ Allowed effects:
2336
2488
  - `domain-effect=null`
2337
2489
 
2338
2490
  ```
2339
- projmux hook list
2491
+ projmux notification ack <id> | --all
2340
2492
  ```
2341
2493
 
2342
- ### `projmux hook edit`
2494
+ ### `projmux notification reconcile`
2343
2495
 
2344
- Edit lifecycle hook config
2496
+ Reconcile the notification queue against live targets
2345
2497
 
2346
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2498
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2347
2499
 
2348
2500
  Allowed effects:
2349
2501
 
@@ -2357,14 +2509,14 @@ Allowed effects:
2357
2509
  - `domain-effect=null`
2358
2510
 
2359
2511
  ```
2360
- projmux hook edit
2512
+ projmux notification reconcile [--json]
2361
2513
  ```
2362
2514
 
2363
- ### `projmux hook validate`
2515
+ ## `projmux open`
2364
2516
 
2365
- Validate lifecycle hook config
2517
+ Open a Project runtime and move the current client to it
2366
2518
 
2367
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2519
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2368
2520
 
2369
2521
  Allowed effects:
2370
2522
 
@@ -2378,14 +2530,22 @@ Allowed effects:
2378
2530
  - `domain-effect=null`
2379
2531
 
2380
2532
  ```
2381
- projmux hook validate
2533
+ projmux open project <ref> [-o receipt|none]
2382
2534
  ```
2383
2535
 
2384
- ### `projmux hook trust`
2536
+ Subcommands:
2385
2537
 
2386
- Trust the current project hook config
2538
+ | Route | Summary |
2539
+ | --- | --- |
2540
+ | [`projmux open project`](#projmux-open-project) | Materialize an offline Project runtime when needed and move the current tmux client to it; outside tmux it refuses and points at attach |
2387
2541
 
2388
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2542
+ Canonical spelling: `projmux open project`
2543
+
2544
+ ### `projmux open project`
2545
+
2546
+ Materialize an offline Project runtime when needed and move the current tmux client to it; outside tmux it refuses and points at attach
2547
+
2548
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2389
2549
 
2390
2550
  Allowed effects:
2391
2551
 
@@ -2393,20 +2553,22 @@ Allowed effects:
2393
2553
  - `address=unchanged`
2394
2554
  - `topology=unchanged`
2395
2555
  - `desired-state=unchanged`
2396
- - `runtime=unchanged`
2397
- - `focus=unchanged`
2398
- - `cardinality=unchanged`
2556
+ - `runtime=materialized|already-live`
2557
+ - `focus=moved-current-client`
2558
+ - `cardinality=exact-one`
2399
2559
  - `domain-effect=null`
2400
2560
 
2401
2561
  ```
2402
- projmux hook trust
2562
+ projmux open project <ref> [-o receipt|none]
2403
2563
  ```
2404
2564
 
2405
- ### `projmux hook untrust`
2565
+ Output modes (`-o`): `receipt`, `none`
2406
2566
 
2407
- Revoke project hook config trust
2567
+ ## `projmux persona`
2408
2568
 
2409
- Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
2569
+ List, show, edit, set, and delete Agent persona files
2570
+
2571
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2410
2572
 
2411
2573
  Allowed effects:
2412
2574
 
@@ -2420,14 +2582,30 @@ Allowed effects:
2420
2582
  - `domain-effect=null`
2421
2583
 
2422
2584
  ```
2423
- projmux hook untrust
2585
+ projmux persona list
2586
+ projmux persona show <name>
2587
+ projmux persona edit <name>
2588
+ projmux persona set <name> [--file <path> | -]
2589
+ projmux persona delete <name> --yes
2424
2590
  ```
2425
2591
 
2426
- ## `projmux notification`
2592
+ Subcommands:
2427
2593
 
2428
- Manage pending notification workflow state
2594
+ | Route | Summary |
2595
+ | --- | --- |
2596
+ | [`projmux persona list`](#projmux-persona-list) | List every stored persona with its digest, size, and modification time |
2597
+ | [`projmux persona show`](#projmux-persona-show) | Print one persona's content exactly as stored |
2598
+ | [`projmux persona edit`](#projmux-persona-edit) | Edit one persona in $EDITOR or $VISUAL, creating it when missing |
2599
+ | [`projmux persona set`](#projmux-persona-set) | Write one persona from a file or stdin without an editor |
2600
+ | [`projmux persona delete`](#projmux-persona-delete) | Delete one persona file; Agents already started with it keep their snapshot |
2429
2601
 
2430
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2602
+ Canonical spelling: `projmux persona list`, `projmux persona show`, `projmux persona edit`, `projmux persona set`, `projmux persona delete`
2603
+
2604
+ ### `projmux persona list`
2605
+
2606
+ List every stored persona with its digest, size, and modification time
2607
+
2608
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2431
2609
 
2432
2610
  Allowed effects:
2433
2611
 
@@ -2441,22 +2619,12 @@ Allowed effects:
2441
2619
  - `domain-effect=null`
2442
2620
 
2443
2621
  ```
2444
- projmux notification ack <id> | --all
2445
- projmux notification reconcile [--json]
2622
+ projmux persona list
2446
2623
  ```
2447
2624
 
2448
- Subcommands:
2449
-
2450
- | Route | Summary |
2451
- | --- | --- |
2452
- | [`projmux notification ack`](#projmux-notification-ack) | Acknowledge notification rows |
2453
- | [`projmux notification reconcile`](#projmux-notification-reconcile) | Reconcile the notification queue against live targets |
2454
-
2455
- Canonical spelling: `projmux notification ack`, `projmux notification reconcile`
2456
-
2457
- ### `projmux notification ack`
2625
+ ### `projmux persona show`
2458
2626
 
2459
- Acknowledge notification rows
2627
+ Print one persona's content exactly as stored
2460
2628
 
2461
2629
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2462
2630
 
@@ -2472,14 +2640,14 @@ Allowed effects:
2472
2640
  - `domain-effect=null`
2473
2641
 
2474
2642
  ```
2475
- projmux notification ack <id> | --all
2643
+ projmux persona show <name>
2476
2644
  ```
2477
2645
 
2478
- ### `projmux notification reconcile`
2646
+ ### `projmux persona edit`
2479
2647
 
2480
- Reconcile the notification queue against live targets
2648
+ Edit one persona in $EDITOR or $VISUAL, creating it when missing
2481
2649
 
2482
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2650
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2483
2651
 
2484
2652
  Allowed effects:
2485
2653
 
@@ -2493,14 +2661,14 @@ Allowed effects:
2493
2661
  - `domain-effect=null`
2494
2662
 
2495
2663
  ```
2496
- projmux notification reconcile [--json]
2664
+ projmux persona edit <name>
2497
2665
  ```
2498
2666
 
2499
- ## `projmux open`
2667
+ ### `projmux persona set`
2500
2668
 
2501
- Open a Project runtime and move the current client to it
2669
+ Write one persona from a file or stdin without an editor
2502
2670
 
2503
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2671
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2504
2672
 
2505
2673
  Allowed effects:
2506
2674
 
@@ -2514,20 +2682,12 @@ Allowed effects:
2514
2682
  - `domain-effect=null`
2515
2683
 
2516
2684
  ```
2517
- projmux open project <ref> [-o receipt|none]
2685
+ projmux persona set <name> [--file <path> | -]
2518
2686
  ```
2519
2687
 
2520
- Subcommands:
2521
-
2522
- | Route | Summary |
2523
- | --- | --- |
2524
- | [`projmux open project`](#projmux-open-project) | Materialize an offline Project runtime when needed and move the current tmux client to it; outside tmux it refuses and points at attach |
2525
-
2526
- Canonical spelling: `projmux open project`
2527
-
2528
- ### `projmux open project`
2688
+ ### `projmux persona delete`
2529
2689
 
2530
- Materialize an offline Project runtime when needed and move the current tmux client to it; outside tmux it refuses and points at attach
2690
+ Delete one persona file; Agents already started with it keep their snapshot
2531
2691
 
2532
2692
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2533
2693
 
@@ -2537,17 +2697,15 @@ Allowed effects:
2537
2697
  - `address=unchanged`
2538
2698
  - `topology=unchanged`
2539
2699
  - `desired-state=unchanged`
2540
- - `runtime=materialized|already-live`
2541
- - `focus=moved-current-client`
2542
- - `cardinality=exact-one`
2700
+ - `runtime=unchanged`
2701
+ - `focus=unchanged`
2702
+ - `cardinality=unchanged`
2543
2703
  - `domain-effect=null`
2544
2704
 
2545
2705
  ```
2546
- projmux open project <ref> [-o receipt|none]
2706
+ projmux persona delete <name> --yes
2547
2707
  ```
2548
2708
 
2549
- Output modes (`-o`): `receipt`, `none`
2550
-
2551
2709
  ## `projmux pin`
2552
2710
 
2553
2711
  Manage pinned project directories
@@ -2600,7 +2758,7 @@ projmux pin project list|add|remove|toggle|clear
2600
2758
 
2601
2759
  ## `projmux prune`
2602
2760
 
2603
- Prune stale Projects, Agents, and snapshots
2761
+ Prune stale Projects and Agents
2604
2762
 
2605
2763
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2606
2764
 
@@ -2616,7 +2774,6 @@ Allowed effects:
2616
2774
  - `domain-effect=null`
2617
2775
 
2618
2776
  ```
2619
- projmux prune snapshot [--older-than <duration>]
2620
2777
  projmux prune project --missing --older-than <duration> [--yes]
2621
2778
  projmux prune agent --older-than <duration> [--no-session-ref] [--no-pane] [--exclude <agent-ref>]... [--yes]
2622
2779
  ```
@@ -2627,9 +2784,8 @@ Subcommands:
2627
2784
  | --- | --- |
2628
2785
  | [`projmux prune agent`](#projmux-prune-agent) | Delete Offline or Failed Agents past a bounded age whose session ref or managed Panes are gone; live Panes and Running Agents are never selected |
2629
2786
  | [`projmux prune project`](#projmux-prune-project) | Delete Projects whose spec.root has been missing for a bounded age |
2630
- | [`projmux prune snapshot`](#projmux-prune-snapshot) | Inspect or delete preserved session snapshots (canonical spelling) |
2631
2787
 
2632
- Canonical spelling: `projmux prune agent`, `projmux prune project`, `projmux prune snapshot`
2788
+ Canonical spelling: `projmux prune agent`, `projmux prune project`
2633
2789
 
2634
2790
  ### `projmux prune agent`
2635
2791
 
@@ -2673,30 +2829,6 @@ Allowed effects:
2673
2829
  projmux prune project --missing --older-than <duration> [--yes]
2674
2830
  ```
2675
2831
 
2676
- ### `projmux prune snapshot`
2677
-
2678
- Inspect or delete preserved session snapshots (canonical spelling)
2679
-
2680
- Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2681
-
2682
- Allowed effects:
2683
-
2684
- - `identity=unchanged`
2685
- - `address=unchanged`
2686
- - `topology=unchanged`
2687
- - `desired-state=unchanged`
2688
- - `runtime=unchanged`
2689
- - `focus=unchanged`
2690
- - `cardinality=unchanged`
2691
- - `domain-effect=null`
2692
-
2693
- ```
2694
- projmux prune snapshot [--older-than <duration>]
2695
- projmux prune snapshot delete <session>...
2696
- ```
2697
-
2698
- Canonical spelling: `projmux delete snapshot`
2699
-
2700
2832
  ## `projmux quit`
2701
2833
 
2702
2834
  Quit the app-owned projmux tmux runtime
@@ -2997,56 +3129,6 @@ Allowed effects:
2997
3129
  projmux resources
2998
3130
  ```
2999
3131
 
3000
- ## `projmux restore`
3001
-
3002
- Project a saved snapshot into one exact closed Project desired state
3003
-
3004
- Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
3005
-
3006
- Allowed effects:
3007
-
3008
- - `identity=unchanged`
3009
- - `address=unchanged`
3010
- - `topology=unchanged`
3011
- - `desired-state=unchanged`
3012
- - `runtime=unchanged`
3013
- - `focus=unchanged`
3014
- - `cardinality=unchanged`
3015
- - `domain-effect=null`
3016
-
3017
- ```
3018
- projmux restore snapshot --session <name> [--project <ref> | -p <ref>] [--dry-run | --yes] [--client <tmux-client>]
3019
- ```
3020
-
3021
- Subcommands:
3022
-
3023
- | Route | Summary |
3024
- | --- | --- |
3025
- | [`projmux restore snapshot`](#projmux-restore-snapshot) | Project a saved snapshot into one exact closed Project desired state |
3026
-
3027
- Canonical spelling: `projmux restore snapshot`
3028
-
3029
- ### `projmux restore snapshot`
3030
-
3031
- Project a saved snapshot into one exact closed Project desired state
3032
-
3033
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
3034
-
3035
- Allowed effects:
3036
-
3037
- - `identity=unchanged|created|reused|removed|replaced`
3038
- - `address=unchanged|allocated|released`
3039
- - `topology=unchanged|established|removed|replaced`
3040
- - `desired-state=unchanged|created|removed|replaced`
3041
- - `runtime=unchanged|materialized`
3042
- - `focus=unchanged|moved-current-client|attached-caller`
3043
- - `cardinality=unchanged|one-or-more`
3044
- - `domain-effect=null`
3045
-
3046
- ```
3047
- projmux restore snapshot --session <name> [--project <ref> | -p <ref>] [--dry-run | --yes] [--client <tmux-client>]
3048
- ```
3049
-
3050
3132
  ## `projmux runtime`
3051
3133
 
3052
3134
  Manage the live and ephemeral tmux runtime inventory
@@ -3457,13 +3539,13 @@ Subcommands:
3457
3539
 
3458
3540
  | Route | Summary |
3459
3541
  | --- | --- |
3460
- | [`projmux unregister project`](#projmux-unregister-project) | Unregister Projects and their Registry descendants while preserving roots, Git/worktrees, snapshots, and runtime |
3542
+ | [`projmux unregister project`](#projmux-unregister-project) | Unregister Projects and their Registry descendants while preserving roots, Git/worktrees, and runtime |
3461
3543
 
3462
3544
  Canonical spelling: `projmux unregister project`
3463
3545
 
3464
3546
  ### `projmux unregister project`
3465
3547
 
3466
- Unregister Projects and their Registry descendants while preserving roots, Git/worktrees, snapshots, and runtime
3548
+ Unregister Projects and their Registry descendants while preserving roots, Git/worktrees, and runtime
3467
3549
 
3468
3550
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
3469
3551