@shykaruu/jarvis-brain 0.4.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 (330) hide show
  1. package/LICENSE +153 -0
  2. package/README.md +428 -0
  3. package/bin/jarvis.ts +449 -0
  4. package/package.json +79 -0
  5. package/roles/activity-observer.yaml +60 -0
  6. package/roles/ceo-founder.yaml +144 -0
  7. package/roles/chief-of-staff.yaml +158 -0
  8. package/roles/dev-lead.yaml +182 -0
  9. package/roles/executive-assistant.yaml +77 -0
  10. package/roles/marketing-director.yaml +168 -0
  11. package/roles/personal-assistant.yaml +266 -0
  12. package/roles/research-specialist.yaml +60 -0
  13. package/roles/specialists/content-writer.yaml +53 -0
  14. package/roles/specialists/customer-support.yaml +57 -0
  15. package/roles/specialists/data-analyst.yaml +57 -0
  16. package/roles/specialists/financial-analyst.yaml +56 -0
  17. package/roles/specialists/hr-specialist.yaml +55 -0
  18. package/roles/specialists/legal-advisor.yaml +58 -0
  19. package/roles/specialists/marketing-strategist.yaml +56 -0
  20. package/roles/specialists/project-coordinator.yaml +55 -0
  21. package/roles/specialists/research-analyst.yaml +58 -0
  22. package/roles/specialists/software-engineer.yaml +57 -0
  23. package/roles/specialists/system-administrator.yaml +57 -0
  24. package/roles/system-admin.yaml +76 -0
  25. package/scripts/ensure-bun.cjs +16 -0
  26. package/src/actions/README.md +421 -0
  27. package/src/actions/app-control/desktop-controller.test.ts +26 -0
  28. package/src/actions/app-control/desktop-controller.ts +438 -0
  29. package/src/actions/app-control/interface.ts +64 -0
  30. package/src/actions/app-control/linux.ts +273 -0
  31. package/src/actions/app-control/macos.ts +54 -0
  32. package/src/actions/app-control/sidecar-launcher.test.ts +23 -0
  33. package/src/actions/app-control/sidecar-launcher.ts +286 -0
  34. package/src/actions/app-control/windows.ts +44 -0
  35. package/src/actions/browser/cdp.ts +138 -0
  36. package/src/actions/browser/chrome-launcher.ts +261 -0
  37. package/src/actions/browser/session.ts +506 -0
  38. package/src/actions/browser/stealth.ts +49 -0
  39. package/src/actions/index.ts +20 -0
  40. package/src/actions/terminal/executor.ts +157 -0
  41. package/src/actions/terminal/wsl-bridge.ts +126 -0
  42. package/src/actions/test.ts +93 -0
  43. package/src/actions/tools/agents.ts +363 -0
  44. package/src/actions/tools/builtin.ts +950 -0
  45. package/src/actions/tools/commitments.ts +192 -0
  46. package/src/actions/tools/content.ts +217 -0
  47. package/src/actions/tools/delegate.ts +147 -0
  48. package/src/actions/tools/desktop.test.ts +55 -0
  49. package/src/actions/tools/desktop.ts +305 -0
  50. package/src/actions/tools/documents.ts +169 -0
  51. package/src/actions/tools/goals.ts +376 -0
  52. package/src/actions/tools/local-tools-guard.ts +31 -0
  53. package/src/actions/tools/registry.ts +173 -0
  54. package/src/actions/tools/research.ts +111 -0
  55. package/src/actions/tools/sidecar-list.ts +57 -0
  56. package/src/actions/tools/sidecar-route.ts +105 -0
  57. package/src/actions/tools/workflows.ts +216 -0
  58. package/src/agents/agent.ts +132 -0
  59. package/src/agents/delegation.ts +107 -0
  60. package/src/agents/hierarchy.ts +113 -0
  61. package/src/agents/index.ts +19 -0
  62. package/src/agents/messaging.ts +125 -0
  63. package/src/agents/orchestrator.ts +592 -0
  64. package/src/agents/role-discovery.ts +61 -0
  65. package/src/agents/sub-agent-runner.ts +309 -0
  66. package/src/agents/task-manager.ts +151 -0
  67. package/src/authority/approval-delivery.ts +59 -0
  68. package/src/authority/approval.ts +196 -0
  69. package/src/authority/audit.ts +158 -0
  70. package/src/authority/authority.test.ts +519 -0
  71. package/src/authority/deferred-executor.ts +103 -0
  72. package/src/authority/emergency.ts +66 -0
  73. package/src/authority/engine.ts +301 -0
  74. package/src/authority/index.ts +12 -0
  75. package/src/authority/learning.ts +111 -0
  76. package/src/authority/tool-action-map.ts +74 -0
  77. package/src/awareness/analytics.ts +466 -0
  78. package/src/awareness/awareness.test.ts +332 -0
  79. package/src/awareness/capture-engine.ts +305 -0
  80. package/src/awareness/context-graph.ts +130 -0
  81. package/src/awareness/context-tracker.ts +349 -0
  82. package/src/awareness/index.ts +25 -0
  83. package/src/awareness/intelligence.ts +321 -0
  84. package/src/awareness/ocr-engine.ts +88 -0
  85. package/src/awareness/service.ts +528 -0
  86. package/src/awareness/struggle-detector.ts +342 -0
  87. package/src/awareness/suggestion-engine.ts +476 -0
  88. package/src/awareness/types.ts +201 -0
  89. package/src/cli/autostart.ts +417 -0
  90. package/src/cli/deps.ts +449 -0
  91. package/src/cli/doctor.ts +238 -0
  92. package/src/cli/helpers.ts +401 -0
  93. package/src/cli/onboard.ts +827 -0
  94. package/src/cli/uninstall.test.ts +37 -0
  95. package/src/cli/uninstall.ts +202 -0
  96. package/src/comms/README.md +329 -0
  97. package/src/comms/auth-error.html +48 -0
  98. package/src/comms/channels/discord.ts +228 -0
  99. package/src/comms/channels/signal.ts +56 -0
  100. package/src/comms/channels/telegram.ts +316 -0
  101. package/src/comms/channels/whatsapp.ts +60 -0
  102. package/src/comms/channels.test.ts +173 -0
  103. package/src/comms/dashboard-auth.ts +75 -0
  104. package/src/comms/desktop-notify.ts +114 -0
  105. package/src/comms/example.ts +129 -0
  106. package/src/comms/index.ts +129 -0
  107. package/src/comms/streaming.ts +149 -0
  108. package/src/comms/voice.test.ts +504 -0
  109. package/src/comms/voice.ts +341 -0
  110. package/src/comms/websocket.test.ts +409 -0
  111. package/src/comms/websocket.ts +669 -0
  112. package/src/config/README.md +389 -0
  113. package/src/config/index.ts +6 -0
  114. package/src/config/loader.test.ts +183 -0
  115. package/src/config/loader.ts +148 -0
  116. package/src/config/types.ts +293 -0
  117. package/src/daemon/README.md +232 -0
  118. package/src/daemon/agent-service-interface.ts +9 -0
  119. package/src/daemon/agent-service.ts +667 -0
  120. package/src/daemon/api-routes.ts +3067 -0
  121. package/src/daemon/background-agent-service.ts +396 -0
  122. package/src/daemon/background-agent.test.ts +78 -0
  123. package/src/daemon/channel-service.ts +201 -0
  124. package/src/daemon/commitment-executor.ts +297 -0
  125. package/src/daemon/dashboard-auth.test.ts +170 -0
  126. package/src/daemon/event-classifier.ts +239 -0
  127. package/src/daemon/event-coalescer.ts +123 -0
  128. package/src/daemon/event-reactor.ts +214 -0
  129. package/src/daemon/flock.c +7 -0
  130. package/src/daemon/health.ts +220 -0
  131. package/src/daemon/index.ts +1070 -0
  132. package/src/daemon/llm-settings.test.ts +78 -0
  133. package/src/daemon/llm-settings.ts +450 -0
  134. package/src/daemon/observer-service.ts +150 -0
  135. package/src/daemon/pid.test.ts +283 -0
  136. package/src/daemon/pid.ts +224 -0
  137. package/src/daemon/research-queue.ts +155 -0
  138. package/src/daemon/services.ts +175 -0
  139. package/src/daemon/ws-service.ts +926 -0
  140. package/src/global.d.ts +4 -0
  141. package/src/goals/accountability.ts +240 -0
  142. package/src/goals/awareness-bridge.ts +185 -0
  143. package/src/goals/estimator.ts +185 -0
  144. package/src/goals/events.ts +28 -0
  145. package/src/goals/goals.test.ts +400 -0
  146. package/src/goals/integration.test.ts +329 -0
  147. package/src/goals/nl-builder.test.ts +220 -0
  148. package/src/goals/nl-builder.ts +256 -0
  149. package/src/goals/rhythm.test.ts +177 -0
  150. package/src/goals/rhythm.ts +275 -0
  151. package/src/goals/service.test.ts +135 -0
  152. package/src/goals/service.ts +407 -0
  153. package/src/goals/types.ts +106 -0
  154. package/src/goals/workflow-bridge.ts +96 -0
  155. package/src/integrations/google-api.ts +134 -0
  156. package/src/integrations/google-auth.ts +175 -0
  157. package/src/llm/README.md +291 -0
  158. package/src/llm/anthropic.ts +400 -0
  159. package/src/llm/gemini.ts +380 -0
  160. package/src/llm/groq.ts +406 -0
  161. package/src/llm/history.ts +147 -0
  162. package/src/llm/index.ts +21 -0
  163. package/src/llm/manager.ts +226 -0
  164. package/src/llm/ollama.ts +316 -0
  165. package/src/llm/openai.ts +411 -0
  166. package/src/llm/openrouter.ts +390 -0
  167. package/src/llm/provider.test.ts +487 -0
  168. package/src/llm/provider.ts +61 -0
  169. package/src/llm/test.ts +88 -0
  170. package/src/observers/README.md +278 -0
  171. package/src/observers/calendar.ts +113 -0
  172. package/src/observers/clipboard.ts +136 -0
  173. package/src/observers/email.ts +109 -0
  174. package/src/observers/example.ts +58 -0
  175. package/src/observers/file-watcher.ts +124 -0
  176. package/src/observers/index.ts +159 -0
  177. package/src/observers/notifications.ts +197 -0
  178. package/src/observers/observers.test.ts +203 -0
  179. package/src/observers/processes.ts +225 -0
  180. package/src/personality/README.md +61 -0
  181. package/src/personality/adapter.ts +196 -0
  182. package/src/personality/index.ts +20 -0
  183. package/src/personality/learner.ts +209 -0
  184. package/src/personality/model.ts +132 -0
  185. package/src/personality/personality.test.ts +236 -0
  186. package/src/roles/README.md +252 -0
  187. package/src/roles/authority.ts +120 -0
  188. package/src/roles/example-usage.ts +198 -0
  189. package/src/roles/index.ts +42 -0
  190. package/src/roles/loader.ts +143 -0
  191. package/src/roles/prompt-builder.ts +218 -0
  192. package/src/roles/test-multi.ts +102 -0
  193. package/src/roles/test-role.yaml +77 -0
  194. package/src/roles/test-utils.ts +93 -0
  195. package/src/roles/test.ts +106 -0
  196. package/src/roles/tool-guide.ts +195 -0
  197. package/src/roles/types.ts +36 -0
  198. package/src/roles/utils.ts +200 -0
  199. package/src/scripts/google-setup.ts +168 -0
  200. package/src/sidecar/connection.ts +179 -0
  201. package/src/sidecar/index.ts +6 -0
  202. package/src/sidecar/manager.ts +542 -0
  203. package/src/sidecar/protocol.ts +85 -0
  204. package/src/sidecar/rpc.ts +161 -0
  205. package/src/sidecar/scheduler.ts +136 -0
  206. package/src/sidecar/types.ts +112 -0
  207. package/src/sidecar/validator.ts +144 -0
  208. package/src/sites/builder-tools.ts +215 -0
  209. package/src/sites/dev-server-manager.ts +286 -0
  210. package/src/sites/fixtures/security-test-site/.jarvis-project.json +6 -0
  211. package/src/sites/fixtures/security-test-site/Makefile +15 -0
  212. package/src/sites/fixtures/security-test-site/README.md +18 -0
  213. package/src/sites/fixtures/security-test-site/index.html +12 -0
  214. package/src/sites/fixtures/security-test-site/index.ts +16 -0
  215. package/src/sites/fixtures/security-test-site/package.json +13 -0
  216. package/src/sites/fixtures/security-test-site/src/app.tsx +780 -0
  217. package/src/sites/fixtures/security-test-site/tsconfig.json +10 -0
  218. package/src/sites/git-manager.ts +240 -0
  219. package/src/sites/github-manager.ts +355 -0
  220. package/src/sites/index.ts +25 -0
  221. package/src/sites/project-manager.ts +389 -0
  222. package/src/sites/proxy.ts +133 -0
  223. package/src/sites/service.ts +136 -0
  224. package/src/sites/templates.ts +169 -0
  225. package/src/sites/types.ts +89 -0
  226. package/src/user/profile-followup.test.ts +84 -0
  227. package/src/user/profile-followup.ts +185 -0
  228. package/src/user/profile.ts +224 -0
  229. package/src/vault/README.md +110 -0
  230. package/src/vault/awareness.ts +341 -0
  231. package/src/vault/commitments.ts +299 -0
  232. package/src/vault/content-pipeline.ts +270 -0
  233. package/src/vault/conversations.ts +173 -0
  234. package/src/vault/dashboard-sessions.ts +44 -0
  235. package/src/vault/documents.ts +130 -0
  236. package/src/vault/entities.ts +185 -0
  237. package/src/vault/extractor.test.ts +356 -0
  238. package/src/vault/extractor.ts +345 -0
  239. package/src/vault/facts.ts +190 -0
  240. package/src/vault/goals.ts +477 -0
  241. package/src/vault/index.ts +87 -0
  242. package/src/vault/keychain.ts +99 -0
  243. package/src/vault/observations.ts +115 -0
  244. package/src/vault/relationships.ts +178 -0
  245. package/src/vault/retrieval.test.ts +139 -0
  246. package/src/vault/retrieval.ts +258 -0
  247. package/src/vault/schema.ts +709 -0
  248. package/src/vault/settings.ts +38 -0
  249. package/src/vault/user-profile.test.ts +113 -0
  250. package/src/vault/user-profile.ts +176 -0
  251. package/src/vault/vectors.ts +92 -0
  252. package/src/vault/webapp-template-seeds.ts +116 -0
  253. package/src/vault/webapp-templates.ts +244 -0
  254. package/src/vault/workflows.ts +403 -0
  255. package/src/workflows/auto-suggest.ts +290 -0
  256. package/src/workflows/engine.ts +366 -0
  257. package/src/workflows/events.ts +24 -0
  258. package/src/workflows/executor.ts +207 -0
  259. package/src/workflows/nl-builder.ts +198 -0
  260. package/src/workflows/nodes/actions/agent-task.ts +73 -0
  261. package/src/workflows/nodes/actions/calendar-action.ts +85 -0
  262. package/src/workflows/nodes/actions/code-execution.ts +73 -0
  263. package/src/workflows/nodes/actions/discord.ts +77 -0
  264. package/src/workflows/nodes/actions/file-write.ts +73 -0
  265. package/src/workflows/nodes/actions/gmail.ts +69 -0
  266. package/src/workflows/nodes/actions/http-request.ts +117 -0
  267. package/src/workflows/nodes/actions/notification.ts +85 -0
  268. package/src/workflows/nodes/actions/run-tool.ts +55 -0
  269. package/src/workflows/nodes/actions/send-message.ts +82 -0
  270. package/src/workflows/nodes/actions/shell-command.ts +76 -0
  271. package/src/workflows/nodes/actions/telegram.ts +60 -0
  272. package/src/workflows/nodes/builtin.ts +119 -0
  273. package/src/workflows/nodes/error/error-handler.ts +37 -0
  274. package/src/workflows/nodes/error/fallback.ts +47 -0
  275. package/src/workflows/nodes/error/retry.ts +82 -0
  276. package/src/workflows/nodes/logic/delay.ts +42 -0
  277. package/src/workflows/nodes/logic/if-else.ts +41 -0
  278. package/src/workflows/nodes/logic/loop.ts +90 -0
  279. package/src/workflows/nodes/logic/merge.ts +38 -0
  280. package/src/workflows/nodes/logic/race.ts +40 -0
  281. package/src/workflows/nodes/logic/switch.ts +59 -0
  282. package/src/workflows/nodes/logic/template-render.ts +53 -0
  283. package/src/workflows/nodes/logic/variable-get.ts +37 -0
  284. package/src/workflows/nodes/logic/variable-set.ts +59 -0
  285. package/src/workflows/nodes/registry.ts +99 -0
  286. package/src/workflows/nodes/transform/aggregate.ts +99 -0
  287. package/src/workflows/nodes/transform/csv-parse.ts +70 -0
  288. package/src/workflows/nodes/transform/json-parse.ts +63 -0
  289. package/src/workflows/nodes/transform/map-filter.ts +84 -0
  290. package/src/workflows/nodes/transform/regex-match.ts +89 -0
  291. package/src/workflows/nodes/triggers/calendar.ts +33 -0
  292. package/src/workflows/nodes/triggers/clipboard.ts +32 -0
  293. package/src/workflows/nodes/triggers/cron.ts +40 -0
  294. package/src/workflows/nodes/triggers/email.ts +40 -0
  295. package/src/workflows/nodes/triggers/file-change.ts +45 -0
  296. package/src/workflows/nodes/triggers/git.ts +46 -0
  297. package/src/workflows/nodes/triggers/manual.ts +23 -0
  298. package/src/workflows/nodes/triggers/poll.ts +81 -0
  299. package/src/workflows/nodes/triggers/process.ts +44 -0
  300. package/src/workflows/nodes/triggers/screen-event.ts +37 -0
  301. package/src/workflows/nodes/triggers/webhook.ts +39 -0
  302. package/src/workflows/safe-eval.ts +139 -0
  303. package/src/workflows/template.ts +118 -0
  304. package/src/workflows/triggers/cron.ts +311 -0
  305. package/src/workflows/triggers/manager.ts +285 -0
  306. package/src/workflows/triggers/observer-bridge.ts +172 -0
  307. package/src/workflows/triggers/poller.ts +201 -0
  308. package/src/workflows/triggers/screen-condition.ts +218 -0
  309. package/src/workflows/triggers/triggers.test.ts +740 -0
  310. package/src/workflows/triggers/webhook.ts +191 -0
  311. package/src/workflows/types.ts +133 -0
  312. package/src/workflows/variables.ts +72 -0
  313. package/src/workflows/workflows.test.ts +383 -0
  314. package/src/workflows/yaml.ts +104 -0
  315. package/ui/dist/index-3gr23jt9.js +112614 -0
  316. package/ui/dist/index-9vmj8127.css +14239 -0
  317. package/ui/dist/index-hy9pc1gm.js +112873 -0
  318. package/ui/dist/index-j2ep5d1w.js +112374 -0
  319. package/ui/dist/index-jt00vjqs.js +112858 -0
  320. package/ui/dist/index-k9ymx5qb.js +112374 -0
  321. package/ui/dist/index.html +16 -0
  322. package/ui/public/audio/pcm-capture-processor.js +11 -0
  323. package/ui/public/openwakeword/models/embedding_model.onnx +0 -0
  324. package/ui/public/openwakeword/models/hey_jarvis_v0.1.onnx +0 -0
  325. package/ui/public/openwakeword/models/melspectrogram.onnx +0 -0
  326. package/ui/public/openwakeword/models/silero_vad.onnx +0 -0
  327. package/ui/public/ort/ort-wasm-simd-threaded.jsep.mjs +106 -0
  328. package/ui/public/ort/ort-wasm-simd-threaded.jsep.wasm +0 -0
  329. package/ui/public/ort/ort-wasm-simd-threaded.mjs +59 -0
  330. package/ui/public/ort/ort-wasm-simd-threaded.wasm +0 -0
package/LICENSE ADDED
@@ -0,0 +1,153 @@
1
+ Jarvis Source Available License 2.0
2
+ (Based on RSALv2)
3
+
4
+ Last Update: March 12, 2026
5
+
6
+
7
+ 1. ACCEPTANCE
8
+
9
+ This Agreement sets forth the terms and conditions on which the Licensor
10
+ makes available the Software. By installing, downloading, accessing,
11
+ Using, or distributing any of the Software, You agree to all of the
12
+ terms and conditions of this Agreement.
13
+
14
+ If You are receiving the Software on behalf of Your Company, You
15
+ represent and warrant that You have the authority to agree to this
16
+ Agreement on behalf of such entity.
17
+
18
+ The Licensor reserves the right to update this Agreement from time to
19
+ time.
20
+
21
+ The terms below have the meanings set forth below for purposes of this
22
+ Agreement:
23
+
24
+
25
+ 2. DEFINITIONS
26
+
27
+ "Agreement" means this Jarvis Source Available License 2.0 Agreement.
28
+
29
+ "Control" means ownership, directly or indirectly, of substantially all
30
+ the assets of an entity, or the power to direct its management and
31
+ policies by vote, contract, or otherwise.
32
+
33
+ "License" means the License as described in the License paragraph below.
34
+
35
+ "Licensor" means Vieri Balboni (the individual developer and copyright
36
+ holder of the Software). Upon incorporation of a legal entity to back
37
+ the development of the Software, the Licensor role will transfer to
38
+ such entity, and this Agreement will be updated accordingly.
39
+
40
+ "Modify", "Modified", or "Modification" means to copy from or adapt all
41
+ or part of the work in a fashion requiring copyright permission other
42
+ than making an exact copy. The resulting work is called a Modified
43
+ version of the earlier work.
44
+
45
+ "Software" means the J.A.R.V.I.S. (Just A Really Versatile Intelligent
46
+ System) software as made available by the Licensor at
47
+ https://github.com/vierisid/jarvis, including any portion of it.
48
+
49
+ "Trademark" means the trademarks, service marks, and any other similar
50
+ rights.
51
+
52
+ "Use" means anything You do with the Software requiring one of Your
53
+ Licenses.
54
+
55
+ "You" means the recipient of the Software, the individual or entity on
56
+ whose behalf You are agreeing to this Agreement.
57
+
58
+ "Your Company" means any legal entity, sole proprietorship, or other
59
+ kind of organization that You work for, plus all organizations that
60
+ have control over, are under the control of, or are under common
61
+ control with that organization.
62
+
63
+ "Your Licenses" means all the Licenses granted to You for the Software
64
+ under this Agreement.
65
+
66
+
67
+ 3. LICENSE
68
+
69
+ The Licensor grants You a non-exclusive, royalty-free, worldwide,
70
+ non-sublicensable, non-transferable license to use, copy, distribute,
71
+ make available, and prepare derivative works of the Software, in each
72
+ case subject to the limitations and conditions below.
73
+
74
+
75
+ 4. LIMITATIONS
76
+
77
+ You may not make the functionality of the Software or a Modified
78
+ version available to third parties as a service or distribute the
79
+ Software or a Modified version in a manner that makes the functionality
80
+ of the Software available to third parties.
81
+
82
+ Making the functionality of the Software or Modified version available
83
+ to third parties includes, without limitation, enabling third parties
84
+ to interact with the functionality of the Software or Modified version
85
+ in distributed form or remotely through a computer network, offering a
86
+ product or service, the value of which entirely or primarily derives
87
+ from the value of the Software or Modified version, or offering a
88
+ product or service that accomplishes for users the primary purpose of
89
+ the Software or Modified version.
90
+
91
+ You may not alter, remove, or obscure any licensing, copyright, or
92
+ other notices of the Licensor in the Software. Any use of the
93
+ Licensor's Trademarks is subject to applicable law.
94
+
95
+
96
+ 5. PATENTS
97
+
98
+ The Licensor grants You a License, under any patent claims the Licensor
99
+ can License, or becomes able to License, to make, have made, use, sell,
100
+ offer for sale, import and have imported the Software, in each case
101
+ subject to the limitations and conditions in this License. This License
102
+ does not cover any patent claims that You cause to be infringed by
103
+ Modifications or additions to the Software. If You or Your Company make
104
+ any written claim that the Software infringes or contributes to
105
+ infringement of any patent, your patent License for the Software
106
+ granted under this Agreement ends immediately. If Your Company makes
107
+ such a claim, your patent License ends immediately for work on behalf
108
+ of Your Company.
109
+
110
+
111
+ 6. NOTICES
112
+
113
+ You must ensure that anyone who gets a copy of any part of the Software
114
+ from You also gets a copy of the terms and conditions in this
115
+ Agreement.
116
+
117
+ If You modify the Software, You must include in any Modified copies of
118
+ the Software prominent notices stating that You have Modified the
119
+ Software.
120
+
121
+
122
+ 7. NO OTHER RIGHTS
123
+
124
+ The terms and conditions of this Agreement do not imply any Licenses
125
+ other than those expressly granted in this Agreement.
126
+
127
+
128
+ 8. TERMINATION
129
+
130
+ If You Use the Software in violation of this Agreement, such Use is not
131
+ Licensed, and Your Licenses will automatically terminate. If the
132
+ Licensor provides You with a notice of your violation, and You cease
133
+ all violations of this License no later than 30 days after You receive
134
+ that notice, Your Licenses will be reinstated retroactively. However,
135
+ if You violate this Agreement after such reinstatement, any additional
136
+ violation of this Agreement will cause your Licenses to terminate
137
+ automatically and permanently.
138
+
139
+
140
+ 9. NO LIABILITY
141
+
142
+ AS FAR AS THE LAW ALLOWS, THE SOFTWARE COMES AS IS, WITHOUT ANY
143
+ WARRANTY OR CONDITION, AND THE LICENSOR WILL NOT BE LIABLE TO YOU FOR
144
+ ANY DAMAGES ARISING OUT OF THIS AGREEMENT OR THE USE OR NATURE OF THE
145
+ SOFTWARE, UNDER ANY KIND OF LEGAL CLAIM.
146
+
147
+
148
+ 10. GOVERNING LAW AND JURISDICTION
149
+
150
+ This Agreement will be construed and enforced in all respects in
151
+ accordance with the laws of the Italian Republic without reference to
152
+ its choice of law rules. The courts located in Milan, Italy, have
153
+ exclusive jurisdiction for all purposes relating to this Agreement.
package/README.md ADDED
@@ -0,0 +1,428 @@
1
+ <div align="center">
2
+
3
+ # JARVIS
4
+
5
+ **Just A Rather Very Intelligent System**
6
+
7
+ [![CI](https://github.com/vierisid/jarvis/actions/workflows/test.yml/badge.svg)](https://github.com/vierisid/jarvis/actions/workflows/test.yml)
8
+ [![bun](https://img.shields.io/npm/v/@usejarvis/brain?label=bun&logo=bun&color=%23f9f1e1)](https://bun.sh/packages/@usejarvis/brain)
9
+ [![License](https://img.shields.io/badge/license-RSALv2-blue)](LICENSE)
10
+ [![Runtime](https://img.shields.io/badge/runtime-Bun-%23f9f1e1)](https://bun.sh)
11
+ [![Discord](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Fv10%2Finvites%2FzfmXvE586Q%3Fwith_counts%3Dtrue&query=%24.approximate_member_count&label=Discord&logo=discord&color=5865F2&suffix=%20members)](https://discord.gg/zfmXvE586Q)
12
+ [![Website](https://img.shields.io/badge/website-usejarvis.dev-black)](https://usejarvis.dev)
13
+
14
+ *An always-on autonomous AI daemon with desktop awareness, multi-agent hierarchy, visual workflows, and goal pursuit.*
15
+
16
+ JARVIS is not a chatbot with tools. It is a persistent daemon that sees your screen, understands what you're doing, and acts β€” within the authority limits you define. Run it on a server for 24/7 availability, then connect sidecars on your laptop, desktop, or any other machine to give it eyes and hands everywhere.
17
+
18
+ </div>
19
+
20
+ <!-- TODO: add dashboard screenshot or demo GIF here -->
21
+
22
+ ---
23
+
24
+ ## Table of Contents
25
+
26
+ - [JARVIS](#jarvis)
27
+ - [Table of Contents](#table-of-contents)
28
+ - [πŸ” What Makes JARVIS Different](#-what-makes-jarvis-different)
29
+ - [⚑ Quick Start](#-quick-start)
30
+ - [☁️ Managed Hosting](#️-managed-hosting)
31
+ - [πŸ’‘ Use Cases](#-use-cases)
32
+ - [πŸ“‹ Requirements](#-requirements)
33
+ - [πŸ“¦ Installation](#-installation)
34
+ - [bun (recommended)](#bun-recommended)
35
+ - [Docker](#docker)
36
+ - [One-liner](#one-liner)
37
+ - [Manual](#manual)
38
+ - [πŸš€ Usage](#-usage)
39
+ - [πŸ–₯️ Sidecar Setup](#️-sidecar-setup)
40
+ - [1. Install the sidecar](#1-install-the-sidecar)
41
+ - [2. Enroll in the dashboard](#2-enroll-in-the-dashboard)
42
+ - [3. Run the sidecar](#3-run-the-sidecar)
43
+ - [🧠 Core Capabilities](#-core-capabilities)
44
+ - [πŸŽ›οΈ Dashboard](#️-dashboard)
45
+ - [βš™οΈ Configuration](#️-configuration)
46
+ - [πŸ—οΈ Architecture](#️-architecture)
47
+ - [πŸ› οΈ Development](#️-development)
48
+ - [Stack](#stack)
49
+ - [πŸ—ΊοΈ Roadmap](#️-roadmap)
50
+ - [Upcoming](#upcoming)
51
+ - [πŸ“– Documentation](#-documentation)
52
+ - [πŸ’¬ Community](#-community)
53
+ - [πŸ”’ Security](#-security)
54
+ - [πŸ“„ License](#-license)
55
+
56
+ ---
57
+
58
+ ## πŸ” What Makes JARVIS Different
59
+
60
+ | Feature | Typical AI Assistant | JARVIS |
61
+ |---|---|---|
62
+ | Always-on | No β€” request/response only | Yes β€” persistent daemon, runs 24/7 on a server or locally |
63
+ | Reach across machines | No β€” single machine only | Yes β€” one daemon, unlimited sidecars on any machine |
64
+ | Desktop awareness | No | Yes β€” screen capture every 5-10s via sidecar |
65
+ | Native app control | No | Yes β€” Go sidecar with Win32/X11/macOS automation |
66
+ | Multi-agent delegation | No | Yes β€” 9 specialist roles |
67
+ | Visual workflow builder | No | Yes β€” 50+ nodes, n8n-style |
68
+ | Voice with wake word | No | Yes β€” streaming TTS + openwakeword |
69
+ | Goal pursuit (OKRs) | No | Yes β€” drill sergeant accountability |
70
+ | Authority gating | No | Yes β€” runtime enforcement + audit trail |
71
+ | LLM provider choice | Usually locked to one | 5 providers: Anthropic, OpenAI, Gemini, Ollama, Groq |
72
+
73
+ ---
74
+
75
+ ## ⚑ Quick Start
76
+
77
+ ```bash
78
+ bun install -g @usejarvis/brain # Install the daemon
79
+ jarvis onboard # Interactive setup wizard
80
+ jarvis start -d # Start as background daemon
81
+ ```
82
+
83
+ Open `http://localhost:3142` β€” your dashboard is ready.
84
+
85
+ ---
86
+
87
+ ## ☁️ Managed Hosting
88
+
89
+ Don't want to deal with servers, DNS, or TLS certificates? We've partnered with **[opencove.host](https://opencove.host)** β€” a managed hosting platform built specifically for JARVIS.
90
+
91
+ - **No self-hosting hassle** β€” no server to provision, no dependencies to install
92
+ - **Dedicated domain included** β€” no need to buy a domain or configure DNS and TLS
93
+ - **Up and running in under 5 minutes** β€” spin up your JARVIS instance and start using it immediately
94
+
95
+ Visit [opencove.host](https://opencove.host) to get started.
96
+
97
+ ---
98
+
99
+ ## πŸ’‘ Use Cases
100
+
101
+ **Research while you work** β€” Ask JARVIS to deep-dive a topic. It runs browser searches, reads pages, and compiles a summary in the background while you focus on other things.
102
+
103
+ **Automate across machines** β€” Run the daemon on your home server. Connect sidecars on your work laptop and your desktop. JARVIS can move files between them, run scripts on your server, and open apps on your laptop β€” all from one conversation.
104
+
105
+ **Inbox triage** β€” Set up a workflow that monitors your Gmail, categorizes incoming messages, drafts replies for your review, and schedules follow-ups on your calendar.
106
+
107
+ **Desktop co-pilot** β€” JARVIS watches your screen via the sidecar. If it sees you struggling with an error message or a complex form, it proactively offers help or fills in fields for you.
108
+
109
+ **Goal accountability** β€” Define OKRs in the Goals dashboard. JARVIS plans your day each morning, checks in during the evening, and escalates if you're falling behind β€” like a personal drill sergeant.
110
+
111
+ **Multi-step workflows** β€” Build visual automations with 50+ node types: "when a file appears in this folder, OCR it, extract key data, update the spreadsheet, and notify me on Telegram."
112
+
113
+ ---
114
+
115
+ ## πŸ“‹ Requirements
116
+
117
+ - **Bun** >= 1.0 (installed automatically if missing)
118
+ - **OS (native daemon install)**: macOS, Linux, or WSL
119
+ - **Windows**: use WSL2 for the Bun install, or Docker for the daemon
120
+ - **LLM API key** β€” at least one of: Anthropic, OpenAI, Google Gemini, or a local Ollama instance
121
+ - Google OAuth credentials (optional β€” Calendar and Gmail integration)
122
+ - Telegram bot token (optional β€” notification channel)
123
+ - Discord bot token (optional β€” notification channel)
124
+ - ElevenLabs API key (optional β€” premium TTS)
125
+
126
+ ---
127
+
128
+ ## πŸ“¦ Installation
129
+
130
+ ### bun (recommended)
131
+
132
+ ```bash
133
+ bun install -g @usejarvis/brain
134
+ jarvis onboard
135
+ ```
136
+
137
+ > **Note:** Native Windows installs are blocked for the JARVIS daemon. On Windows, use WSL2 for the Bun install above, or use the Docker install instead.
138
+
139
+ ### Docker
140
+
141
+ Run JARVIS on any OS with a single command β€” no Bun or dependencies required. Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) (Windows, macOS, Linux) if you don't have Docker yet.
142
+
143
+ ```bash
144
+ docker run -d --name jarvis \
145
+ -p 3142:3142 \
146
+ -v jarvis-data:/data \
147
+ -e JARVIS_API_KEY=sk-ant-your-key \
148
+ ghcr.io/vierisid/jarvis:latest
149
+ ```
150
+
151
+ The image is available on [GHCR](https://ghcr.io/vierisid/jarvis). Configuration can be provided via environment variables or by mounting a `config.yaml` into the `/data` volume.
152
+
153
+ > **Note:** Docker runs in an isolated container, so the daemon inside it cannot access your host desktop, browser, or clipboard directly. You must still install the [sidecar](#️-sidecar-setup) on each machine where you want JARVIS to have desktop awareness and automation capabilities.
154
+
155
+ ### One-liner
156
+
157
+ ```bash
158
+ curl -fsSL https://raw.githubusercontent.com/vierisid/jarvis/main/install.sh | bash
159
+ jarvis onboard
160
+ ```
161
+
162
+ The install script sets up Bun, clones the repo, and links the `jarvis` CLI. Then run `jarvis onboard` to configure your assistant interactively.
163
+
164
+ > **Note:** The one-liner only supports macOS, Linux, and WSL. Native Windows shells such as PowerShell, Git Bash, and CMD should use WSL2 or the Docker install instead.
165
+
166
+ ### Manual
167
+
168
+ ```bash
169
+ git clone https://github.com/vierisid/jarvis.git ~/.jarvis/daemon
170
+ cd ~/.jarvis/daemon
171
+ bun install
172
+ bun run build:ui
173
+ jarvis onboard
174
+ ```
175
+
176
+ ---
177
+
178
+ ## πŸš€ Usage
179
+
180
+ ```bash
181
+ jarvis start # Start in foreground
182
+ jarvis start -d # Start as background daemon
183
+ jarvis start --port 3142 # Start on a specific port
184
+ jarvis stop # Stop the daemon
185
+ jarvis status # Check if running
186
+ jarvis doctor # Verify environment & connectivity
187
+ jarvis logs -f # Follow live logs
188
+ jarvis update # Update to latest version
189
+ jarvis uninstall # Remove JARVIS from this machine
190
+ ```
191
+
192
+ The dashboard is available at `http://localhost:3142` once the daemon is running.
193
+
194
+ ---
195
+
196
+ ## πŸ–₯️ Sidecar Setup
197
+
198
+ The sidecar is what gives JARVIS physical reach beyond the machine it runs on. It is a lightweight agent that you install on any machine β€” your laptop, a dev server, a home PC β€” and it connects back to the central daemon over an authenticated WebSocket. Each sidecar gives JARVIS access to that machine's desktop, browser, terminal, filesystem, clipboard, and screenshots.
199
+
200
+ This means you can run the daemon on an always-on server and still interact with your desktop machines as if JARVIS were running locally. Enroll as many sidecars as you want.
201
+
202
+ ### 1. Install the sidecar
203
+
204
+ **Via bun:**
205
+
206
+ ```bash
207
+ bun install -g @usejarvis/sidecar
208
+ ```
209
+
210
+ **Or download the binary** from [GitHub Releases](https://github.com/vierisid/jarvis/releases) for your platform (macOS, Linux, Windows).
211
+
212
+ ### 2. Enroll in the dashboard
213
+
214
+ 1. Open the JARVIS dashboard at `http://localhost:3142`
215
+ 2. Go to **Settings** β†’ **Sidecar**
216
+ 3. Enter a friendly name for this machine (e.g. "work laptop") and click **Enroll**
217
+ 4. Click **Copy** to copy the token command
218
+
219
+ ### 3. Run the sidecar
220
+
221
+ Paste and run the copied command on the machine where you installed the sidecar:
222
+
223
+ ```bash
224
+ jarvis-sidecar --token <your-token>
225
+ ```
226
+
227
+ The sidecar saves the token locally, so on subsequent runs you just need:
228
+
229
+ ```bash
230
+ jarvis-sidecar
231
+ ```
232
+
233
+ Once connected, the sidecar appears as online in the Settings page where you can configure its capabilities (terminal, filesystem, desktop, browser, clipboard, screenshot, awareness).
234
+
235
+ ---
236
+
237
+ ## 🧠 Core Capabilities
238
+
239
+ **Conversations** β€” Multi-provider LLM routing (Anthropic Claude, OpenAI GPT, Google Gemini, Ollama). Streaming responses, personality engine, vault-injected memory context on every message.
240
+
241
+ **Tool Execution** β€” 14+ builtin tools with up to 200 iterations per turn. The agent loop runs until the task is complete, not until the response looks done.
242
+
243
+ **Memory & Knowledge** β€” Vault knowledge graph (entities, facts, relationships) stored in SQLite. Extracted automatically after each response. Injected into the system prompt so JARVIS always remembers what matters.
244
+
245
+ **Browser Control** β€” Auto-launches Chromium via CDP. 7 browser tools handle navigation, interaction, extraction, and form filling.
246
+
247
+ **Desktop Automation** β€” Go sidecar with JWT-authenticated WebSocket, RPC protocol, and binary streaming. Win32 API automation (EnumWindows, UIAutomation, SendKeys) on Windows, X11 tools on Linux.
248
+
249
+ **Multi-Agent Hierarchy** β€” `delegate_task` and `manage_agents` tools. An AgentTaskManager coordinates 9 specialist roles. Sub-agents are denied governed actions β€” authority stays with the top-level agent.
250
+
251
+ **Voice Interface** β€” Edge TTS or ElevenLabs with streaming sentence-by-sentence playback. Binary WebSocket protocol carries mic audio (WebM) and TTS audio (MP3) on the same connection. Wake word via openwakeword (ONNX, runs in-browser).
252
+
253
+ **Continuous Awareness** β€” Full desktop capture at 5-10 second intervals. Hybrid OCR (Tesseract.js) + Cloud Vision. Struggle detection, activity session inference, entity-linked context graph. Proactive suggestions and an overlay widget.
254
+
255
+ **Workflow Automation** β€” Visual builder powered by `@xyflow/react`. 50+ nodes across 5 categories. Triggers: cron, webhook, file watch, screen events, polling, clipboard, process, git, email, calendar. NL chat creation, YAML export/import, retry + fallback + AI-powered self-heal.
256
+
257
+ **Goal Pursuit** β€” OKR hierarchy (objective β†’ key result β†’ daily action). Google-style 0.0-1.0 scoring. Morning planning, evening review, drill sergeant escalation. Awareness pipeline auto-advances progress. Three dashboard views: kanban, timeline, metrics.
258
+
259
+ **Authority & Autonomy** β€” Runtime enforcement with soft-gate approvals. Multi-channel approval delivery (chat, Telegram, Discord). Full audit trail. Emergency pause/kill controls. Consecutive-approval learning suggests auto-approve rules.
260
+
261
+ ---
262
+
263
+ ## πŸŽ›οΈ Dashboard
264
+
265
+ Built with React 19 and Tailwind CSS 4. Served by the daemon at `http://localhost:3142`.
266
+
267
+ | Page | Purpose |
268
+ |---|---|
269
+ | Chat | Primary conversation interface with streaming |
270
+ | Tasks | Active commitments and background work queue |
271
+ | Content Pipeline | Multi-step content generation and review |
272
+ | Knowledge Graph | Visual vault explorer β€” entities, facts, relationships |
273
+ | Memory | Raw vault search and inspection |
274
+ | Calendar | Google Calendar integration with scheduling tools |
275
+ | Agent Office | Multi-agent delegation status and role management |
276
+ | Command Center | Tool history, execution logs, proactive notifications |
277
+ | Authority | Approval queue, permission rules, audit trail |
278
+ | Awareness | Live desktop feed, activity timeline, suggestions |
279
+ | Workflows | Visual builder, execution monitor, version history |
280
+ | Goals | OKR dashboard β€” kanban, timeline, and metrics views |
281
+ | Settings | LLM providers, TTS/STT, channels, behavior config |
282
+
283
+ ---
284
+
285
+ ## βš™οΈ Configuration
286
+
287
+ JARVIS stores its configuration at `~/.jarvis/config.yaml`. Run `jarvis onboard` for interactive setup β€” it walks through LLM provider, voice, channels, personality, and authority settings.
288
+
289
+ ```yaml
290
+ daemon:
291
+ port: 3142
292
+ data_dir: "~/.jarvis"
293
+ db_path: "~/.jarvis/jarvis.db"
294
+
295
+ llm:
296
+ primary: "anthropic"
297
+ fallback: ["openai", "gemini", "ollama"]
298
+ anthropic:
299
+ api_key: "sk-ant-..."
300
+ model: "claude-sonnet-4-6"
301
+
302
+ personality:
303
+ core_traits: ["loyal", "efficient", "proactive"]
304
+ assistant_name: "Jarvis"
305
+
306
+ authority:
307
+ default_level: 3
308
+
309
+ active_role: "personal-assistant"
310
+ ```
311
+
312
+ See [config.example.yaml](config.example.yaml) for the full reference including Google OAuth, Telegram, Discord, ElevenLabs, and voice settings.
313
+
314
+ ---
315
+
316
+ ## πŸ—οΈ Architecture
317
+
318
+ ```
319
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
320
+ β”‚ JARVIS Daemon β”‚
321
+ β”‚ (server or local machine) β”‚
322
+ β”‚ β”‚
323
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
324
+ β”‚ β”‚ LLM β”‚ β”‚ Vault β”‚ β”‚ Agent β”‚ β”‚ Workflow β”‚ β”‚
325
+ β”‚ β”‚ Router β”‚ β”‚ Memory β”‚ β”‚ Manager β”‚ β”‚ Engine β”‚ β”‚
326
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
327
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
328
+ β”‚ β”‚ Tool β”‚ β”‚ Authorityβ”‚ β”‚ Goal β”‚ β”‚ Awareness β”‚ β”‚
329
+ β”‚ β”‚ Executor β”‚ β”‚ Engine β”‚ β”‚ Tracker β”‚ β”‚ Pipeline β”‚ β”‚
330
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
331
+ β”‚ β”‚
332
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
333
+ β”‚ β”‚ Bun.serve() β€” HTTP + WebSocket + Dashboard (React) β”‚ β”‚
334
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
335
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
336
+ β”‚ JWT-auth WebSocket β”‚
337
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
338
+ β”‚ Sidecar #1 β”‚ β”‚ Sidecar #2 β”‚ ...
339
+ β”‚ (laptop) β”‚ β”‚ (dev server) β”‚
340
+ β”‚ β”‚ β”‚ β”‚
341
+ β”‚ desktop β”‚ β”‚ terminal β”‚
342
+ β”‚ browser β”‚ β”‚ filesystem β”‚
343
+ β”‚ terminal β”‚ β”‚ screenshots β”‚
344
+ β”‚ clipboard β”‚ β”‚ β”‚
345
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
346
+ ```
347
+
348
+ The **daemon** is the brain β€” it holds the LLM connections, memory vault, agent hierarchy, and all decision-making. It can run on a home server, a VPS, or your local machine.
349
+
350
+ **Sidecars** are the hands. Each sidecar is a lightweight Go binary that connects to the daemon and exposes its host machine's capabilities. The daemon can orchestrate actions across all connected sidecars simultaneously. Sidecars authenticate via JWT and communicate over a binary WebSocket protocol.
351
+
352
+ This separation means JARVIS stays reachable 24/7 on a server while still being able to see your screen, type in your apps, and manage files on any machine where a sidecar is running.
353
+
354
+ ---
355
+
356
+ ## πŸ› οΈ Development
357
+
358
+ ```bash
359
+ bun test # Run all tests (379 tests across 22 files)
360
+ bun run dev # Hot-reload daemon
361
+ bun run build:ui # Rebuild dashboard
362
+ bun run db:init # Initialize or reset the database
363
+ ```
364
+
365
+ ### Stack
366
+
367
+ - **Runtime**: Bun (not Node.js)
368
+ - **Language**: TypeScript (ESM)
369
+ - **Database**: SQLite via `bun:sqlite`
370
+ - **UI**: React 19, Tailwind CSS 4, `@xyflow/react`
371
+ - **LLM**: Anthropic Claude, OpenAI GPT, Google Gemini, Ollama
372
+ - **Desktop sidecar**: Go (JWT auth, WebSocket RPC, platform-specific automation)
373
+ - **Voice**: openwakeword (ONNX), Edge TTS / ElevenLabs
374
+ - **Package**: `@usejarvis/brain` (published to npm registry, installable via bun)
375
+
376
+ ---
377
+
378
+ ## πŸ—ΊοΈ Roadmap
379
+
380
+ 16 milestones completed β€” LLM conversations, tool execution, memory vault, browser control, proactive agent, dashboard UI, multi-agent hierarchy, communication channels, native app control, voice interface, authority & autonomy, distribution & onboarding, continuous awareness, workflow automation, plugin ecosystem, and autonomous goal pursuit.
381
+
382
+ **379 tests passing across 22 test files. ~65,000 lines of TypeScript + Go.**
383
+
384
+ ### Upcoming
385
+
386
+ | Milestone | Description |
387
+ |---|---|
388
+ | Smart Home | Home Assistant integration |
389
+ | Financial Intelligence | Plaid, portfolio tracking |
390
+ | Mobile Companion | React Native dashboard |
391
+ | Self-Improvement | Autonomous prompt evolution |
392
+ | Multi-Modal | DALL-E 3, full video/image processing |
393
+ | Swarm Intelligence | Multi-device coordination |
394
+
395
+ See [VISION.md](VISION.md) for the full roadmap with detailed specifications.
396
+
397
+ ---
398
+
399
+ ## πŸ“– Documentation
400
+
401
+ - [VISION.md](VISION.md) β€” Full roadmap and milestone specifications
402
+ - [docs/LLM_PROVIDERS.md](docs/LLM_PROVIDERS.md) β€” LLM provider configuration
403
+ - [docs/WORKFLOW_AUTOMATION.md](docs/WORKFLOW_AUTOMATION.md) β€” Workflow engine guide
404
+ - [docs/VAULT_EXTRACTOR.md](docs/VAULT_EXTRACTOR.md) β€” Memory and knowledge vault
405
+ - [docs/PERSONALITY_ENGINE.md](docs/PERSONALITY_ENGINE.md) β€” Personality and role system
406
+ - [config.example.yaml](config.example.yaml) β€” Full configuration reference
407
+
408
+ ---
409
+
410
+ ## πŸ’¬ Community
411
+
412
+ - [Discord](https://discord.gg/nE3hcaFYZP) β€” Chat with other users, ask questions, share workflows
413
+ - [Website](https://usejarvis.dev) β€” Project homepage and documentation
414
+ - [GitHub Issues](https://github.com/vierisid/jarvis/issues) β€” Bug reports and feature requests
415
+
416
+ ---
417
+
418
+ ## πŸ”’ Security
419
+
420
+ JARVIS includes a built-in authority engine that gates every action at runtime. All tool executions are logged in an audit trail, and sensitive operations require explicit approval via the dashboard, Telegram, or Discord. Emergency pause and kill controls are always available.
421
+
422
+ If you discover a security vulnerability, please report it privately by emailing the maintainer rather than opening a public issue.
423
+
424
+ ---
425
+
426
+ ## πŸ“„ License
427
+
428
+ [Jarvis Source Available License 2.0](LICENSE) (based on RSALv2)