sisyphi 1.1.17 → 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 (237) hide show
  1. package/README.md +347 -25
  2. package/dist/chunk-36VJ7ZBD.js +1898 -0
  3. package/dist/chunk-36VJ7ZBD.js.map +1 -0
  4. package/dist/chunk-M6Z3KHOH.js +1165 -0
  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-GSXF3TCZ.js → chunk-PNDCVKBN.js} +91 -3
  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 +4426 -818
  15. package/dist/cli.js.map +1 -1
  16. package/dist/daemon.js +4351 -857
  17. package/dist/daemon.js.map +1 -1
  18. package/dist/paths-JXFLR5BN.js +102 -0
  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 +3789 -2406
  113. package/dist/tui.js.map +1 -1
  114. package/native/SisyphusNotify/AppIcon.icns +0 -0
  115. package/native/SisyphusNotify/Info.plist +26 -0
  116. package/native/SisyphusNotify/main.swift +136 -0
  117. package/native/SisyphusNotify/sisyphus-icon.jpg +0 -0
  118. package/native/build-notify.sh +58 -0
  119. package/package.json +9 -6
  120. package/templates/CLAUDE.md +1 -56
  121. package/templates/agent-plugin/agents/CLAUDE.md +2 -65
  122. package/templates/agent-plugin/agents/debug.md +43 -6
  123. package/templates/agent-plugin/agents/debug.settings.json +57 -0
  124. package/templates/agent-plugin/agents/explore.md +28 -1
  125. package/templates/agent-plugin/agents/explore.settings.json +57 -0
  126. package/templates/agent-plugin/agents/implementor.md +94 -0
  127. package/templates/agent-plugin/agents/implementor.settings.json +57 -0
  128. package/templates/agent-plugin/agents/operator.md +43 -1
  129. package/templates/agent-plugin/agents/operator.settings.json +57 -0
  130. package/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
  131. package/templates/agent-plugin/agents/plan.md +176 -86
  132. package/templates/agent-plugin/agents/plan.settings.json +57 -0
  133. package/templates/agent-plugin/agents/problem/adversarial.md +26 -0
  134. package/templates/agent-plugin/agents/problem/contrarian.md +26 -0
  135. package/templates/agent-plugin/agents/problem/first-principles.md +26 -0
  136. package/templates/agent-plugin/agents/problem/precedent.md +25 -0
  137. package/templates/agent-plugin/agents/problem/simplifier.md +26 -0
  138. package/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
  139. package/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
  140. package/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
  141. package/templates/agent-plugin/agents/problem.md +334 -79
  142. package/templates/agent-plugin/agents/problem.settings.json +57 -0
  143. package/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
  144. package/templates/agent-plugin/agents/research-lead/critic.md +61 -0
  145. package/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
  146. package/templates/agent-plugin/agents/research-lead.md +184 -0
  147. package/templates/agent-plugin/agents/research-lead.settings.json +57 -0
  148. package/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
  149. package/templates/agent-plugin/agents/review/compliance.md +14 -3
  150. package/templates/agent-plugin/agents/review/efficiency.md +15 -4
  151. package/templates/agent-plugin/agents/review/quality.md +20 -6
  152. package/templates/agent-plugin/agents/review/reuse.md +17 -5
  153. package/templates/agent-plugin/agents/review/security.md +10 -3
  154. package/templates/agent-plugin/agents/review/tests.md +58 -0
  155. package/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
  156. package/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
  157. package/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
  158. package/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
  159. package/templates/agent-plugin/agents/review-plan/security.md +5 -2
  160. package/templates/agent-plugin/agents/review-plan.md +52 -5
  161. package/templates/agent-plugin/agents/review-plan.settings.json +57 -0
  162. package/templates/agent-plugin/agents/review.md +89 -16
  163. package/templates/agent-plugin/agents/review.settings.json +57 -0
  164. package/templates/agent-plugin/agents/spec/engineer.md +175 -0
  165. package/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
  166. package/templates/agent-plugin/agents/spec.md +444 -0
  167. package/templates/agent-plugin/agents/spec.settings.json +57 -0
  168. package/templates/agent-plugin/agents/test-spec.md +58 -2
  169. package/templates/agent-plugin/agents/test-spec.settings.json +57 -0
  170. package/templates/agent-plugin/hooks/CLAUDE.md +9 -57
  171. package/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
  172. package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  173. package/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
  174. package/templates/agent-plugin/hooks/plan-validate.sh +97 -0
  175. package/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
  176. package/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
  177. package/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
  178. package/templates/agent-plugin/hooks/require-submit.sh +51 -42
  179. package/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
  180. package/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
  181. package/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
  182. package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
  183. package/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
  184. package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
  185. package/templates/agent-suffix.md +7 -4
  186. package/templates/baleia.lua +42 -0
  187. package/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
  188. package/templates/dashboard-claude.md +7 -3
  189. package/templates/orchestrator-base.md +89 -52
  190. package/templates/orchestrator-completion.md +47 -24
  191. package/templates/orchestrator-discovery.md +183 -0
  192. package/templates/orchestrator-impl.md +47 -18
  193. package/templates/orchestrator-planning.md +109 -20
  194. package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
  195. package/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
  196. package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
  197. package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
  198. package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
  199. package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
  200. package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
  201. package/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
  202. package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
  203. package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
  204. package/templates/orchestrator-settings.json +55 -0
  205. package/templates/orchestrator-validation.md +17 -14
  206. package/templates/sisyphus-init.lua +30 -0
  207. package/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
  208. package/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
  209. package/templates/termrender-haiku-system.md +82 -0
  210. package/templates/whip-animation.sh +345 -0
  211. package/dist/chunk-6TIO23U3.js +0 -67
  212. package/dist/chunk-6TIO23U3.js.map +0 -1
  213. package/dist/chunk-GSXF3TCZ.js.map +0 -1
  214. package/dist/chunk-HQZOAX6D.js +0 -240
  215. package/dist/chunk-HQZOAX6D.js.map +0 -1
  216. package/dist/chunk-IF55HPWX.js +0 -44
  217. package/dist/chunk-IF55HPWX.js.map +0 -1
  218. package/dist/chunk-UIVQXCWB.js +0 -46
  219. package/dist/chunk-UIVQXCWB.js.map +0 -1
  220. package/dist/paths-3EL2SCHI.js +0 -58
  221. package/dist/templates/agent-plugin/agents/design.md +0 -134
  222. package/dist/templates/agent-plugin/agents/requirements.md +0 -138
  223. package/dist/templates/begin.md +0 -22
  224. package/dist/templates/nvim-tutorial.txt +0 -68
  225. package/dist/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  226. package/dist/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  227. package/dist/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  228. package/dist/templates/orchestrator-strategy.md +0 -238
  229. package/templates/agent-plugin/agents/design.md +0 -134
  230. package/templates/agent-plugin/agents/requirements.md +0 -138
  231. package/templates/begin.md +0 -22
  232. package/templates/nvim-tutorial.txt +0 -68
  233. package/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  234. package/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  235. package/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  236. package/templates/orchestrator-strategy.md +0 -238
  237. /package/dist/{paths-3EL2SCHI.js.map → paths-JXFLR5BN.js.map} +0 -0
package/README.md CHANGED
@@ -31,25 +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** (you must be inside a tmux session)
52
- - **Claude Code** CLI (`claude`) installed and authenticated
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)
53
54
 
54
55
  ## Install
55
56
 
@@ -57,21 +58,39 @@ The daemon handles the lifecycle: spawning panes, detecting when agents finish,
57
58
  npm install -g sisyphi
58
59
  ```
59
60
 
60
- The daemon starts automatically on first use via launchd. It auto-updates when new versions are published.
61
+ Then run setup once:
61
62
 
62
- ## Usage
63
+ ```bash
64
+ sisyphus admin setup
65
+ ```
66
+
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
+
69
+ Verify:
70
+
71
+ ```bash
72
+ sisyphus admin doctor
73
+ ```
63
74
 
64
- 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.
75
+ ## Quick start
65
76
 
66
- In Claude Code, just say something like:
77
+ ```bash
78
+ sisyphus start "your task description" # Start a session
79
+ sisyphus dashboard # Open the TUI (auto-opens on start)
80
+ sisyphus status # Check session state from the CLI
81
+ ```
82
+
83
+ Sisyphus is a CLI that Claude Code calls for you. Tell Claude to use it and it handles the rest.
84
+
85
+ In Claude Code, say something like:
67
86
 
68
87
  > Use sisyphus to migrate our REST API from Express to Hono. The API lives in src/api/ with 14 route files...
69
88
 
70
- 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.
71
90
 
72
- ### Setting up a slash command (recommended)
91
+ ### Slash command (recommended)
73
92
 
74
- Create a file at `.claude/commands/sisyphus-begin.md` in your project:
93
+ Create `.claude/commands/sisyphus-begin.md` in your project:
75
94
 
76
95
  ~~~markdown
77
96
  Run `sisyphus start` with a detailed task description:
@@ -80,17 +99,17 @@ Run `sisyphus start` with a detailed task description:
80
99
  sisyphus start "your task description"
81
100
  ```
82
101
 
83
- **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.
84
103
 
85
- **Example:**
104
+ Example:
86
105
  ```bash
87
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."
88
107
  ```
89
108
  ~~~
90
109
 
91
- 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.
92
111
 
93
- Alternatively, add a note to your `CLAUDE.md`:
112
+ Or just add a note to your `CLAUDE.md`:
94
113
 
95
114
  ```markdown
96
115
  ## Sisyphus
@@ -98,24 +117,327 @@ For large tasks, use the `sisyphus` CLI to orchestrate parallel agents.
98
117
  Run `sisyphus start "detailed task description"` inside tmux.
99
118
  ```
100
119
 
101
- ### Monitoring and stopping
120
+ ### Interactive tutorial
121
+
122
+ New to tmux or sisyphus? Run the guided walkthrough:
102
123
 
103
124
  ```bash
104
- sisyphus status # Check session state
105
- sisyphus kill <session-id> # Stop everything
125
+ sisyphus admin getting-started
106
126
  ```
107
127
 
128
+ Covers tmux basics, neovim essentials, sisyphus concepts, and a live demo session.
129
+
130
+ ## Dashboard
131
+
132
+ Full-screen TUI for watching and controlling sessions.
133
+
134
+ ```bash
135
+ sisyphus dashboard # or press M-S (Alt-Shift-S)
136
+ ```
137
+
138
+ Auto-opens when you `sisyphus start`.
139
+
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
+
142
+ Key bindings — navigate mode:
143
+
144
+ | Key | Action |
145
+ |-----|--------|
146
+ | `j/k` or `↑/↓` | Navigate tree / scroll detail |
147
+ | `h/l` or `←/→` | Collapse/expand nodes |
148
+ | `Tab` | Cycle panel focus |
149
+ | `Enter` | Open selection |
150
+ | `n` | New session (compose mode) |
151
+ | `m` | Message orchestrator |
152
+ | `R` | Resume a paused/completed session |
153
+ | `g` | Edit goal |
154
+ | `p` | Open roadmap |
155
+ | `r` | Re-run agent |
156
+ | `x` | Restart agent |
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 |
164
+ | `/` | Search sessions |
165
+ | `q` | Quit |
166
+ | `?` | Help overlay |
167
+
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.
179
+
180
+ ## Agent types
181
+
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.
183
+
184
+ ### Built-in types
185
+
186
+ | Type | Description |
187
+ |------|-------------|
188
+ | `sisyphus:worker` | Generic agent (default) |
189
+ | `sisyphus:plan` | Plan lead, breaks work into phases |
190
+ | `sisyphus:spec` | Interactive design + requirements spec session |
191
+ | `sisyphus:problem` | Problem exploration and assumption challenging |
192
+ | `sisyphus:review` | Code review |
193
+ | `sisyphus:review-plan` | Plan review with parallel sub-reviewers |
194
+ | `sisyphus:debug` | Systematic debugging investigation |
195
+ | `sisyphus:explore` | Lightweight code exploration |
196
+ | `sisyphus:operator` | QA/testing with browser automation |
197
+ | `sisyphus:test-spec` | Test specification writing |
198
+
199
+ ### Custom agent types
200
+
201
+ Create a markdown file with YAML frontmatter:
202
+
203
+ ```markdown
204
+ ---
205
+ name: security-reviewer
206
+ description: Reviews code for security vulnerabilities
207
+ model: opus
208
+ color: red
209
+ effort: high
210
+ skills: [capture]
211
+ permissionMode: bypassPermissions
212
+ interactive: false
213
+ ---
214
+
215
+ You are a security-focused code reviewer. Analyze the code for OWASP top 10
216
+ vulnerabilities, injection risks, auth bypasses, and data exposure...
217
+ ```
218
+
219
+ Resolution order (first match wins):
220
+ 1. `.claude/agents/{name}.md` (project-local)
221
+ 2. `~/.claude/agents/{name}.md` (user-global)
222
+ 3. Bundled `sisyphus:{name}`
223
+ 4. Installed Claude Code plugins
224
+
225
+ ### Frontmatter options
226
+
227
+ | Field | Description |
228
+ |-------|-------------|
229
+ | `model` | LLM model (`opus`, `sonnet`, `gpt-4`, `codex-mini`, etc.) |
230
+ | `color` | Tmux pane border color |
231
+ | `effort` | `low` / `medium` / `high` / `max` |
232
+ | `interactive` | `true` = agent can pause for user input |
233
+ | `skills` | Claude Code skills to enable |
234
+ | `permissionMode` | Permission handling mode |
235
+
236
+ `gpt-` and `codex-` prefixed models automatically route to the OpenAI provider (Codex CLI).
237
+
238
+ ## Tmux integration
239
+
240
+ ### Status bar
241
+
242
+ The daemon puts a live status indicator in your tmux status bar, scoped to the current working directory:
243
+
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
249
+
250
+ Updates every 5 seconds. Focused session is highlighted.
251
+
252
+ ### Keybindings
253
+
254
+ Installed by `sisyphus admin setup` into `~/.sisyphus/tmux.conf`. Requires tmux ≥ 3.2.
255
+
256
+ | Key | Action |
257
+ |-----|--------|
258
+ | `M-s` | Cycle through sisyphus sessions in current project |
259
+ | `M-S` | Jump to dashboard window |
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.
266
+
267
+ ### Native notifications (macOS)
268
+
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.
270
+
271
+ Falls back to `terminal-notifier` or `osascript` if the native app isn't available.
272
+
273
+ ## Companion
274
+
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).
276
+
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.
278
+
279
+ ```bash
280
+ sisyphus companion # View profile, stats, and achievements
281
+ sisyphus companion --badges # Full achievement gallery
282
+ sisyphus companion --name Bub # Rename your companion
283
+ ```
284
+
285
+ Press `c` in the dashboard (nav mode) to open the companion overlay.
286
+
108
287
  ## Configuration
109
288
 
110
- Project (`.sisyphus/config.json`) overrides global (`~/.sisyphus/config.json`):
289
+ Project `.sisyphus/config.json` overrides global `~/.sisyphus/config.json`:
111
290
 
112
291
  ```json
113
292
  {
114
293
  "model": "sonnet",
115
- "autoUpdate": true
294
+ "orchestratorEffort": "high",
295
+ "agentEffort": "medium",
296
+ "pollIntervalMs": 5000,
297
+ "autoUpdate": true,
298
+ "notifications": {
299
+ "enabled": true,
300
+ "sound": "/System/Library/Sounds/Hero.aiff"
301
+ }
116
302
  }
117
303
  ```
118
304
 
305
+ | Option | Default | Description |
306
+ |--------|---------|-------------|
307
+ | `model` | *(Claude Code default)* | LLM model for orchestrator and agents |
308
+ | `orchestratorEffort` | `high` | Effort level for orchestrator (`low`/`medium`/`high`/`max`) |
309
+ | `agentEffort` | `medium` | Effort level for agents |
310
+ | `orchestratorPrompt` | *(built-in)* | Path to custom orchestrator system prompt |
311
+ | `pollIntervalMs` | `5000` | Daemon poll interval in milliseconds |
312
+ | `autoUpdate` | — | Auto-update via npm on new releases |
313
+ | `notifications.enabled` | `true` | Desktop notifications on lifecycle events |
314
+ | `notifications.sound` | macOS Hero | Notification sound file path |
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).
375
+
376
+ ## CLI reference
377
+
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
+ ```
396
+
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) |
407
+
408
+ ### clone
409
+
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
+ ---
438
+
439
+ `sisyphus --help` or `sisyphus <command> --help` for full usage.
440
+
119
441
  ## License
120
442
 
121
443
  MIT