@bitseek/hermes-webui 0.1.0-beta.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 (233) hide show
  1. package/README.md +213 -0
  2. package/bin/hermes-webui.mjs +588 -0
  3. package/package.json +25 -0
  4. package/scripts/sync-vendor.mjs +74 -0
  5. package/templates/launchd/com.bitseek.hermes-webui.plist +21 -0
  6. package/templates/systemd/hermes-webui.service +13 -0
  7. package/templates/windows/hermes-webui-task.ps1 +3 -0
  8. package/vendor/agent-frontend-shell/.bitseek-source.json +6 -0
  9. package/vendor/agent-frontend-shell/.dockerignore +7 -0
  10. package/vendor/agent-frontend-shell/.env.docker.example +89 -0
  11. package/vendor/agent-frontend-shell/.env.example +34 -0
  12. package/vendor/agent-frontend-shell/.github/FUNDING.yml +3 -0
  13. package/vendor/agent-frontend-shell/.github/workflows/browser-smoke.yml +42 -0
  14. package/vendor/agent-frontend-shell/.github/workflows/docker-smoke.yml +233 -0
  15. package/vendor/agent-frontend-shell/.github/workflows/native-windows-startup.yml +132 -0
  16. package/vendor/agent-frontend-shell/.github/workflows/release.yml +57 -0
  17. package/vendor/agent-frontend-shell/.github/workflows/tests.yml +88 -0
  18. package/vendor/agent-frontend-shell/.vscode/launch.json +59 -0
  19. package/vendor/agent-frontend-shell/.vscode/settings.json +13 -0
  20. package/vendor/agent-frontend-shell/AGENTS.md +80 -0
  21. package/vendor/agent-frontend-shell/ARCHITECTURE.md +1658 -0
  22. package/vendor/agent-frontend-shell/BUGS.md +52 -0
  23. package/vendor/agent-frontend-shell/CHANGELOG.md +7295 -0
  24. package/vendor/agent-frontend-shell/CONTRIBUTING.md +205 -0
  25. package/vendor/agent-frontend-shell/CONTRIBUTORS.md +107 -0
  26. package/vendor/agent-frontend-shell/DESIGN.md +173 -0
  27. package/vendor/agent-frontend-shell/Dockerfile +91 -0
  28. package/vendor/agent-frontend-shell/LICENSE +21 -0
  29. package/vendor/agent-frontend-shell/README-CUSTOM.md +76 -0
  30. package/vendor/agent-frontend-shell/README.md +705 -0
  31. package/vendor/agent-frontend-shell/ROADMAP.md +351 -0
  32. package/vendor/agent-frontend-shell/SPRINTS.md +147 -0
  33. package/vendor/agent-frontend-shell/TESTING.md +1932 -0
  34. package/vendor/agent-frontend-shell/THEMES.md +170 -0
  35. package/vendor/agent-frontend-shell/api/__init__.py +1 -0
  36. package/vendor/agent-frontend-shell/api/agent_health.py +392 -0
  37. package/vendor/agent-frontend-shell/api/agent_sessions.py +782 -0
  38. package/vendor/agent-frontend-shell/api/auth.py +592 -0
  39. package/vendor/agent-frontend-shell/api/background.py +87 -0
  40. package/vendor/agent-frontend-shell/api/clarify.py +238 -0
  41. package/vendor/agent-frontend-shell/api/commands.py +124 -0
  42. package/vendor/agent-frontend-shell/api/compression_anchor.py +134 -0
  43. package/vendor/agent-frontend-shell/api/config.py +5178 -0
  44. package/vendor/agent-frontend-shell/api/dashboard_probe.py +255 -0
  45. package/vendor/agent-frontend-shell/api/extensions.py +253 -0
  46. package/vendor/agent-frontend-shell/api/gateway_chat.py +435 -0
  47. package/vendor/agent-frontend-shell/api/gateway_watcher.py +230 -0
  48. package/vendor/agent-frontend-shell/api/goals.py +608 -0
  49. package/vendor/agent-frontend-shell/api/helpers.py +474 -0
  50. package/vendor/agent-frontend-shell/api/kanban_bridge.py +1255 -0
  51. package/vendor/agent-frontend-shell/api/metering.py +194 -0
  52. package/vendor/agent-frontend-shell/api/models.py +4210 -0
  53. package/vendor/agent-frontend-shell/api/oauth.py +770 -0
  54. package/vendor/agent-frontend-shell/api/onboarding.py +1046 -0
  55. package/vendor/agent-frontend-shell/api/passkeys.py +365 -0
  56. package/vendor/agent-frontend-shell/api/profiles.py +1499 -0
  57. package/vendor/agent-frontend-shell/api/providers.py +2175 -0
  58. package/vendor/agent-frontend-shell/api/request_diagnostics.py +160 -0
  59. package/vendor/agent-frontend-shell/api/rollback.py +320 -0
  60. package/vendor/agent-frontend-shell/api/routes.py +13990 -0
  61. package/vendor/agent-frontend-shell/api/run_journal.py +284 -0
  62. package/vendor/agent-frontend-shell/api/runner_client.py +156 -0
  63. package/vendor/agent-frontend-shell/api/runtime_adapter.py +431 -0
  64. package/vendor/agent-frontend-shell/api/session_discoverability.py +640 -0
  65. package/vendor/agent-frontend-shell/api/session_events.py +45 -0
  66. package/vendor/agent-frontend-shell/api/session_lifecycle.py +208 -0
  67. package/vendor/agent-frontend-shell/api/session_ops.py +207 -0
  68. package/vendor/agent-frontend-shell/api/session_recovery.py +655 -0
  69. package/vendor/agent-frontend-shell/api/skill_usage.py +32 -0
  70. package/vendor/agent-frontend-shell/api/startup.py +128 -0
  71. package/vendor/agent-frontend-shell/api/state_sync.py +187 -0
  72. package/vendor/agent-frontend-shell/api/streaming.py +7048 -0
  73. package/vendor/agent-frontend-shell/api/system_health.py +167 -0
  74. package/vendor/agent-frontend-shell/api/terminal.py +410 -0
  75. package/vendor/agent-frontend-shell/api/turn_journal.py +214 -0
  76. package/vendor/agent-frontend-shell/api/updates.py +1261 -0
  77. package/vendor/agent-frontend-shell/api/upload.py +322 -0
  78. package/vendor/agent-frontend-shell/api/usage.py +26 -0
  79. package/vendor/agent-frontend-shell/api/workspace.py +867 -0
  80. package/vendor/agent-frontend-shell/api/workspace_git.py +1261 -0
  81. package/vendor/agent-frontend-shell/api/worktrees.py +357 -0
  82. package/vendor/agent-frontend-shell/bootstrap.py +492 -0
  83. package/vendor/agent-frontend-shell/ctl.sh +427 -0
  84. package/vendor/agent-frontend-shell/docker-compose.custom.yml +26 -0
  85. package/vendor/agent-frontend-shell/docker-compose.three-container.yml +168 -0
  86. package/vendor/agent-frontend-shell/docker-compose.two-container.yml +147 -0
  87. package/vendor/agent-frontend-shell/docker-compose.yml +57 -0
  88. package/vendor/agent-frontend-shell/docker_init.bash +459 -0
  89. package/vendor/agent-frontend-shell/docs/CONTRACTS.md +207 -0
  90. package/vendor/agent-frontend-shell/docs/EXTENSIONS.md +212 -0
  91. package/vendor/agent-frontend-shell/docs/ISSUES.md +23 -0
  92. package/vendor/agent-frontend-shell/docs/UIUX-GUIDE.md +196 -0
  93. package/vendor/agent-frontend-shell/docs/advanced-chat-setup.md +83 -0
  94. package/vendor/agent-frontend-shell/docs/docker.md +337 -0
  95. package/vendor/agent-frontend-shell/docs/onboarding-agent-checklist.md +207 -0
  96. package/vendor/agent-frontend-shell/docs/onboarding.md +202 -0
  97. package/vendor/agent-frontend-shell/docs/remote-access.md +75 -0
  98. package/vendor/agent-frontend-shell/docs/rfcs/README.md +53 -0
  99. package/vendor/agent-frontend-shell/docs/rfcs/agent-source-boundary.md +70 -0
  100. package/vendor/agent-frontend-shell/docs/rfcs/canonical-session-resolution.md +124 -0
  101. package/vendor/agent-frontend-shell/docs/rfcs/hermes-run-adapter-contract.md +1079 -0
  102. package/vendor/agent-frontend-shell/docs/rfcs/turn-journal.md +195 -0
  103. package/vendor/agent-frontend-shell/docs/rfcs/webui-run-state-consistency-contract.md +157 -0
  104. package/vendor/agent-frontend-shell/docs/supervisor.md +280 -0
  105. package/vendor/agent-frontend-shell/docs/troubleshooting.md +132 -0
  106. package/vendor/agent-frontend-shell/docs/ui-ux/index.html +863 -0
  107. package/vendor/agent-frontend-shell/docs/ui-ux/two-stage-proposal.html +768 -0
  108. package/vendor/agent-frontend-shell/docs/why-hermes.md +489 -0
  109. package/vendor/agent-frontend-shell/docs/workspace-git.md +92 -0
  110. package/vendor/agent-frontend-shell/docs/wsl-autostart.md +126 -0
  111. package/vendor/agent-frontend-shell/eslint.runtime-guard.config.mjs +35 -0
  112. package/vendor/agent-frontend-shell/extensions/bitseek-design-system.md +330 -0
  113. package/vendor/agent-frontend-shell/extensions/branding/assets/apple-touch-icon.png +0 -0
  114. package/vendor/agent-frontend-shell/extensions/branding/assets/empty-logo.svg +739 -0
  115. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-192.png +0 -0
  116. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-32.png +0 -0
  117. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-512.png +0 -0
  118. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon-512.svg +745 -0
  119. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon.ico +0 -0
  120. package/vendor/agent-frontend-shell/extensions/branding/assets/favicon.svg +745 -0
  121. package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon-v2.svg +751 -0
  122. package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon-v3.svg +739 -0
  123. package/vendor/agent-frontend-shell/extensions/branding/assets/titlebar-icon.svg +745 -0
  124. package/vendor/agent-frontend-shell/extensions/branding/branding.js +112 -0
  125. package/vendor/agent-frontend-shell/extensions/branding/config.json +14 -0
  126. package/vendor/agent-frontend-shell/extensions/branding/manifest.json +53 -0
  127. package/vendor/agent-frontend-shell/extensions/index.js +67 -0
  128. package/vendor/agent-frontend-shell/extensions/loader/hermes-loader.js +77 -0
  129. package/vendor/agent-frontend-shell/extensions/manifest.json +16 -0
  130. package/vendor/agent-frontend-shell/extensions/pages/ai-teammates/page.css +333 -0
  131. package/vendor/agent-frontend-shell/extensions/pages/ai-teammates/page.js +487 -0
  132. package/vendor/agent-frontend-shell/extensions/pages/manifest.json +6 -0
  133. package/vendor/agent-frontend-shell/extensions/pages/registry.css +56 -0
  134. package/vendor/agent-frontend-shell/extensions/pages/registry.js +302 -0
  135. package/vendor/agent-frontend-shell/extensions/themes/bitseek/index.css +93 -0
  136. package/vendor/agent-frontend-shell/extensions/themes/bitseek/index.js +98 -0
  137. package/vendor/agent-frontend-shell/install.sh +63 -0
  138. package/vendor/agent-frontend-shell/mcp_server.py +567 -0
  139. package/vendor/agent-frontend-shell/package.json +12 -0
  140. package/vendor/agent-frontend-shell/pyproject.toml +56 -0
  141. package/vendor/agent-frontend-shell/pytest.ini +3 -0
  142. package/vendor/agent-frontend-shell/requirements.txt +5 -0
  143. package/vendor/agent-frontend-shell/server.py +624 -0
  144. package/vendor/agent-frontend-shell/start.ps1 +210 -0
  145. package/vendor/agent-frontend-shell/start.sh +65 -0
  146. package/vendor/agent-frontend-shell/static/apple-touch-icon.png +0 -0
  147. package/vendor/agent-frontend-shell/static/boot.js +1990 -0
  148. package/vendor/agent-frontend-shell/static/commands.js +1402 -0
  149. package/vendor/agent-frontend-shell/static/favicon-192.png +0 -0
  150. package/vendor/agent-frontend-shell/static/favicon-32.png +0 -0
  151. package/vendor/agent-frontend-shell/static/favicon-512.png +0 -0
  152. package/vendor/agent-frontend-shell/static/favicon-512.svg +18 -0
  153. package/vendor/agent-frontend-shell/static/favicon.ico +0 -0
  154. package/vendor/agent-frontend-shell/static/favicon.svg +20 -0
  155. package/vendor/agent-frontend-shell/static/i18n.js +15389 -0
  156. package/vendor/agent-frontend-shell/static/icons.js +92 -0
  157. package/vendor/agent-frontend-shell/static/index.html +1506 -0
  158. package/vendor/agent-frontend-shell/static/login.js +177 -0
  159. package/vendor/agent-frontend-shell/static/manifest.json +53 -0
  160. package/vendor/agent-frontend-shell/static/messages.js +3521 -0
  161. package/vendor/agent-frontend-shell/static/onboarding.js +800 -0
  162. package/vendor/agent-frontend-shell/static/panels.js +7995 -0
  163. package/vendor/agent-frontend-shell/static/pwa-startup.js +83 -0
  164. package/vendor/agent-frontend-shell/static/sessions.js +5165 -0
  165. package/vendor/agent-frontend-shell/static/style.css +4774 -0
  166. package/vendor/agent-frontend-shell/static/sw.js +173 -0
  167. package/vendor/agent-frontend-shell/static/terminal.js +632 -0
  168. package/vendor/agent-frontend-shell/static/ui.js +8997 -0
  169. package/vendor/agent-frontend-shell/static/vendor/js-yaml/4.1.0/js-yaml.min.js +2 -0
  170. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.ttf +0 -0
  171. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.woff +0 -0
  172. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  173. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  174. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  175. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  176. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  177. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  178. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  179. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  180. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  181. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  182. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  183. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  184. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  185. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.ttf +0 -0
  186. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.woff +0 -0
  187. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Bold.woff2 +0 -0
  188. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  189. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  190. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  191. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.ttf +0 -0
  192. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.woff +0 -0
  193. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Italic.woff2 +0 -0
  194. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.ttf +0 -0
  195. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.woff +0 -0
  196. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Main-Regular.woff2 +0 -0
  197. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  198. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  199. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  200. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.ttf +0 -0
  201. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.woff +0 -0
  202. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Math-Italic.woff2 +0 -0
  203. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  204. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  205. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  206. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  207. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  208. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  209. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  210. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  211. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  212. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.ttf +0 -0
  213. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.woff +0 -0
  214. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Script-Regular.woff2 +0 -0
  215. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.ttf +0 -0
  216. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.woff +0 -0
  217. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  218. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.ttf +0 -0
  219. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.woff +0 -0
  220. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  221. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.ttf +0 -0
  222. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.woff +0 -0
  223. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  224. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.ttf +0 -0
  225. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.woff +0 -0
  226. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  227. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  228. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  229. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  230. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/katex.min.css +1 -0
  231. package/vendor/agent-frontend-shell/static/vendor/katex/0.16.22/katex.min.js +1 -0
  232. package/vendor/agent-frontend-shell/static/vendor/smd.min.js +29 -0
  233. package/vendor/agent-frontend-shell/static/workspace.js +680 -0
@@ -0,0 +1,489 @@
1
+ # Why Hermes
2
+
3
+ Hermes is a persistent, autonomous AI agent that runs on your server. It has layered memory that
4
+ accumulates across sessions, a cron scheduler that fires jobs while you're offline, and a
5
+ self-improving skills system that saves reusable procedures automatically. You reach it from a
6
+ terminal, a browser, or a messaging app — and it's the same agent with the same history every time.
7
+
8
+ This document explains the mental model, how Hermes compares to other tools honestly, and where
9
+ it is and is not the right choice.
10
+
11
+ ---
12
+
13
+ ## The real problem: most tools are excellent in the moment and weak over time
14
+
15
+ Memory is no longer a differentiator on its own. ChatGPT, Claude, Cursor, and GitHub Copilot all
16
+ have some form of memory now. Anthropic, OpenAI, and Microsoft are all shipping scheduling and
17
+ agent features. The category boundaries that existed twelve months ago are blurring fast.
18
+
19
+ Hermes is not the only tool with memory or automation. It is the tool that makes those
20
+ capabilities durable, self-hosted, cross-surface, and cumulative on your own server. The
21
+ distinction that matters is not "has memory" vs. "has no memory" — it's whether context persists
22
+ across sessions automatically, whether execution happens on hardware you control, whether you can
23
+ reach the same agent identity from any device, and whether the system gets meaningfully better at
24
+ your specific workflow over time without manual configuration.
25
+
26
+ ```
27
+ Session-scoped: You -> [Tool] -> Answer -> Done
28
+ (some tools now carry memory, but the execution is stateless)
29
+
30
+ Persistent agent: You <-> [Hermes] <-> (memory, skills, schedule, tools, surfaces)
31
+ (runs on your server, accumulates context, acts on your behalf offline)
32
+ ```
33
+
34
+ ---
35
+
36
+ ## A note on convergence
37
+
38
+ The market is converging. Chat assistants are adding task scheduling and file connectors. IDE
39
+ tools are launching cloud agent modes. CLI tools are adding skills systems and mobile surfaces.
40
+ The lines between "assistant," "editor," and "agent" are dissolving.
41
+
42
+ This makes comparisons harder but also makes the question sharper: what actually matters when
43
+ every tool is claiming some version of every feature? For Hermes, the answer is synthesis. Any
44
+ single feature — memory, scheduling, messaging — is available somewhere else. The value is
45
+ having all of them in one self-hosted system, running continuously, with a persistent identity
46
+ that accumulates real knowledge of your stack over time.
47
+
48
+ ---
49
+
50
+ ## The three pillars
51
+
52
+ ### 1. Memory that compounds
53
+
54
+ Hermes has layered memory that survives every session, every reboot, and every model swap:
55
+
56
+ - User profile — who you are, your preferences, your communication style, things you've corrected Hermes on
57
+ - Agent memory — facts about your environment, your toolchain, your project conventions
58
+ - Skills — reusable procedures Hermes discovers and saves automatically; it never has to relearn how to deploy your app, run your tests, or review a PR
59
+ - Session history — every past conversation is searchable; Hermes can recall what you worked on last Tuesday
60
+
61
+ When you correct Hermes, it remembers. When it solves a tricky problem, it saves the approach.
62
+ When it learns your stack, that knowledge carries into every future session. You never configure
63
+ this manually — it happens in the background as a side effect of normal use.
64
+
65
+ ### 2. Autonomous scheduling
66
+
67
+ Hermes can run jobs without you present — every hour, every morning, on any cron schedule. It
68
+ fires up a fresh session with full access to your memory and skills, runs the task, and delivers
69
+ the result wherever you want it: Telegram, Discord, Slack, Signal, WhatsApp, SMS, email, and more.
70
+
71
+ Things Hermes can do while you sleep:
72
+
73
+ - Review new pull requests on your GitHub repo and post a full verdict comment
74
+ - Send a morning briefing of news, markets, or anything else you track
75
+ - Run your test suite and alert you if something breaks
76
+ - Watch a competitor's blog for new posts and summarize them
77
+ - Monitor a datasource and notify you when a threshold is crossed
78
+
79
+ The difference from cloud-scheduled alternatives is that the job runs on your server, with your
80
+ memory and skills, and your data never leaves your hardware.
81
+
82
+ ### 3. Reach it from anywhere
83
+
84
+ Hermes runs on your server and is reachable from every surface: terminal over SSH, the web UI
85
+ (this project), and messaging apps including Telegram, Discord, Slack, WhatsApp, Signal, and
86
+ Matrix. Start a task from your phone, check it from the browser on your laptop, continue it in
87
+ a terminal on a remote server. The same agent, memory, and history follow you across all of them.
88
+
89
+ ---
90
+
91
+ ## How AI tools are layered today
92
+
93
+ The old four-category model — chat, editor, CLI, agent — is too clean. These layers are actively
94
+ collapsing into each other. Here is a more honest picture:
95
+
96
+ Chat assistants (Claude.ai, ChatGPT) now have persistent memory, task scheduling, 50+ service
97
+ connectors, and in some cases full agent modes with computer use. They are no longer "just chat."
98
+
99
+ IDE tools (Cursor, Windsurf, Copilot) have shipped or are shipping cross-session memory,
100
+ cloud-based background agents, and in Cursor's case a full Automations platform with Slack
101
+ integration. Cursor v3.0 (April 2026) is explicitly agent-first.
102
+
103
+ CLI tools (Claude Code, Codex, OpenCode) have added hooks, skills, desktop app automations,
104
+ and multi-surface reach. Claude Code now spans terminal, IDE, desktop, and browser. Codex has
105
+ become a product family: CLI, IDE extension, desktop app, and Codex Cloud.
106
+
107
+ Persistent self-hosted agents (Hermes, OpenClaw) sit at the intersection: they combine the
108
+ tool-use power of CLI agents, the memory of chat assistants, the scheduling of automation
109
+ platforms, and the cross-surface reach of messaging integrations — running continuously on
110
+ hardware you own.
111
+
112
+ The question is not which category a tool belongs to. The question is which combination of
113
+ capabilities you actually need, where that execution lives, and whether the system gets better
114
+ at your specific context over time.
115
+
116
+ ---
117
+
118
+ ## How Hermes compares
119
+
120
+ ### vs. OpenClaw
121
+
122
+ OpenClaw is the most direct comparison and the question most people ask first. Both are
123
+ open-source, self-hosted, always-on agents with persistent memory, cron scheduling, and messaging
124
+ app integration. If you're evaluating Hermes, evaluate OpenClaw too.
125
+
126
+ OpenClaw (MIT) is built around a Gateway control plane written in Node.js/TypeScript. It has the
127
+ widest messaging coverage in the space — 24+ channels including WhatsApp, Telegram, Signal,
128
+ iMessage, LINE, WeChat, Slack, Discord, Teams, Matrix, Google Chat, Feishu, Mattermost, IRC,
129
+ Nextcloud Talk, and more. It has native Chrome/Chromium control via CDP, voice wake words on
130
+ macOS and iOS, and a ClawHub marketplace with 10,700+ skills. The community is large (350k+
131
+ GitHub stars, 16,900+ commits) and growing.
132
+
133
+ Hermes is built in Python and centers on a self-improving agent loop rather than a gateway
134
+ control plane. The core architectural difference is in skills: OpenClaw skills are primarily
135
+ human-authored plugins installed from a marketplace. Hermes writes and saves its own skills
136
+ automatically as part of every session. When Hermes solves a problem a new way, it saves the
137
+ procedure and reuses it without any user effort. That's not a subtle distinction — it's the
138
+ reason Hermes gets meaningfully better at your workflow without you maintaining a plugin library.
139
+
140
+ Two practical differences worth knowing directly:
141
+
142
+ Stability. OpenClaw's GitHub issues and community forums document recurring update-breaking
143
+ regressions. Telegram integration was broken across multiple releases from early 2026 through
144
+ at least April 2026. The unofficial WhatsApp Web protocol OpenClaw relies on disconnects and
145
+ requires periodic re-pairing — this is in OpenClaw's own FAQ.
146
+
147
+ Security. ClawHub's open publishing model has been exploited at scale. Three separate audits in
148
+ early 2026 found serious problems: Koi Security (January 2026) linked 335 skills to a campaign
149
+ called "ClawHavoc" that delivered Atomic Stealer malware on macOS; Bitdefender found roughly
150
+ 900 malicious packages representing about 20% of the ecosystem at the time; Snyk's "ToxicSkills"
151
+ report (February 2026) found malicious skills across roughly 4,000 scanned packages. China's
152
+ CNCERT issued a national warning about ClawHub. Hermes has no third-party marketplace and a
153
+ correspondingly smaller attack surface.
154
+
155
+ OpenClaw's genuine strengths are worth stating plainly: broader messaging coverage (iMessage,
156
+ LINE, WeChat, Teams, Google Chat — platforms Hermes does not support), native browser and
157
+ computer control via Chrome CDP, voice wake words, a larger community, and more third-party
158
+ integrations than Hermes. If those capabilities matter most, OpenClaw is worth a serious look.
159
+
160
+ Where Hermes fits better: you want an agent that self-improves from experience without managing
161
+ a plugin library, you work in Python and want the ML/data science ecosystem, you want a stable
162
+ deployment that doesn't break between updates, or you want a full web chat UI rather than a
163
+ control dashboard.
164
+
165
+ | | OpenClaw | Hermes |
166
+ |---|---|---|
167
+ | Persistent memory | Yes | Yes |
168
+ | Scheduled jobs (cron) | Yes | Yes |
169
+ | Messaging app access | Yes (24+ platforms, incl. iMessage/WeChat/LINE) | Yes (many platforms) |
170
+ | Web UI | Chat UI + control dashboard | Full three-panel chat UI |
171
+ | Self-hosted | Yes | Yes |
172
+ | Open source | Yes (MIT) | Yes |
173
+ | Self-improving skills | Partial (AI can generate; not the default loop) | Yes (automatic, first-class) |
174
+ | Browser / computer control | Yes (native Chrome CDP) | Via shell / tools |
175
+ | Voice wake words | Yes (macOS/iOS) | No |
176
+ | Python / ML ecosystem | No (Node.js) | Yes |
177
+ | Orchestrates Claude Code / Codex | No | Yes |
178
+ | Multi-profile support | Via binding-rule routing | Yes (first-class named profiles) |
179
+ | Provider-agnostic | Yes | Yes |
180
+ | Update reliability | Moderate (documented regressions) | High |
181
+ | Memory inspectability | Limited | Yes (markdown files, editable) |
182
+ | Self-hosted autonomous execution | Yes | Yes |
183
+
184
+ ### vs. Claude Code (Anthropic)
185
+
186
+ Claude Code is Anthropic's official agentic tool and one of the strongest options for focused
187
+ coding sessions. It has deep code understanding, shell access, file editing, and multi-step
188
+ reasoning. It has been expanding rapidly — it now spans terminal, IDE plugin, desktop app, and
189
+ browser surfaces — and the gap is closing in several areas.
190
+
191
+ What Claude Code has that's worth knowing:
192
+
193
+ - Hooks system — 26 event types (SessionStart, PreToolUse, PostToolUse, Stop, and more) with
194
+ 4 handler types (shell command, HTTP endpoint, LLM prompt, sub-agent); gives deterministic
195
+ non-LLM control over the agent lifecycle
196
+ - Plugins / Skills — installable via `/plugin install`, hot-reloaded from `~/.claude/skills`,
197
+ with a marketplace; includes the official ralph-wiggum plugin (`/ralph-loop`) for
198
+ autonomous iteration toward a completion goal (distinct from `/loop`)
199
+ - `/loop` — a native bundled skill, available in every session without any plugin, that runs
200
+ a prompt on a repeating schedule within an active CLI session (polling/monitoring use case);
201
+ session-scoped, dies when the terminal closes
202
+ - Scheduling — cloud-managed cron (Anthropic infrastructure, minimum 1-hour interval) and
203
+ desktop app scheduled tasks (run locally while the app is open, minimum 1-minute interval,
204
+ full local file access); no self-hosted cron
205
+ - Messaging channels — Telegram, Discord, and iMessage via the Channels feature (research
206
+ preview, requires Bun runtime); Slack is the most-requested addition and has not yet shipped
207
+ - Memory — CLAUDE.md and MEMORY.md for project-level context; auto-memory since v2.1.59+
208
+ - Claude Cowork — a separate knowledge-worker product connecting 38+ services via MCP
209
+ including Gmail, Microsoft Teams, Notion, Jira, Salesforce, and more
210
+
211
+ Claude Code's source was briefly and accidentally made public in March 2026 before being taken
212
+ down. The CLI ships as minified/bundled TypeScript compiled with Bun — it is not open source.
213
+
214
+ Key differences that remain:
215
+
216
+ - Scheduling requires cloud (Anthropic infrastructure, data off your hardware, 1-hour minimum)
217
+ or the desktop app (runs locally, but the app must stay open — not a headless server process);
218
+ neither runs as a server daemon the way Hermes cron does
219
+ - Memory is project-file-based (CLAUDE.md / MEMORY.md plus rolling auto-memory); it doesn't
220
+ automatically accumulate a cross-project knowledge graph the way Hermes does
221
+ - Not provider-agnostic — routes through Anthropic, Bedrock, Vertex, or Foundry, but always
222
+ a Claude model; you can't switch to GPT, Gemini, or a local model
223
+ - Messaging channels are still a research preview, not production
224
+
225
+ Hermes can use Claude Code as a sub-agent. For large implementation tasks, Hermes can spawn
226
+ Claude Code to handle the heavy lifting and fold the result back into its own memory and history.
227
+
228
+ | | Claude Code | Hermes |
229
+ |---|---|---|
230
+ | Persistent memory (automatic) | Partial (CLAUDE.md / MEMORY.md + auto-memory v2.1.59+) | Yes |
231
+ | Skills / hooks system | Yes (26-event Hooks + Plugin/Skills marketplace) | Yes (auto-generated from experience) |
232
+ | Scheduled jobs (self-hosted) | No (cloud or desktop-app only) | Yes |
233
+ | Messaging access | Partial (Telegram/Discord/iMessage research preview; Slack not yet) | Yes (many platforms, production) |
234
+ | Cowork connectors (Slack, Gmail, etc.) | Yes (via Claude Cowork, separate product) | Via agent tool use |
235
+ | Web UI | Yes (claude.ai/code, Anthropic-hosted) | Yes (self-hosted) |
236
+ | Provider-agnostic | No (Claude models only) | Yes (any provider) |
237
+ | Self-hosted scheduling | No | Yes |
238
+ | Open source | No | Yes |
239
+ | Background/cloud agent mode | Yes (cloud-scheduled) | Yes (self-hosted cron) |
240
+ | Runs as sub-agent of Hermes | Yes | N/A |
241
+ | Memory inspectability | Partial (CLAUDE.md readable; auto-memory less so) | Yes (markdown files) |
242
+
243
+ ### vs. Codex CLI (OpenAI)
244
+
245
+ Codex CLI (Apache 2.0, ~60k GitHub stars) started as a straightforward terminal tool and has
246
+ expanded into a product family. It was rewritten from TypeScript to Rust. It now includes an IDE
247
+ extension, a desktop app with an Automations feature, and Codex Cloud for remote execution. A
248
+ Skills system is shared across surfaces. It supports 12+ built-in providers: OpenAI, Anthropic,
249
+ Google/Gemini, Mistral, Groq, Ollama, OpenRouter, LM Studio, Together AI, DeepSeek, xAI,
250
+ Azure OpenAI, and custom endpoints.
251
+
252
+ The CLI itself has no native scheduling (open feature request). Session continuity is available
253
+ via `codex resume`. Memory is session-history-based plus AGENTS.md project context — not a
254
+ living knowledge graph that accumulates across all your projects. No first-party messaging
255
+ integration. The Automations feature in the desktop app covers scheduled local tasks but doesn't
256
+ reach the cross-session, cross-surface continuity Hermes has.
257
+
258
+ | | Codex CLI | Hermes |
259
+ |---|---|---|
260
+ | Persistent memory | Partial (session history + AGENTS.md) | Yes (automatic, layered) |
261
+ | Scheduled jobs | Partial (desktop app Automations; CLI has none) | Yes |
262
+ | Messaging app access | No | Yes |
263
+ | Web UI | No (CLI + desktop app) | Yes (self-hosted) |
264
+ | Provider-agnostic | Yes (12+ providers) | Yes |
265
+ | Self-hosted | Yes | Yes |
266
+ | Open source | Yes (Apache 2.0) | Yes |
267
+ | Background/cloud agent mode | Yes (Codex Cloud) | Yes (self-hosted cron) |
268
+ | Self-improving skills | No | Yes |
269
+
270
+ ### vs. OpenCode
271
+
272
+ OpenCode is an open-source TUI agentic coding assistant supporting 75+ providers. It has a WebUI
273
+ embedded in its binary, an official desktop app, SQLite session history, and AGENTS.md project
274
+ context. It supports CLAUDE.md as a fallback for users migrating from Claude Code. There are 30+
275
+ community plugins, and community messaging integrations exist for Telegram, Slack, Discord, and
276
+ Microsoft Teams — though none are first-party and all require manual setup.
277
+
278
+ OpenCode Go ($10/month) and OpenCode Zen (curated model service) are subscription tiers. The
279
+ GitHub Copilot official integration launched January 2026. There is no native scheduling; a
280
+ community background plugin exists. No automatic cross-session semantic memory.
281
+
282
+ | | OpenCode | Hermes |
283
+ |---|---|---|
284
+ | Persistent memory | Partial (session history + AGENTS.md) | Yes (automatic, layered) |
285
+ | Scheduled jobs | No (community plugin only) | Yes |
286
+ | Messaging app access | Community integrations only (Telegram/Slack/Discord/Teams) | Yes (first-party, many platforms) |
287
+ | Web UI | Yes (embedded + desktop app) | Yes (self-hosted) |
288
+ | Mobile access | No | Yes |
289
+ | Skills / plugins | Yes (30+ community plugins) | Yes (auto-generated, first-party) |
290
+ | Provider-agnostic | Yes (75+ providers) | Yes |
291
+ | Open source | Yes | Yes |
292
+ | Self-hosted autonomous execution | No | Yes |
293
+
294
+ ### vs. Cursor
295
+
296
+ Cursor has changed substantially. The "no memory, no scheduling, no messaging" description was
297
+ accurate in 2024 and is wrong now.
298
+
299
+ Memories (per-project cross-session knowledge base) shipped in beta with v1.0 in June 2025.
300
+ Automations launched March 5, 2026 — time-based, event-based (GitHub/Linear/PagerDuty), and
301
+ communication-based (Slack) triggers that fire background agents on cloud VMs. The web app,
302
+ mobile agent, and Slack bot give it multi-surface reach. Cursor v3.0 (April 2, 2026) is
303
+ explicitly agent-first with Design Mode and 30+ marketplace plugins. Cursor acquired Supermaven
304
+ for autocomplete. As of early 2026 it's valued at $29.3B with $2B ARR. It is not a narrow editor
305
+ tool anymore.
306
+
307
+ Hermes still has a different profile: it's self-hosted and server-resident, the same persistent
308
+ identity follows you across every surface without cloud intermediation, and it works with any
309
+ model family rather than being cloud-VM-based. For workflows that require data sovereignty,
310
+ self-hosted scheduling, or deep Python/ML tooling on your own hardware, Cursor's cloud-agent
311
+ architecture is a fundamental mismatch. For teams that want editor-native agents with strong
312
+ IDE integration, Cursor's recent evolution is significant.
313
+
314
+ | | Cursor | Windsurf | Copilot | Hermes |
315
+ |---|---|---|---|---|
316
+ | In-editor autocomplete | Excellent (Supermaven) | Excellent (Cascade) | Excellent | No |
317
+ | Inline diff / refactor | Yes | Yes | Yes | Via shell |
318
+ | Cross-session memory | Yes (Memories, per-project) | Yes (Cascade Memories, workspace) | Yes (Agentic Memory, repo-scoped, 28-day expiry) | Yes (automatic, persistent) |
319
+ | Scheduled background jobs | Yes (Automations, cloud VM) | No | Via Coding Agent (issue-driven) | Yes (self-hosted cron) |
320
+ | Messaging app / multi-surface | Yes (Slack bot, web app, mobile) | No | Via Copilot CLI / fleet | Yes (many platforms) |
321
+ | Background/cloud agent mode | Yes (Automations on cloud VMs) | No | Yes (Coding Agent, GA Mar 2026) | Yes (self-hosted) |
322
+ | Terminal tool use | Limited | Limited | Limited | Full |
323
+ | Self-hosted | No | No | No | Yes |
324
+ | Self-hosted autonomous execution | No | No | No | Yes |
325
+ | Provider-agnostic | Partial | Partial | No (GitHub models) | Yes |
326
+ | Open source | No | No | No | Yes |
327
+ | Memory inspectability | Partial | Yes (stored locally) | Limited | Yes (markdown files) |
328
+
329
+ ### vs. Claude.ai and ChatGPT
330
+
331
+ These are no longer simple chat tools. The description of "no memory, no scheduling, no
332
+ messaging" is inaccurate for both.
333
+
334
+ Claude Cowork (in Claude Desktop) launched scheduled tasks on February 25, 2026 — hourly,
335
+ daily, weekly, weekdays, and on-demand. It runs in an isolated VM with file and shell access.
336
+ Claude has 50+ service connectors as of February 2026 including Slack (launched January 26,
337
+ 2026), Gmail, Google Calendar, Google Drive, Microsoft 365, Notion, Asana, Linear, and Jira.
338
+ Memory auto-generates from chat history, not just user-curated entries. Code execution and
339
+ file access in Artifacts is sandboxed, not the same as shell access on your own server.
340
+
341
+ ChatGPT has Agent Mode (launched July 17, 2025), Scheduled Tasks (January 2025, recurring
342
+ automated prompts), a computer-using agent, Projects, 50+ connectors including Gmail, GitHub,
343
+ and Google Drive, dual-mode memory (auto + manual), and ChatGPT Pulse for Pro users (daily
344
+ research briefings). It is not a passive Q&A interface.
345
+
346
+ Where Claude.ai and ChatGPT differ from Hermes: neither is self-hosted, neither is
347
+ provider-agnostic, and neither gives you execution on your own hardware. Connectors and
348
+ scheduling exist, but they run on Anthropic's or OpenAI's infrastructure. Your memory, session
349
+ history, and agent execution live on their servers, not yours. For many use cases that's fine
350
+ — they are capable and well-supported. For privacy-conscious users, regulated environments, or
351
+ workflows that require persistent server-side execution on controlled hardware, it's a
352
+ disqualifying constraint.
353
+
354
+ | | Claude.ai | ChatGPT | Hermes |
355
+ |---|---|---|---|
356
+ | Memory across conversations | Yes (auto-generated from history) | Yes (dual-mode: auto + manual) | Yes (deep, automatic) |
357
+ | Scheduled tasks | Yes (Cowork: hourly/daily/weekly) | Yes (since Jan 2025) | Yes (any cron, self-hosted) |
358
+ | Service connectors / messaging | Yes (50+ via Cowork) | Yes (50+ connectors) | Yes (many platforms, direct) |
359
+ | Runs shell commands | Sandboxed (Cowork VM) | Sandboxed | Yes (full shell) |
360
+ | Code execution | Sandboxed | Sandboxed | Yes (full shell) |
361
+ | Reads / writes files | Sandboxed | Sandboxed | Yes (full filesystem) |
362
+ | Web UI | Yes (Anthropic-hosted) | Yes (OpenAI-hosted) | Yes (self-hosted) |
363
+ | Self-hosted | No | No | Yes |
364
+ | Provider-agnostic | No | No | Yes |
365
+ | Open source | No | No | Yes |
366
+ | Self-hosted autonomous execution | No | No | Yes |
367
+ | Memory inspectability | Limited | Limited | Yes (markdown files) |
368
+
369
+ ---
370
+
371
+ ## The compounding advantage
372
+
373
+ What distinguishes Hermes from most of the tools above is that it gets meaningfully better at
374
+ your specific workflow over time without manual configuration.
375
+
376
+ Every time Hermes encounters a new environment, it saves facts to memory. Every time it solves
377
+ a problem a new way, it saves the approach as a skill. Every time you correct it, it updates its
378
+ profile of you. Every session, every scheduled job, every tool call adds to a body of knowledge
379
+ that is specific to you, stored on your hardware, and available to every future interaction.
380
+
381
+ A Claude Code session on day one and day one hundred are identical — it starts fresh. A Hermes
382
+ agent on day one and day one hundred knows your stack, your conventions, your preferences, and
383
+ the solutions that have worked before. That's the actual compounding.
384
+
385
+ ---
386
+
387
+ ## Who Hermes is for
388
+
389
+ Solo developers and power users who don't want to re-explain their stack every session and want
390
+ an AI that actually knows their environment.
391
+
392
+ Teams on a shared server where multiple people want capable AI access without each paying for
393
+ a separate subscription or running separate local tooling.
394
+
395
+ Automation-heavy workflows where you want an AI running tasks on a schedule, delivering results
396
+ to your phone, without babysitting it.
397
+
398
+ Privacy-conscious users who want their conversations, memory, and files on their own hardware.
399
+
400
+ Multi-model users who want to switch between OpenAI, Anthropic, Google, DeepSeek, and others
401
+ based on cost, capability, or rate limits, without rebuilding their workflow each time.
402
+
403
+ ---
404
+
405
+ ## What Hermes is not
406
+
407
+ Hermes is not the best in-editor autocomplete tool. Cursor and Windsurf do that job better.
408
+ Use one alongside Hermes.
409
+
410
+ It is not zero-setup. You are running a server. That means initial configuration, and it means
411
+ you're responsible for uptime, upgrades, and backups. The tradeoff is data sovereignty and
412
+ control; that only makes sense if you actually want it.
413
+
414
+ It does not make weaker models magical. Memory and skills help, but the underlying model still
415
+ determines reasoning quality. Hermes with a weak model is a well-organized weak model.
416
+
417
+ It still needs guardrails, approvals, and observability for high-stakes automations. Autonomous
418
+ execution on a schedule with shell access is powerful and requires judgment about what to
419
+ approve. Terminal commands can require confirmation before running; use that for anything
420
+ consequential.
421
+
422
+ If you need the absolute lowest-friction path to a one-off answer or a quick edit, a chat
423
+ interface or an in-editor tool is the right call. Hermes is for continuity and autonomy, not
424
+ minimum-friction one-shots.
425
+
426
+ ---
427
+
428
+ ## Scope and limits
429
+
430
+ Hermes lives in the terminal, browser, and messaging apps. For in-editor autocomplete and inline
431
+ diffs, use Cursor or Windsurf — they do that job better and work well alongside Hermes.
432
+
433
+ You run Hermes on your own server. That means initial setup, but your data stays on your
434
+ hardware and you control the schedule, the models, and the costs.
435
+
436
+ Hermes is an orchestration and memory layer. It makes whatever model you point at it more useful
437
+ over time. The models do the reasoning; Hermes makes sure that reasoning accumulates into
438
+ something durable.
439
+
440
+ ---
441
+
442
+ ## Security and control
443
+
444
+ Memory is stored locally on your server as readable, editable files: user profile, agent memory,
445
+ and skills are all markdown. Session history is in SQLite on your machine. You can inspect,
446
+ edit, or delete any of it directly.
447
+
448
+ If you want external memory providers, eight are supported: Mem0, Honcho, Hindsight, RetainDB,
449
+ ByteRover, Supermemory, Holographic, and others. These are optional and configurable.
450
+
451
+ Execution runs in configurable backends: local shell, Docker, SSH, Daytona, Singularity, or
452
+ Modal. You choose what execution environment Hermes operates in and what it can reach.
453
+
454
+ Terminal commands can require confirmation before running. For any automation that touches
455
+ production systems or makes external calls, enable approval controls.
456
+
457
+ Secrets stay on your hardware. Hermes does not phone home; it calls whatever model APIs you
458
+ configure directly.
459
+
460
+ Multiple profiles give isolation between users or projects. A shared server can have separate
461
+ profiles with separate memory, separate skills, and separate history.
462
+
463
+ ---
464
+
465
+ ## Quick reference
466
+
467
+ | | OpenClaw | Claude Code | Codex | OpenCode | Cursor | Copilot | Claude.ai | ChatGPT | Hermes |
468
+ |---|---|---|---|---|---|---|---|---|---|
469
+ | Persistent memory (auto) | Yes | Partial† | Partial | Partial | Yes (per-project) | Yes (repo-scoped‡) | Yes | Yes | Yes |
470
+ | Scheduled / background jobs | Yes | Partial§ | Partial¶ | No | Yes (Automations) | Via Coding Agent | Yes (Cowork) | Yes | Yes (self-hosted) |
471
+ | Messaging / multi-surface | Yes (24+ platforms) | Partial (preview) | No | Community only | Yes (Slack/web/mobile) | Via CLI/fleet | Yes (50+ connectors) | Yes (50+ connectors) | Yes (many platforms) |
472
+ | Web UI | Chat UI + control dashboard | Anthropic-hosted | No | Yes | Yes + mobile | github.com | Yes (Claude Desktop) | Yes | Yes (self-hosted) |
473
+ | Skills system | Yes (ClawHub marketplace) | Yes (Hooks + Plugins) | Partial (Skills) | Community plugins | Yes (marketplace) | No | No | No | Yes (auto-generated) |
474
+ | Self-improving skills | Partial | No | No | No | No | No | No | No | Yes |
475
+ | Browser / computer control | Yes (Chrome CDP) | No | No | No | No | No | No | Yes (CUA) | Via shell |
476
+ | In-editor autocomplete | No | No | Via extension | No | Excellent | Excellent | No | No | No |
477
+ | Orchestrates other agents | No | No | No | No | No | No | No | No | Yes |
478
+ | Provider-agnostic | Yes | No (Claude only) | Yes | Yes | Partial | No | No | No | Yes |
479
+ | Self-hosted | Yes | No | Yes (CLI) | Yes | No | No | No | No | Yes |
480
+ | Self-hosted autonomous execution | Yes | No | No | No | No | No | No | No | Yes |
481
+ | Background/cloud agent mode | Yes | Yes (cloud) | Yes (Codex Cloud) | No | Yes (cloud VMs) | Yes (Coding Agent) | Yes (Cowork VM) | Yes (Agent Mode) | Yes (self-hosted) |
482
+ | Memory inspectability | Limited | Partial | Partial | Partial | Partial | Limited | Limited | Limited | Yes (markdown files) |
483
+ | Open source | Yes (MIT) | No | Yes (Apache 2.0) | Yes | No | No | No | No | Yes |
484
+ | Always-on autonomous execution | Yes | No | No | No | No | No | No | No | Yes |
485
+
486
+ † Claude Code: CLAUDE.md / MEMORY.md project context plus auto-memory since v2.1.59+; no automatic cross-project accumulation
487
+ ‡ Copilot Agentic Memory: public preview Jan 15, 2026; enabled by default Mar 4, 2026; repo-scoped, auto-expires after 28 days
488
+ § Claude Code scheduling: cloud-managed (Anthropic infrastructure) or desktop-app only; no self-hosted cron
489
+ ¶ Codex scheduling: desktop app Automations only; CLI has no native scheduling
@@ -0,0 +1,92 @@
1
+ # Workspace Git controls
2
+
3
+ Workspace Git controls let the browser inspect Git state for the active session workspace. By default,
4
+ WebUI can read status, list branches, show diffs, fetch remote refs, and generate commit-message
5
+ suggestions. Actions that modify the repository, index, or worktree are disabled unless the WebUI
6
+ process is started with `HERMES_WEBUI_WORKSPACE_GIT_DESTRUCTIVE=1`.
7
+
8
+ > **Trust model - read this first.** Once mutating Git actions are enabled, a browser action can run
9
+ > Git commands inside a mounted workspace. Some Git commands can also run repository hook code from
10
+ > `.git/hooks/` or a configured `core.hooksPath`. That hook code runs as the WebUI process user, with
11
+ > the WebUI process permissions and environment. Treat hooks that download or execute code as code
12
+ > execution by the WebUI process user.
13
+
14
+ ## What works by default
15
+
16
+ Without `HERMES_WEBUI_WORKSPACE_GIT_DESTRUCTIVE=1`, WebUI can:
17
+
18
+ - show repository status
19
+ - list branches
20
+ - show file diffs
21
+ - fetch from the configured remote
22
+ - generate commit-message suggestions
23
+
24
+ Fetch may update remote-tracking refs, but it does not change the worktree, merge branches, create
25
+ commits, or push changes.
26
+
27
+ Commit-message generation may send staged or selected diff context to the configured model provider.
28
+ The UI labels this before generation.
29
+
30
+ Diffs for untracked files are size checked before WebUI reads file contents. Large or binary files
31
+ return metadata instead of inline diff text.
32
+
33
+ ## What requires explicit enablement
34
+
35
+ These actions are blocked unless `HERMES_WEBUI_WORKSPACE_GIT_DESTRUCTIVE=1` is set:
36
+
37
+ - stage and unstage
38
+ - discard changes
39
+ - commit and selected-file commit
40
+ - pull and push
41
+ - checkout
42
+ - branch switching that parks and restores local changes
43
+
44
+ Leave the flag unset for deployments where WebUI should only inspect mounted workspaces. Set it only
45
+ when browser users are trusted to modify those repositories from WebUI.
46
+
47
+ When the flag is enabled, branch switching parks and restores local changes automatically. If the
48
+ branch being left has local changes, WebUI parks those changes in a WebUI-owned Git stash, switches
49
+ branches, and then restores any WebUI-owned stash for the branch being entered. If Git cannot restore
50
+ the stash cleanly, WebUI leaves the stash in place and reports the restore failure instead of dropping
51
+ it.
52
+
53
+ ## Workspace and path scope
54
+
55
+ The browser does not send an arbitrary repository path. Git requests carry a session id and, when
56
+ needed, workspace-relative file paths. The server resolves the session workspace, checks each path
57
+ against that workspace, and then builds Git pathspecs from the checked paths.
58
+
59
+ Git commands run through `subprocess.run` with `shell=False`. Local status and diff commands use a 5
60
+ second timeout. Remote operations such as fetch, pull, and push use a 60 second timeout.
61
+
62
+ Before any Git subprocess starts, WebUI removes inherited `GIT_DIR`, `GIT_WORK_TREE`,
63
+ `GIT_CONFIG_GLOBAL`, `GIT_CONFIG_SYSTEM`, `GIT_CONFIG_COUNT`, `GIT_CONFIG_PARAMETERS`, and injected
64
+ `GIT_CONFIG_KEY_*` / `GIT_CONFIG_VALUE_*` values from the environment. Those variables can redirect
65
+ Git to a different repository or inject config, so WebUI does not trust them from the parent process.
66
+
67
+ `GIT_INDEX_FILE` is the intentional exception. Selected-file commits use a temporary index so WebUI
68
+ can commit only the requested files, then remove the temporary index afterward.
69
+
70
+ ## Coordination with active runs
71
+
72
+ Mutating Git actions are rejected while the same session has a live stream. The API returns
73
+ `active_stream` instead of racing a running agent that may be writing files in the same workspace.
74
+
75
+ Mutating Git actions also take a per-repository lock. If another Git mutation is already running for
76
+ that repository, the API returns `operation_in_progress`.
77
+
78
+ ## Hook and remote behavior
79
+
80
+ WebUI does not bypass Git hooks. Hook code may come from `.git/hooks/` or from a configured
81
+ `core.hooksPath`.
82
+
83
+ Commit actions run normal commit hooks such as `pre-commit`, `commit-msg`, and `post-commit`. Push can
84
+ run `pre-push`. Pull uses `--ff-only`, so it does not create a merge commit, but it is still a Git
85
+ operation running under the WebUI process.
86
+
87
+ Push keeps Git's normal non-fast-forward protection and reports non-fast-forward rejection separately
88
+ from general Git failures.
89
+
90
+ If a hook fails, the API returns a structured Git error instead of hiding the failure. Other classified
91
+ failures include authentication errors, missing upstream branches, conflicts, dirty worktrees, invalid
92
+ refs, missing Git binaries, and timeouts.