volute 0.25.0 → 0.27.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.
Files changed (145) hide show
  1. package/README.md +28 -33
  2. package/dist/{activity-events-4O37J7PD.js → activity-events-BBIEA2F4.js} +2 -3
  3. package/dist/api.d.ts +886 -220
  4. package/dist/{archive-4ZQYK5MN.js → archive-UA4BDFXQ.js} +2 -2
  5. package/dist/{auth-HM2RSPY7.js → auth-D3OT2ARB.js} +3 -3
  6. package/dist/bridge-FQHZL3MC.js +206 -0
  7. package/dist/chat-MHJ3L6JQ.js +58 -0
  8. package/dist/{chunk-PHU4DEAJ.js → chunk-2WPW7OT6.js} +3 -3
  9. package/dist/{chunk-BOTQ25QT.js → chunk-2YP2TVDT.js} +138 -56
  10. package/dist/{chunk-DG7TO7EE.js → chunk-4WXYUOAK.js} +5 -7
  11. package/dist/{chunk-JTDFJWI2.js → chunk-AW7PFDVN.js} +5 -5
  12. package/dist/{chunk-2767L2RZ.js → chunk-EHYDTZTF.js} +6 -6
  13. package/dist/{chunk-ZSH4G2P5.js → chunk-GIE6CSN5.js} +17 -17
  14. package/dist/chunk-H7OZRFJB.js +432 -0
  15. package/dist/{chunk-ON3FF5JA.js → chunk-HDN7MNGD.js} +3 -3
  16. package/dist/chunk-IAYBDWVG.js +477 -0
  17. package/dist/chunk-IKRVFPWU.js +83 -0
  18. package/dist/{chunk-TRQEV3CD.js → chunk-JGFVMROS.js} +32 -6
  19. package/dist/{chunk-PHHKNGA3.js → chunk-JKOWNZ4P.js} +3 -3
  20. package/dist/{chunk-E7GOKNOT.js → chunk-K5NAC55T.js} +1 -1
  21. package/dist/{chunk-HFCBO2GL.js → chunk-KDGS53OS.js} +4 -4
  22. package/dist/chunk-KTLFDYPT.js +61 -0
  23. package/dist/{chunk-3AIBT4TW.js → chunk-LAC664WU.js} +30 -4
  24. package/dist/{chunk-PMX4EIJK.js → chunk-OQZH4PBB.js} +467 -1054
  25. package/dist/{chunk-SHSWYG2J.js → chunk-PHSAT7YL.js} +71 -58
  26. package/dist/chunk-RKQEHRBB.js +177 -0
  27. package/dist/{chunk-RVKR2R7F.js → chunk-SSI47XP2.js} +10 -2
  28. package/dist/chunk-T6HKBWXZ.js +23 -0
  29. package/dist/chunk-USUXRNVD.js +113 -0
  30. package/dist/{chunk-BFK6SOEJ.js → chunk-VIVMW2H2.js} +4 -4
  31. package/dist/{chunk-KTJGZ7M7.js → chunk-XBLSAVJF.js} +1 -1
  32. package/dist/chunk-ZYGKG6VC.js +22 -0
  33. package/dist/cli.js +51 -32
  34. package/dist/{cloud-sync-PPBBJDY6.js → cloud-sync-T7M3ESC3.js} +15 -12
  35. package/dist/connectors/discord-bridge.js +158 -0
  36. package/dist/connectors/slack-bridge.js +119 -0
  37. package/dist/connectors/telegram-bridge.js +133 -0
  38. package/dist/conversations-M2K4253F.js +55 -0
  39. package/dist/create-D7J73A6H.js +45 -0
  40. package/dist/{create-VDQJER52.js → create-QWV73WXD.js} +1 -1
  41. package/dist/{daemon-client-JOVQZ52X.js → daemon-client-I42FK2BF.js} +2 -2
  42. package/dist/{daemon-restart-FDNOZEAD.js → daemon-restart-M2QTYMEG.js} +7 -6
  43. package/dist/daemon.js +2247 -1085
  44. package/dist/db-IC4J52XQ.js +8 -0
  45. package/dist/{delete-2MRR4JX5.js → delete-4JYGD4VN.js} +1 -1
  46. package/dist/down-LVBXEULC.js +14 -0
  47. package/dist/{env-2FPOZK37.js → env-YJMUMFIY.js} +5 -5
  48. package/dist/{export-IKFAPRAO.js → export-BOJQWBMA.js} +4 -4
  49. package/dist/{file-KT3UIQM3.js → file-CR36YUPD.js} +4 -4
  50. package/dist/{history-46WZN5CN.js → history-XKRTAFS2.js} +7 -7
  51. package/dist/{import-TH26J76F.js → import-SRTQXBGH.js} +4 -4
  52. package/dist/join-J4QU42DL.js +66 -0
  53. package/dist/list-R73GENNL.js +40 -0
  54. package/dist/{log-6SGSSR3D.js → log-ABYNVYJ3.js} +4 -4
  55. package/dist/login-3QZNR2DF.js +46 -0
  56. package/dist/{login-UO6AOVEA.js → login-XX37I52P.js} +3 -3
  57. package/dist/logout-T53VKCPU.js +39 -0
  58. package/dist/{logout-UKD5LA37.js → logout-W4KOOBIT.js} +2 -2
  59. package/dist/{logs-HRBONI5I.js → logs-U35JR2KE.js} +7 -7
  60. package/dist/{merge-KSFJKX6T.js → merge-LNSMSAOF.js} +4 -4
  61. package/dist/message-delivery-LDXLGERA.js +25 -0
  62. package/dist/migrate-registry-to-db-XC7T5B7P.js +110 -0
  63. package/dist/{mind-YVWAHL2A.js → mind-DI33C74K.js} +25 -25
  64. package/dist/{mind-activity-tracker-NMDDEV3K.js → mind-activity-tracker-EN6XNXPF.js} +3 -4
  65. package/dist/{mind-manager-4NDNAYAB.js → mind-manager-M6EMUW5I.js} +6 -5
  66. package/dist/{mind-sleep-GHPTSAYN.js → mind-sleep-BTSWQNAC.js} +4 -4
  67. package/dist/{mind-wake-BJDJFMDF.js → mind-wake-SBAKIDVP.js} +4 -4
  68. package/dist/notes-XCER3I7M.js +220 -0
  69. package/dist/{package-3HF5MXU2.js → package-7WY6VKU3.js} +2 -1
  70. package/dist/{pages-Y6DRWUOJ.js → pages-6EBS6CBR.js} +2 -2
  71. package/dist/{publish-EEKTZBHW.js → publish-66UB2ZFY.js} +5 -5
  72. package/dist/{pull-D32SPFVU.js → pull-XCHJTM5M.js} +4 -4
  73. package/dist/read-36UFXN3G.js +46 -0
  74. package/dist/{register-U2UO6TC4.js → register-6B2CXTYM.js} +3 -3
  75. package/dist/{registry-D2BSQ2X5.js → registry-NDNOOYG4.js} +15 -9
  76. package/dist/{restart-5BMNV7KU.js → restart-6ESL3NBO.js} +6 -6
  77. package/dist/sandbox-TGBX22DS.js +19 -0
  78. package/dist/{schedule-YEFDLVMJ.js → schedule-QTJMFATP.js} +7 -7
  79. package/dist/{seed-6FEKB3YC.js → seed-SSUCYYDF.js} +2 -2
  80. package/dist/{send-IISDYFCL.js → send-ZNCJDSRP.js} +28 -36
  81. package/dist/service-6LIN3F3K.js +122 -0
  82. package/dist/setup-JG4QAEBV.js +371 -0
  83. package/dist/setup-JHL5ZEST.js +17 -0
  84. package/dist/{shared-LWMNTTZN.js → shared-ML5I4Q2A.js} +4 -4
  85. package/dist/{skill-T3EMR6IR.js → skill-AUAQTSP5.js} +7 -7
  86. package/dist/skills/dreaming/SKILL.md +68 -0
  87. package/dist/skills/dreaming/references/INSTALL.md +56 -0
  88. package/dist/skills/dreaming/scripts/dream.ts +289 -0
  89. package/dist/skills/dreaming/scripts/wake-context-dreams.sh +30 -0
  90. package/dist/skills/notes/SKILL.md +34 -0
  91. package/dist/skills/orientation/SKILL.md +3 -3
  92. package/dist/skills/volute-mind/SKILL.md +32 -30
  93. package/dist/sleep-manager-MWYHM5HV.js +29 -0
  94. package/dist/split-TKJ5OT3P.js +63 -0
  95. package/dist/{sprout-QJVGJDSH.js → sprout-IJVVKSJ2.js} +6 -7
  96. package/dist/{start-C7XITZ5O.js → start-EUJSS5R4.js} +4 -4
  97. package/dist/{status-SIRPLEZC.js → status-77YEPHMW.js} +5 -5
  98. package/dist/{status-LYS4NUOZ.js → status-7GA4SM4Y.js} +4 -4
  99. package/dist/{status-LV34BG6G.js → status-THLOBLWG.js} +2 -2
  100. package/dist/{stop-CVKBSLXY.js → stop-3XAITBBF.js} +6 -6
  101. package/dist/{tailscale-AJ4VL5XK.js → tailscale-NY5MUMY3.js} +1 -1
  102. package/dist/up-NKSMXBWR.js +17 -0
  103. package/dist/{update-7XCZMYBT.js → update-PTSH22AZ.js} +11 -11
  104. package/dist/{update-check-F5Z3ALXX.js → update-check-64FWC4Y2.js} +2 -2
  105. package/dist/{upgrade-7RUIXGOO.js → upgrade-HA47CS4C.js} +12 -5
  106. package/dist/variant-7TGZHOU3.js +41 -0
  107. package/dist/{version-notify-AZQMC32A.js → version-notify-5Z4MNR6M.js} +26 -28
  108. package/dist/web-assets/assets/index-CI5wgghI.css +1 -0
  109. package/dist/web-assets/assets/index-is5CvJWH.js +75 -0
  110. package/dist/web-assets/favicon.png +0 -0
  111. package/dist/web-assets/index.html +2 -2
  112. package/drizzle/0015_notes.sql +23 -0
  113. package/drizzle/0016_note_reactions_and_replies.sql +15 -0
  114. package/drizzle/0017_minds.sql +16 -0
  115. package/drizzle/meta/_journal.json +21 -0
  116. package/package.json +2 -1
  117. package/templates/_base/.init/.config/hooks/wake-context.sh +7 -0
  118. package/templates/_base/.init/.config/prompts.json +2 -2
  119. package/templates/_base/home/VOLUTE.md +5 -5
  120. package/templates/_base/src/lib/startup.ts +10 -2
  121. package/templates/claude/src/agent.ts +51 -1
  122. package/templates/claude/src/server.ts +1 -0
  123. package/templates/pi/package.json.tmpl +1 -0
  124. package/templates/pi/src/agent.ts +48 -1
  125. package/templates/pi/src/lib/subagents.ts +150 -0
  126. package/templates/pi/src/server.ts +1 -0
  127. package/dist/channel-HZOSHGNF.js +0 -260
  128. package/dist/chunk-33XAVCS4.js +0 -203
  129. package/dist/chunk-B2CPS4QU.js +0 -283
  130. package/dist/chunk-NWPT4ASZ.js +0 -89
  131. package/dist/chunk-SIAG3QMM.js +0 -42
  132. package/dist/chunk-WSLPZF72.js +0 -173
  133. package/dist/connector-M6XFI6GM.js +0 -147
  134. package/dist/connectors/discord.js +0 -177
  135. package/dist/connectors/slack.js +0 -181
  136. package/dist/connectors/telegram.js +0 -187
  137. package/dist/down-674SX2IZ.js +0 -14
  138. package/dist/message-delivery-XMGV3FUM.js +0 -23
  139. package/dist/service-FASYWLTC.js +0 -247
  140. package/dist/setup-BMLM2UTK.js +0 -230
  141. package/dist/sleep-manager-RKTFZPD3.js +0 -27
  142. package/dist/up-CJ26KQLN.js +0 -15
  143. package/dist/variant-UGREB4G5.js +0 -207
  144. package/dist/web-assets/assets/index-CGPSVu19.js +0 -69
  145. package/dist/web-assets/assets/index-V_rNDsM8.css +0 -1
package/README.md CHANGED
@@ -13,6 +13,9 @@ Built on the [Anthropic Claude Agent SDK](https://github.com/anthropics/claude-a
13
13
  ```sh
14
14
  npm install -g volute
15
15
 
16
+ # First-time setup (required)
17
+ volute setup --name my-system
18
+
16
19
  # Start the daemon (manages all your minds)
17
20
  volute up
18
21
 
@@ -33,10 +36,11 @@ You now have a running AI mind with persistent memory, auto-committing file chan
33
36
  One background process runs everything. `volute up` starts it; `volute down` stops it.
34
37
 
35
38
  ```sh
36
- volute up # start (default port 1618)
37
- volute up --port 8080 # custom port
38
- volute down # stop all minds and shut down
39
- volute status # check daemon status, version, and minds
39
+ volute up # start (default port 1618)
40
+ volute up --port 8080 # custom port
41
+ volute up --no-sandbox # disable sandbox isolation
42
+ volute down # stop all minds and shut down
43
+ volute status # check daemon status, version, and minds
40
44
  ```
41
45
 
42
46
  The daemon handles mind lifecycle, crash recovery (auto-restarts after 3 seconds), connector processes, scheduled messages, and the web dashboard.
@@ -93,32 +97,32 @@ This is the interesting part. Minds can fork themselves into isolated branches,
93
97
 
94
98
  ```sh
95
99
  # Create a variant — gets its own git worktree and running server
96
- volute variant create experiment --mind atlas
100
+ volute mind split experiment --mind atlas
97
101
 
98
- # Talk to the variant directly
99
- volute send @atlas@experiment "try a different approach"
102
+ # Talk to the variant directly (variants have standalone names)
103
+ volute send @atlas-experiment "try a different approach"
100
104
 
101
105
  # List all variants
102
- volute variant list --mind atlas
106
+ volute mind split --list --mind atlas
103
107
 
104
108
  # Merge it back (verifies, merges, cleans up, restarts the main mind)
105
- volute variant merge experiment --mind atlas --summary "improved response style"
109
+ volute mind join atlas-experiment --mind atlas --summary "improved response style"
106
110
  ```
107
111
 
108
112
  What happens:
109
113
 
110
- 1. **Fork** creates a git worktree, installs dependencies, and starts a separate server
114
+ 1. **Split** creates a git worktree, installs dependencies, and starts a separate server
111
115
  2. The variant is a full independent copy — same code, same identity, its own state
112
- 3. **Merge** verifies the variant server works, merges the branch, removes the worktree, and restarts the main mind
116
+ 3. **Join** verifies the variant server works, merges the branch, removes the worktree, and restarts the main mind
113
117
  4. After restart, the mind receives orientation context about what changed
114
118
 
115
119
  You can fork with a custom personality:
116
120
 
117
121
  ```sh
118
- volute variant create poet --mind atlas --soul "You are a poet who responds only in verse."
122
+ volute mind split poet --mind atlas --soul "You are a poet who responds only in verse."
119
123
  ```
120
124
 
121
- Minds have access to the `volute` CLI from their working directory, so they can fork, test, and merge their own variants autonomously.
125
+ Minds have access to the `volute` CLI from their working directory, so they can split, test, and join their own variants autonomously.
122
126
 
123
127
  ## Connectors
124
128
 
@@ -210,7 +214,7 @@ The daemon serves a web UI at `http://localhost:1618` (or whatever port you chos
210
214
  - File browser and editor
211
215
  - Log streaming
212
216
  - Connector and schedule management
213
- - Variant status
217
+ - Variant listing and status
214
218
  - First user to register becomes admin
215
219
 
216
220
  ## Upgrading minds
@@ -218,13 +222,13 @@ The daemon serves a web UI at `http://localhost:1618` (or whatever port you chos
218
222
  When the Volute template updates, you can upgrade minds without touching their identity:
219
223
 
220
224
  ```sh
221
- volute mind upgrade atlas # creates an "upgrade" variant
225
+ volute mind upgrade atlas # creates an "atlas-upgrade" variant
222
226
  # resolve conflicts if needed, then:
223
227
  volute mind upgrade atlas --continue
224
228
  # test:
225
- volute send @atlas@upgrade "are you working?"
229
+ volute send @atlas-upgrade "are you working?"
226
230
  # merge:
227
- volute variant merge upgrade --mind atlas
231
+ volute mind join atlas-upgrade
228
232
  ```
229
233
 
230
234
  Your mind's `SOUL.md` and `MEMORY.md` are never overwritten.
@@ -261,33 +265,24 @@ docker compose up -d
261
265
 
262
266
  The container runs with per-mind user isolation enabled — each mind gets its own Linux user, so minds can't see each other's files. Open `http://localhost:1618` for the web dashboard.
263
267
 
264
- ### Bare metal (Linux / Raspberry Pi)
265
-
266
- One-liner install on a fresh Linux system (Debian/Ubuntu, RHEL/Fedora, Arch, Alpine, SUSE):
267
-
268
- ```sh
269
- curl -fsSL <install-url> | sudo bash
270
- ```
271
-
272
- Or manually:
268
+ ### Bare metal (Linux / macOS)
273
269
 
274
270
  ```sh
275
271
  npm install -g volute
276
- sudo $(which volute) service install --system --host 0.0.0.0
272
+ sudo volute setup --name my-server --system --host 0.0.0.0
277
273
  ```
278
274
 
279
- > **Note:** The initial `sudo $(which volute)` is needed because `sudo` resets PATH. After setup completes, a wrapper at `/usr/local/bin/volute` is created so `sudo volute` works normally going forward.
275
+ This creates a system-level service with data at `/var/lib/volute`, minds at `/minds`, and per-user isolation (each mind gets its own system user). On Linux, uses systemd; on macOS, uses a LaunchDaemon. Requires root.
280
276
 
281
- This installs a system-level systemd service with data at `/var/lib/volute` and user isolation enabled. Check status with `systemctl status volute`. Uninstall with `sudo volute service uninstall --system --force`.
277
+ > **Note:** After setup, a wrapper at `/usr/local/bin/volute` is created so `sudo volute` works without PATH issues.
282
278
 
283
279
  ### Auto-start (user-level)
284
280
 
285
- On macOS or Linux (without root), use the user-level service installer:
281
+ On macOS or Linux (without root), include `--service` during setup:
286
282
 
287
283
  ```sh
288
- volute service install [--port N] [--host H] # auto-start on login
289
- volute service status # check status
290
- volute service uninstall # remove
284
+ volute setup --name my-system --service # local install + auto-start on login
285
+ volute service status # check status
291
286
  ```
292
287
 
293
288
  ## Development
@@ -3,10 +3,9 @@ import {
3
3
  broadcast,
4
4
  publish,
5
5
  subscribe
6
- } from "./chunk-BFK6SOEJ.js";
7
- import "./chunk-33XAVCS4.js";
6
+ } from "./chunk-VIVMW2H2.js";
8
7
  import "./chunk-YUIHSKR6.js";
9
- import "./chunk-B2CPS4QU.js";
8
+ import "./chunk-H7OZRFJB.js";
10
9
  import "./chunk-K3NQKI34.js";
11
10
  export {
12
11
  broadcast,