sisyphi 1.1.18 → 1.1.19

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.
Files changed (231) hide show
  1. package/README.md +195 -75
  2. package/dist/chunk-36VJ7ZBD.js +1898 -0
  3. package/dist/chunk-36VJ7ZBD.js.map +1 -0
  4. package/dist/{chunk-C2XKXERJ.js → chunk-M6Z3KHOH.js} +159 -46
  5. package/dist/chunk-M6Z3KHOH.js.map +1 -0
  6. package/dist/chunk-O4ZHSQ5R.js +544 -0
  7. package/dist/chunk-O4ZHSQ5R.js.map +1 -0
  8. package/dist/chunk-P2HHTIPM.js +478 -0
  9. package/dist/chunk-P2HHTIPM.js.map +1 -0
  10. package/dist/{chunk-TMBAVPHH.js → chunk-PNDCVKBN.js} +73 -1
  11. package/dist/chunk-PNDCVKBN.js.map +1 -0
  12. package/dist/chunk-SVGIQ2G4.js +1076 -0
  13. package/dist/chunk-SVGIQ2G4.js.map +1 -0
  14. package/dist/cli.js +4405 -892
  15. package/dist/cli.js.map +1 -1
  16. package/dist/daemon.js +4340 -1990
  17. package/dist/daemon.js.map +1 -1
  18. package/dist/{paths-XRDEEJ5R.js → paths-JXFLR5BN.js} +38 -2
  19. package/dist/single-ask-6G4BIVY2.js +132 -0
  20. package/dist/single-ask-6G4BIVY2.js.map +1 -0
  21. package/dist/templates/CLAUDE.md +1 -56
  22. package/dist/templates/agent-plugin/agents/CLAUDE.md +2 -65
  23. package/dist/templates/agent-plugin/agents/debug.md +43 -6
  24. package/dist/templates/agent-plugin/agents/debug.settings.json +57 -0
  25. package/dist/templates/agent-plugin/agents/explore.md +28 -1
  26. package/dist/templates/agent-plugin/agents/explore.settings.json +57 -0
  27. package/dist/templates/agent-plugin/agents/implementor.md +94 -0
  28. package/dist/templates/agent-plugin/agents/implementor.settings.json +57 -0
  29. package/dist/templates/agent-plugin/agents/operator.md +43 -1
  30. package/dist/templates/agent-plugin/agents/operator.settings.json +57 -0
  31. package/dist/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
  32. package/dist/templates/agent-plugin/agents/plan.md +176 -86
  33. package/dist/templates/agent-plugin/agents/plan.settings.json +57 -0
  34. package/dist/templates/agent-plugin/agents/problem/adversarial.md +26 -0
  35. package/dist/templates/agent-plugin/agents/problem/contrarian.md +26 -0
  36. package/dist/templates/agent-plugin/agents/problem/first-principles.md +26 -0
  37. package/dist/templates/agent-plugin/agents/problem/precedent.md +25 -0
  38. package/dist/templates/agent-plugin/agents/problem/simplifier.md +26 -0
  39. package/dist/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
  40. package/dist/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
  41. package/dist/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
  42. package/dist/templates/agent-plugin/agents/problem.md +334 -79
  43. package/dist/templates/agent-plugin/agents/problem.settings.json +57 -0
  44. package/dist/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
  45. package/dist/templates/agent-plugin/agents/research-lead/critic.md +61 -0
  46. package/dist/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
  47. package/dist/templates/agent-plugin/agents/research-lead.md +184 -0
  48. package/dist/templates/agent-plugin/agents/research-lead.settings.json +57 -0
  49. package/dist/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
  50. package/dist/templates/agent-plugin/agents/review/compliance.md +14 -3
  51. package/dist/templates/agent-plugin/agents/review/efficiency.md +15 -4
  52. package/dist/templates/agent-plugin/agents/review/quality.md +20 -6
  53. package/dist/templates/agent-plugin/agents/review/reuse.md +17 -5
  54. package/dist/templates/agent-plugin/agents/review/security.md +10 -3
  55. package/dist/templates/agent-plugin/agents/review/tests.md +58 -0
  56. package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
  57. package/dist/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
  58. package/dist/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
  59. package/dist/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
  60. package/dist/templates/agent-plugin/agents/review-plan/security.md +5 -2
  61. package/dist/templates/agent-plugin/agents/review-plan.md +52 -5
  62. package/dist/templates/agent-plugin/agents/review-plan.settings.json +57 -0
  63. package/dist/templates/agent-plugin/agents/review.md +89 -16
  64. package/dist/templates/agent-plugin/agents/review.settings.json +57 -0
  65. package/dist/templates/agent-plugin/agents/spec/engineer.md +175 -0
  66. package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
  67. package/dist/templates/agent-plugin/agents/spec.md +444 -0
  68. package/dist/templates/agent-plugin/agents/spec.settings.json +57 -0
  69. package/dist/templates/agent-plugin/agents/test-spec.md +58 -2
  70. package/dist/templates/agent-plugin/agents/test-spec.settings.json +57 -0
  71. package/dist/templates/agent-plugin/hooks/CLAUDE.md +9 -57
  72. package/dist/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
  73. package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  74. package/dist/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
  75. package/dist/templates/agent-plugin/hooks/plan-validate.sh +97 -0
  76. package/dist/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
  77. package/dist/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
  78. package/dist/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
  79. package/dist/templates/agent-plugin/hooks/require-submit.sh +51 -42
  80. package/dist/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
  81. package/dist/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
  82. package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
  83. package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
  84. package/dist/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
  85. package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
  86. package/dist/templates/agent-suffix.md +7 -4
  87. package/dist/templates/baleia.lua +42 -0
  88. package/dist/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
  89. package/dist/templates/dashboard-claude.md +7 -3
  90. package/dist/templates/orchestrator-base.md +89 -52
  91. package/dist/templates/orchestrator-completion.md +47 -24
  92. package/dist/templates/orchestrator-discovery.md +183 -0
  93. package/dist/templates/orchestrator-impl.md +47 -18
  94. package/dist/templates/orchestrator-planning.md +109 -20
  95. package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
  96. package/dist/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
  97. package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
  98. package/dist/templates/orchestrator-plugin/hooks/hooks.json +0 -10
  99. package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
  100. package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
  101. package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
  102. package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
  103. package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
  104. package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
  105. package/dist/templates/orchestrator-settings.json +55 -0
  106. package/dist/templates/orchestrator-validation.md +17 -14
  107. package/dist/templates/sisyphus-init.lua +30 -0
  108. package/dist/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
  109. package/dist/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
  110. package/dist/templates/termrender-haiku-system.md +82 -0
  111. package/dist/templates/whip-animation.sh +345 -0
  112. package/dist/tui.js +3242 -2189
  113. package/dist/tui.js.map +1 -1
  114. package/native/SisyphusNotify/main.swift +15 -5
  115. package/package.json +8 -6
  116. package/templates/CLAUDE.md +1 -56
  117. package/templates/agent-plugin/agents/CLAUDE.md +2 -65
  118. package/templates/agent-plugin/agents/debug.md +43 -6
  119. package/templates/agent-plugin/agents/debug.settings.json +57 -0
  120. package/templates/agent-plugin/agents/explore.md +28 -1
  121. package/templates/agent-plugin/agents/explore.settings.json +57 -0
  122. package/templates/agent-plugin/agents/implementor.md +94 -0
  123. package/templates/agent-plugin/agents/implementor.settings.json +57 -0
  124. package/templates/agent-plugin/agents/operator.md +43 -1
  125. package/templates/agent-plugin/agents/operator.settings.json +57 -0
  126. package/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
  127. package/templates/agent-plugin/agents/plan.md +176 -86
  128. package/templates/agent-plugin/agents/plan.settings.json +57 -0
  129. package/templates/agent-plugin/agents/problem/adversarial.md +26 -0
  130. package/templates/agent-plugin/agents/problem/contrarian.md +26 -0
  131. package/templates/agent-plugin/agents/problem/first-principles.md +26 -0
  132. package/templates/agent-plugin/agents/problem/precedent.md +25 -0
  133. package/templates/agent-plugin/agents/problem/simplifier.md +26 -0
  134. package/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
  135. package/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
  136. package/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
  137. package/templates/agent-plugin/agents/problem.md +334 -79
  138. package/templates/agent-plugin/agents/problem.settings.json +57 -0
  139. package/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
  140. package/templates/agent-plugin/agents/research-lead/critic.md +61 -0
  141. package/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
  142. package/templates/agent-plugin/agents/research-lead.md +184 -0
  143. package/templates/agent-plugin/agents/research-lead.settings.json +57 -0
  144. package/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
  145. package/templates/agent-plugin/agents/review/compliance.md +14 -3
  146. package/templates/agent-plugin/agents/review/efficiency.md +15 -4
  147. package/templates/agent-plugin/agents/review/quality.md +20 -6
  148. package/templates/agent-plugin/agents/review/reuse.md +17 -5
  149. package/templates/agent-plugin/agents/review/security.md +10 -3
  150. package/templates/agent-plugin/agents/review/tests.md +58 -0
  151. package/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
  152. package/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
  153. package/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
  154. package/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
  155. package/templates/agent-plugin/agents/review-plan/security.md +5 -2
  156. package/templates/agent-plugin/agents/review-plan.md +52 -5
  157. package/templates/agent-plugin/agents/review-plan.settings.json +57 -0
  158. package/templates/agent-plugin/agents/review.md +89 -16
  159. package/templates/agent-plugin/agents/review.settings.json +57 -0
  160. package/templates/agent-plugin/agents/spec/engineer.md +175 -0
  161. package/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
  162. package/templates/agent-plugin/agents/spec.md +444 -0
  163. package/templates/agent-plugin/agents/spec.settings.json +57 -0
  164. package/templates/agent-plugin/agents/test-spec.md +58 -2
  165. package/templates/agent-plugin/agents/test-spec.settings.json +57 -0
  166. package/templates/agent-plugin/hooks/CLAUDE.md +9 -57
  167. package/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
  168. package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  169. package/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
  170. package/templates/agent-plugin/hooks/plan-validate.sh +97 -0
  171. package/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
  172. package/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
  173. package/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
  174. package/templates/agent-plugin/hooks/require-submit.sh +51 -42
  175. package/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
  176. package/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
  177. package/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
  178. package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
  179. package/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
  180. package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
  181. package/templates/agent-suffix.md +7 -4
  182. package/templates/baleia.lua +42 -0
  183. package/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
  184. package/templates/dashboard-claude.md +7 -3
  185. package/templates/orchestrator-base.md +89 -52
  186. package/templates/orchestrator-completion.md +47 -24
  187. package/templates/orchestrator-discovery.md +183 -0
  188. package/templates/orchestrator-impl.md +47 -18
  189. package/templates/orchestrator-planning.md +109 -20
  190. package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
  191. package/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
  192. package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
  193. package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
  194. package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
  195. package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
  196. package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
  197. package/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
  198. package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
  199. package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
  200. package/templates/orchestrator-settings.json +55 -0
  201. package/templates/orchestrator-validation.md +17 -14
  202. package/templates/sisyphus-init.lua +30 -0
  203. package/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
  204. package/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
  205. package/templates/termrender-haiku-system.md +82 -0
  206. package/templates/whip-animation.sh +345 -0
  207. package/dist/chunk-22ZGZTGY.js +0 -67
  208. package/dist/chunk-22ZGZTGY.js.map +0 -1
  209. package/dist/chunk-6PJVJEYQ.js +0 -46
  210. package/dist/chunk-6PJVJEYQ.js.map +0 -1
  211. package/dist/chunk-C2XKXERJ.js.map +0 -1
  212. package/dist/chunk-TMBAVPHH.js.map +0 -1
  213. package/dist/chunk-V36NXMHP.js +0 -299
  214. package/dist/chunk-V36NXMHP.js.map +0 -1
  215. package/dist/templates/agent-plugin/agents/design.md +0 -134
  216. package/dist/templates/agent-plugin/agents/requirements.md +0 -138
  217. package/dist/templates/begin.md +0 -22
  218. package/dist/templates/nvim-tutorial.txt +0 -68
  219. package/dist/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  220. package/dist/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  221. package/dist/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  222. package/dist/templates/orchestrator-strategy.md +0 -238
  223. package/templates/agent-plugin/agents/design.md +0 -134
  224. package/templates/agent-plugin/agents/requirements.md +0 -138
  225. package/templates/begin.md +0 -22
  226. package/templates/nvim-tutorial.txt +0 -68
  227. package/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  228. package/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  229. package/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  230. package/templates/orchestrator-strategy.md +0 -238
  231. /package/dist/{paths-XRDEEJ5R.js.map → paths-JXFLR5BN.js.map} +0 -0
package/README.md CHANGED
@@ -31,26 +31,26 @@ A tmux-integrated orchestration daemon for [Claude Code](https://docs.anthropic.
31
31
 
32
32
  ## What this is
33
33
 
34
- Sisyphus is a thin orchestration layer on top of Claude Code. It doesn't replace Claude Code or wrap it in some abstraction — it just runs multiple Claude Code instances in tmux panes and coordinates them. Every agent is a real `claude` process with full access to your codebase, your tools, your CLAUDE.md, your hooks. You keep all the steerability of Claude Code; sisyphus just handles the "run N of them in parallel and loop until done" part.
34
+ Sisyphus runs multiple Claude Code instances in tmux panes and coordinates them. That's it. Every agent is a real `claude` process with full access to your codebase, your CLAUDE.md, your hooks. Sisyphus just handles the "run N of them in parallel and loop until done" part.
35
35
 
36
- If you're familiar with the [Ralph Wiggum loop](https://ghuntley.com/ralph/) `while true; do claude --prompt task.md; done` sisyphus is that idea taken further. Instead of one agent in a loop, you get an orchestrator that decomposes work into parallel agents, each looping independently, with structured state that persists across cycles. The orchestrator itself is in a Ralph loop: it plans, spawns agents, gets killed, and respawns fresh with all the results. Same principle, more leverage.
36
+ If you know the [Ralph Wiggum loop](https://ghuntley.com/ralph/) (`while true; do claude --prompt task.md; done`), this is that idea taken further. Instead of one agent in a loop, an orchestrator decomposes work into parallel agents, each looping independently, with structured state that persists across cycles. The orchestrator itself is in a Ralph loop: plan, spawn agents, get killed, respawn fresh with all the results.
37
37
 
38
38
  ## How it works
39
39
 
40
- Most hard tasks aren't hard because any single piece is difficult — they're hard because there are many pieces and context gets lost between them. A developer working a 12-file refactor holds it all in their head until they don't, then makes a mistake three files from the end because they forgot a constraint from the beginning.
40
+ Most hard tasks aren't hard because any single piece is difficult. They're hard because there are many pieces and context gets lost between them. You're working a 12-file refactor, you hold it all in your head until you don't, and you make a mistake three files from the end because you forgot a constraint from the beginning.
41
41
 
42
- Sisyphus solves this structurally. An **orchestrator** Claude instance reads the full task, breaks it into subtasks, and spawns parallel **agent** Claude instances each in its own tmux pane with a focused instruction. Agents work simultaneously, submit reports when they're done, and the orchestrator respawns to review progress and plan the next round.
42
+ The fix is structural. An orchestrator Claude instance reads the full task, breaks it into subtasks, and spawns parallel agent instances, each in its own tmux pane with a focused instruction. Agents work simultaneously and submit reports when done. Then the orchestrator respawns to review progress and plan the next round.
43
43
 
44
- The key mechanism: **the orchestrator is stateless**. After it spawns agents and yields, it gets killed. When all agents finish, the daemon respawns a fresh orchestrator with the complete session state every agent report, every cycle's history, the running plan. This means the orchestrator never degrades. Cycle 1 and cycle 15 get the same quality of reasoning, because each cycle starts with a full context window and a clean slate. The boulder rolls back down; Sisyphus walks back down after it, picks it up, and pushes again but this time he remembers everything from every previous push.
44
+ The trick: the orchestrator is stateless. After it spawns agents and yields, it gets killed. When all agents finish, the daemon respawns a fresh orchestrator with the complete session state (every agent report, every cycle's history, the running plan). Cycle 1 and cycle 15 get the same quality of reasoning because each one starts with a full context window and a clean slate. The boulder rolls back down; Sisyphus walks back down after it, picks it up, and pushes again. But this time he remembers everything from every previous push.
45
45
 
46
- The daemon handles the lifecycle: spawning panes, detecting when agents finish, persisting state to disk, respawning the orchestrator. You just describe what you want built and watch it work.
46
+ The daemon handles lifecycle: spawning panes, detecting when agents finish, persisting state to disk, respawning the orchestrator.
47
47
 
48
48
  ## Requirements
49
49
 
50
- - **Node.js** >= 22
51
- - **tmux** >= 3.2 (you must be inside a tmux session)
52
- - **Claude Code** CLI (`claude`) installed and authenticated
53
- - **Neovim** (optional enables embedded editor in the dashboard)
50
+ - Node.js >= 22
51
+ - tmux >= 3.2 (you must be inside a tmux session)
52
+ - Claude Code CLI (`claude`) installed and authenticated
53
+ - Neovim (optional, enables embedded editor in the dashboard)
54
54
 
55
55
  ## Install
56
56
 
@@ -58,18 +58,18 @@ The daemon handles the lifecycle: spawning panes, detecting when agents finish,
58
58
  npm install -g sisyphi
59
59
  ```
60
60
 
61
- Then run one-time setup:
61
+ Then run setup once:
62
62
 
63
63
  ```bash
64
- sisyphus setup
64
+ sisyphus admin setup
65
65
  ```
66
66
 
67
67
  This installs the background daemon (macOS launchd), tmux keybindings (`M-s` to cycle sessions, `M-S` for dashboard), and checks your environment. The daemon auto-updates when new versions are published.
68
68
 
69
- Verify everything is working:
69
+ Verify:
70
70
 
71
71
  ```bash
72
- sisyphus doctor
72
+ sisyphus admin doctor
73
73
  ```
74
74
 
75
75
  ## Quick start
@@ -80,17 +80,17 @@ sisyphus dashboard # Open the TUI (auto-opens on start)
80
80
  sisyphus status # Check session state from the CLI
81
81
  ```
82
82
 
83
- Sisyphus is a CLI that Claude Code calls for you. You tell Claude to use it, and Claude handles the rest — calling `sisyphus start`, writing the task description, and kicking off the orchestration loop.
83
+ Sisyphus is a CLI that Claude Code calls for you. Tell Claude to use it and it handles the rest.
84
84
 
85
- In Claude Code, just say something like:
85
+ In Claude Code, say something like:
86
86
 
87
87
  > Use sisyphus to migrate our REST API from Express to Hono. The API lives in src/api/ with 14 route files...
88
88
 
89
- Claude will call `sisyphus start` with a detailed task description, and tmux panes will start appearing with parallel agents working on your codebase.
89
+ Claude calls `sisyphus start` with a detailed task description, and tmux panes start appearing with parallel agents working on your codebase.
90
90
 
91
- ### Setting up a slash command (recommended)
91
+ ### Slash command (recommended)
92
92
 
93
- Create a file at `.claude/commands/sisyphus-begin.md` in your project:
93
+ Create `.claude/commands/sisyphus-begin.md` in your project:
94
94
 
95
95
  ~~~markdown
96
96
  Run `sisyphus start` with a detailed task description:
@@ -99,17 +99,17 @@ Run `sisyphus start` with a detailed task description:
99
99
  sisyphus start "your task description"
100
100
  ```
101
101
 
102
- **Write a thorough task description.** Include what needs to be built or fixed, where relevant code lives, what done looks like, constraints or preferences, and adjacent concerns (don't break X, keep Y working). More context produces better results the orchestrator figures out how to break it down.
102
+ Write a thorough task description. Include what needs to be built or fixed, where relevant code lives, what done looks like, constraints, and adjacent concerns (don't break X, keep Y working). More context produces better results. The orchestrator figures out how to break it down.
103
103
 
104
- **Example:**
104
+ Example:
105
105
  ```bash
106
106
  sisyphus start "Rip out our hand-rolled RBAC system and replace it with a proper policy engine. Current implementation is scattered across 20+ middleware files in src/middleware/auth/ that each do their own role checks with hardcoded string comparisons. Replace with a centralized policy engine in src/auth/policies/ using a declarative permission model — define resources, actions, and role mappings in a single config, then write one middleware that evaluates policies. Migrate every route that currently calls requireRole() or checkPermission() to the new system. The admin panel (src/routes/admin/) has the most complex rules including org-scoped permissions and delegated access — those need to work exactly as before. Add integration tests that cover the full matrix: superadmin, org-admin, member, and guest across every protected endpoint. Don't break the public API routes in src/routes/v1/public/. The existing test suite (npm test) must pass when you're done."
107
107
  ```
108
108
  ~~~
109
109
 
110
- Then in Claude Code, type `/sisyphus-begin` followed by your task and Claude will use sisyphus to orchestrate it.
110
+ Then type `/sisyphus-begin` followed by your task in Claude Code.
111
111
 
112
- Alternatively, add a note to your `CLAUDE.md`:
112
+ Or just add a note to your `CLAUDE.md`:
113
113
 
114
114
  ```markdown
115
115
  ## Sisyphus
@@ -119,65 +119,75 @@ Run `sisyphus start "detailed task description"` inside tmux.
119
119
 
120
120
  ### Interactive tutorial
121
121
 
122
- If you're new to tmux or sisyphus, run the guided walkthrough:
122
+ New to tmux or sisyphus? Run the guided walkthrough:
123
123
 
124
124
  ```bash
125
- sisyphus getting-started
125
+ sisyphus admin getting-started
126
126
  ```
127
127
 
128
- Six steps covering tmux basics, neovim essentials, sisyphus concepts, and a live demo session.
128
+ Covers tmux basics, neovim essentials, sisyphus concepts, and a live demo session.
129
129
 
130
130
  ## Dashboard
131
131
 
132
- The dashboard is a full-screen TUI for monitoring and controlling sessions in real time.
132
+ Full-screen TUI for watching and controlling sessions.
133
133
 
134
134
  ```bash
135
135
  sisyphus dashboard # or press M-S (Alt-Shift-S)
136
136
  ```
137
137
 
138
- It auto-opens when you `sisyphus start` a session.
138
+ Auto-opens when you `sisyphus start`.
139
139
 
140
- **Layout:**
140
+ Left panel is a session tree (sessions, cycles, agents, reports) with status indicators. Right panel shows detail for whatever's selected: roadmap, agent instructions, report content, live pane output. If neovim is available, files open in an embedded editor. Bottom bar has mode and keybinding hints.
141
141
 
142
- - **Left panel** Session tree with collapsible hierarchy: sessions → cycles → agents → reports. Status indicators show active/completed/paused state at a glance.
143
- - **Right panel** — Context-sensitive detail view for the selected node: session roadmap, agent instructions, report content, or live pane output. Opens files in an embedded neovim instance when available.
144
- - **Bottom bar** — Current mode, keybinding hints, and transient notifications.
145
-
146
- **Key bindings:**
142
+ Key bindingsnavigate mode:
147
143
 
148
144
  | Key | Action |
149
145
  |-----|--------|
150
146
  | `j/k` or `↑/↓` | Navigate tree / scroll detail |
151
147
  | `h/l` or `←/→` | Collapse/expand nodes |
148
+ | `Tab` | Cycle panel focus |
149
+ | `Enter` | Open selection |
152
150
  | `n` | New session (compose mode) |
151
+ | `m` | Message orchestrator |
153
152
  | `R` | Resume a paused/completed session |
154
- | `w` | Jump to session's tmux window |
155
- | `g` | Edit goal |
153
+ | `g` | Edit goal |
156
154
  | `p` | Open roadmap |
157
- | `m` | Message orchestrator |
158
155
  | `r` | Re-run agent |
159
156
  | `x` | Restart agent |
160
- | `Space` | Leader menu (copy, delete, spawn agent, shell, etc.) |
161
- | `Tab` | Cycle panel focus |
157
+ | `b` | Jump to session's tmux window |
158
+ | `w` | Go to session window |
159
+ | `o` | Open (file manager) |
160
+ | `e` | Edit context file |
161
+ | `S` | Session info |
162
+ | `F` | Filter / search |
163
+ | `c` | Open companion overlay |
162
164
  | `/` | Search sessions |
165
+ | `q` | Quit |
163
166
  | `?` | Help overlay |
164
167
 
165
- Compose mode opens a temp file in the embedded neovim for multi-line input (new sessions, messages, resume instructions). Falls back to tmux popups if neovim isn't available.
168
+ Key bindings leader mode (`Space` + key):
169
+
170
+ | Key | Action |
171
+ |-----|--------|
172
+ | `Space c …` | Copy submenu: `p` path, `i` id, `c` context, `l` logs, `r` report, `a` agent-id |
173
+ | `Space o …` | Open submenu: `g` goal, `r` roadmap, `s` strategy, `l` logs, `d` dir, `R` latest report, `c` scratch, `e` context file |
174
+ | `Space a …` | Agent submenu: `s` spawn, `m` message, `r` restart, `R` re-run, `j` jump-pane, `o` claude, `t` tail, `k` kill, `e` quick-Explore, `d` quick-Debug |
175
+ | `Space S …` | Session submenu: `n` new, `r` resume, `c` continue, `b` rollback, `k` kill, `d` delete, `e` export, `w` window, `C` clone, `i` history |
176
+ | `Space g …` | Go submenu: `w` window, `p` pane-picker, `s` session-picker, `n` next session, `r` reconnect |
177
+
178
+ Compose mode opens a temp file in neovim for multi-line input (new sessions, messages, resume instructions). Falls back to tmux popups without neovim.
166
179
 
167
180
  ## Agent types
168
181
 
169
- Agents can be spawned with role templates that define their model, behavior, and capabilities. The orchestrator discovers available types automatically and uses them to match the right agent to each subtask.
182
+ Agents can be spawned with role templates that set their model, behavior, and capabilities. The orchestrator discovers available types and matches them to subtasks.
170
183
 
171
184
  ### Built-in types
172
185
 
173
- Sisyphus ships these agent types:
174
-
175
186
  | Type | Description |
176
187
  |------|-------------|
177
188
  | `sisyphus:worker` | Generic agent (default) |
178
- | `sisyphus:plan` | Plan lead breaks work into phases |
179
- | `sisyphus:design` | Technical design and architecture |
180
- | `sisyphus:requirements` | EARS-based requirements analysis |
189
+ | `sisyphus:plan` | Plan lead, breaks work into phases |
190
+ | `sisyphus:spec` | Interactive design + requirements spec session |
181
191
  | `sisyphus:problem` | Problem exploration and assumption challenging |
182
192
  | `sisyphus:review` | Code review |
183
193
  | `sisyphus:review-plan` | Plan review with parallel sub-reviewers |
@@ -188,7 +198,7 @@ Sisyphus ships these agent types:
188
198
 
189
199
  ### Custom agent types
190
200
 
191
- Define your own by creating a markdown file with YAML frontmatter:
201
+ Create a markdown file with YAML frontmatter:
192
202
 
193
203
  ```markdown
194
204
  ---
@@ -206,7 +216,7 @@ You are a security-focused code reviewer. Analyze the code for OWASP top 10
206
216
  vulnerabilities, injection risks, auth bypasses, and data exposure...
207
217
  ```
208
218
 
209
- **Resolution order** (first match wins):
219
+ Resolution order (first match wins):
210
220
  1. `.claude/agents/{name}.md` (project-local)
211
221
  2. `~/.claude/agents/{name}.md` (user-global)
212
222
  3. Bundled `sisyphus:{name}`
@@ -223,46 +233,48 @@ vulnerabilities, injection risks, auth bypasses, and data exposure...
223
233
  | `skills` | Claude Code skills to enable |
224
234
  | `permissionMode` | Permission handling mode |
225
235
 
226
- Models prefixed with `gpt-` or `codex-` automatically route to the OpenAI provider (Codex CLI).
236
+ `gpt-` and `codex-` prefixed models automatically route to the OpenAI provider (Codex CLI).
227
237
 
228
238
  ## Tmux integration
229
239
 
230
240
  ### Status bar
231
241
 
232
- The daemon renders a live status indicator into your tmux status bar showing all sessions scoped to the current working directory:
242
+ The daemon puts a live status indicator in your tmux status bar, scoped to the current working directory:
233
243
 
234
- - **Yellow dot** orchestrator processing
235
- - **Yellow diamond** agents running
236
- - **Green dot** session completed
237
- - **Red dot** waiting for input
238
- - **Gray** idle / between cycles
244
+ - Yellow dot: orchestrator processing
245
+ - Yellow diamond: agents running
246
+ - Green dot: session completed
247
+ - Red dot: waiting for input
248
+ - Gray: idle / between cycles
239
249
 
240
- Session phases update every 5 seconds. The currently focused session is highlighted.
250
+ Updates every 5 seconds. Focused session is highlighted.
241
251
 
242
252
  ### Keybindings
243
253
 
244
- Installed by `sisyphus setup` into `~/.sisyphus/tmux.conf`:
254
+ Installed by `sisyphus admin setup` into `~/.sisyphus/tmux.conf`. Requires tmux ≥ 3.2.
245
255
 
246
256
  | Key | Action |
247
257
  |-----|--------|
248
258
  | `M-s` | Cycle through sisyphus sessions in current project |
249
259
  | `M-S` | Jump to dashboard window |
250
- | `prefix-x` | Smart kill kills pane or session depending on context |
260
+ | `Ctrl-S` | Open the which-key popup (anchored bottom-right) |
261
+ | `prefix-x` | Smart kill: pane or session depending on context |
262
+
263
+ The which-key popup shows direct actions and submenu prefixes. Press the mnemonic key to fire an action; press a submenu prefix (`c`, `o`, `a`, `S`, `g`) to enter that submenu. Submenus follow the same letter conventions as the dashboard `Space` leader, so muscle memory transfers.
264
+
265
+ Press `Ctrl-S ?` to see the full reference.
251
266
 
252
267
  ### Native notifications (macOS)
253
268
 
254
- On macOS, sisyphus builds a native notification helper (`SisyphusNotify.app`) during install. Notifications fire on session completion, agent crashes, and other lifecycle events. Clicking a notification switches your terminal to the relevant session.
269
+ Sisyphus builds a native notification helper (`SisyphusNotify.app`) during install. Notifications fire on session completion, agent crashes, and other lifecycle events. Clicking one switches your terminal to the relevant session.
255
270
 
256
271
  Falls back to `terminal-notifier` or `osascript` if the native app isn't available.
257
272
 
258
273
  ## Companion
259
274
 
260
- The companion is a persistent character that tracks your work across sessions. It earns XP, levels up (30 levels from *Boulder Intern* to *The Absurd Hero*), unlocks achievements, and shifts mood based on your usage patterns time of day, session length, crash frequency, efficiency.
275
+ A persistent character that tracks your work across sessions. Earns XP, levels up (30 levels from *Boulder Intern* to *The Absurd Hero*), unlocks achievements, and shifts mood based on usage patterns (time of day, session length, crash frequency, efficiency).
261
276
 
262
- It manifests as:
263
- - A mood-colored face in the tmux status bar (updates in real time)
264
- - Commentary on lifecycle events (session start, level-up, late-night coding) generated by Haiku
265
- - An achievement gallery with 66 unlockable badges across milestone, session, time, and behavioral categories
277
+ Shows up as a mood-colored face in the tmux status bar, generates commentary on lifecycle events via Haiku, and has 66 unlockable badges.
266
278
 
267
279
  ```bash
268
280
  sisyphus companion # View profile, stats, and achievements
@@ -270,11 +282,11 @@ sisyphus companion --badges # Full achievement gallery
270
282
  sisyphus companion --name Bub # Rename your companion
271
283
  ```
272
284
 
273
- In the dashboard, press `Space` → `c` to open the companion overlay.
285
+ Press `c` in the dashboard (nav mode) to open the companion overlay.
274
286
 
275
287
  ## Configuration
276
288
 
277
- Project (`.sisyphus/config.json`) overrides global (`~/.sisyphus/config.json`):
289
+ Project `.sisyphus/config.json` overrides global `~/.sisyphus/config.json`:
278
290
 
279
291
  ```json
280
292
  {
@@ -301,22 +313,130 @@ Project (`.sisyphus/config.json`) overrides global (`~/.sisyphus/config.json`):
301
313
  | `notifications.enabled` | `true` | Desktop notifications on lifecycle events |
302
314
  | `notifications.sound` | macOS Hero | Notification sound file path |
303
315
  | `requiredPlugins` | `[devcore]` | Claude Code plugins to auto-install for agents |
316
+ | `upload` | — | Worker-proxy upload target — see [Session upload](#session-upload-optional) below |
317
+
318
+ ### Session upload (optional)
319
+
320
+ On session completion, sisyphus zips the session directory and uploads it to an operator-managed Cloudflare R2 bucket through a Worker proxy — asynchronously, never blocking completion. Use `sisyphus admin upload <id>` to re-run the upload on demand (retry or in-progress sessions). `sisyphus admin export` is unchanged; upload is purely additive.
321
+
322
+ **Token workflow** — the operator mints a per-user token and shares a URL of the form:
323
+
324
+ ```
325
+ https://<worker-host>/upload?token=sisyphus_pat_...
326
+ ```
327
+
328
+ Run `configure-upload` with that URL to write credentials to `~/.sisyphus/config.json`:
329
+
330
+ ```bash
331
+ # Safest — no argv leak:
332
+ pbpaste | sisyphus admin configure-upload --stdin
333
+
334
+ # Interactive prompt:
335
+ sisyphus admin configure-upload
336
+
337
+ # Direct argv (triggers a leak warning — token visible via `ps` and shell history):
338
+ sisyphus admin configure-upload "https://<worker-host>/upload?token=sisyphus_pat_..."
339
+ ```
340
+
341
+ **Config** — `configure-upload` always writes to `~/.sisyphus/config.json`. The `upload` block is only honored from the global config; a project-local `.sisyphus/config.json` with an `upload` block is ignored with a warning (security hardening — prevents project files from redirecting your uploads).
342
+
343
+ ```json
344
+ {
345
+ "upload": {
346
+ "url": "https://<worker-host>",
347
+ "token": "sisyphus_pat_..."
348
+ }
349
+ }
350
+ ```
351
+
352
+ **Manifest** — the zip includes a `manifest.json` with session metadata. Fields sent on the wire (13 fields):
353
+
354
+ - `sessionId`, `sisyphusVersion`, `hostname`, `platform`
355
+ - `status` (`completed` / `failed` / `cancelled`), `completedAt`, `durationMs`, `wallClockMs`
356
+ - `model`, `effortTier` (`low` / `medium` / `high` / `xhigh`)
357
+ - `cycleCount`, `agentCount`, `goal`
358
+
359
+ `userId` is **not sent by the client** — the Worker injects it from the token, so it is opaque to end-users and non-operators.
360
+
361
+ **Privacy / consent** — presence of `Config.upload` is consent. No upload happens unless the block is configured. The manifest is content-free metadata; the full session zip lands in private R2 owned by the operator.
362
+
363
+ **State fields** — the session JSON surfaces `uploadStatus` (`pending` / `uploaded` / `failed`), `uploadKey` (e.g. `users/{userId}/{sessionId}.zip`), `uploadError`, and `uploadCompletedAt`.
364
+
365
+ **Manual retry:**
366
+
367
+ ```bash
368
+ sisyphus admin upload <session-id> # re-uploads any session (active or completed)
369
+ sisyphus admin upload # uploads the active session in this cwd
370
+ ```
371
+
372
+ **Disable** — omit the `upload` config block. Daemon skips silently.
373
+
374
+ Operator setup (token minting, Worker deployment, R2 provisioning): see [`workers/upload-proxy/README.md`](workers/upload-proxy/README.md).
304
375
 
305
376
  ## CLI reference
306
377
 
307
- **Session lifecycle:**
308
- `start`, `kill`, `resume`, `continue`, `rollback`, `complete`
378
+ Session lifecycle: `session kill`, `session resume`, `session continue`, `session rollback`, `session complete`
379
+
380
+ Agent and orchestrator: `agent spawn`, `agent submit`, `agent report`, `orch yield`, `message`, `agent restart`, `session task`
381
+
382
+ Monitoring: `status` (`--verbose`), `list` (`--all`), `dashboard`
383
+
384
+ Setup: `admin setup`, `admin init`, `admin doctor`, `admin getting-started`, `companion`, `admin uninstall`
385
+
386
+ ### history
387
+
388
+ Browse session history and metrics.
389
+
390
+ ```bash
391
+ sisyphus admin history # List recent sessions
392
+ sisyphus admin history <session-id> # Inspect a specific session
393
+ sisyphus admin history --stats # Aggregate statistics
394
+ sisyphus admin history --events # Raw event timeline
395
+ ```
309
396
 
310
- **Agent & orchestrator interaction:**
311
- `spawn`, `submit`, `report`, `yield`, `message`, `restart-agent`, `update-task`
397
+ | Option | Description |
398
+ |--------|-------------|
399
+ | `--cwd <path>` | Filter by project directory |
400
+ | `--status <status>` | Filter by status (`completed`, `killed`) |
401
+ | `--since <duration>` | Filter by recency (e.g. `7d`, `24h`, `2w`) |
402
+ | `--search <query>` | Search task text and messages |
403
+ | `--events` | Show raw event timeline |
404
+ | `--stats` | Show aggregate statistics |
405
+ | `--json` | Output as JSON |
406
+ | `-n, --limit <n>` | Max sessions to show (default: 20) |
312
407
 
313
- **Monitoring:**
314
- `status` (`--verbose`), `list` (`--all`), `dashboard`
408
+ ### clone
315
409
 
316
- **Setup & utilities:**
317
- `setup`, `init`, `doctor`, `getting-started`, `companion`, `uninstall`
410
+ Clone a session into a new independent session with a different goal.
411
+
412
+ ```bash
413
+ sisyphus session clone "new goal"
414
+ sisyphus session clone "new goal" --strategy # carry over strategy.md from source
415
+ sisyphus session clone "new goal" --name my-clone --context "extra context"
416
+ ```
417
+
418
+ Useful for branching off a variant approach without starting from scratch.
419
+
420
+ ### reconnect
421
+
422
+ Reconnect the daemon to an orphaned tmux session (e.g. after a daemon restart). Makes no state changes and does not spawn the orchestrator.
423
+
424
+ ```bash
425
+ sisyphus session reconnect <session-id>
426
+ ```
427
+
428
+ ### delete
429
+
430
+ Delete a session and all its data.
431
+
432
+ ```bash
433
+ sisyphus session delete <session-id>
434
+ sisyphus session delete <session-id> --cwd /path/to/project
435
+ ```
436
+
437
+ ---
318
438
 
319
- Run `sisyphus --help` or `sisyphus <command> --help` for full usage.
439
+ `sisyphus --help` or `sisyphus <command> --help` for full usage.
320
440
 
321
441
  ## License
322
442