@symerian/symi 3.0.20 → 3.0.22

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 (737) hide show
  1. package/dist/{audio-preflight-BaCdNfrk.js → audio-preflight-D7BVT-ls.js} +4 -4
  2. package/dist/build-info.json +3 -3
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/{chrome-UfmVM0xR.js → chrome-B5CO2vB5.js} +7 -7
  5. package/dist/{deliver-BqXdac6W.js → deliver-CrwjsDwv.js} +1 -1
  6. package/dist/extensionAPI.js +7 -7
  7. package/dist/{image-DIWsXYcW.js → image-Csu7WcLW.js} +1 -1
  8. package/dist/{manager-DW3SxcPr.js → manager-BkkVjTO8.js} +1 -1
  9. package/dist/{pi-embedded-BNch0U5F.js → pi-embedded-Dhp64z5l.js} +16 -16
  10. package/dist/{pi-embedded-helpers-IkHl02JF.js → pi-embedded-helpers-840E4hop.js} +4 -4
  11. package/dist/{pw-ai-nMkA-oDJ.js → pw-ai-CBgJf_RR.js} +1 -1
  12. package/dist/{runner-DNEC58JI.js → runner-BbFKo1ne.js} +1 -1
  13. package/dist/{synthesis-BWAr0sZ9.js → synthesis-DoEM0E8_.js} +7 -7
  14. package/dist/{web-7a-m_UxL.js → web-BYXJn-Ps.js} +7 -7
  15. package/package.json +1 -1
  16. package/docs/.i18n/README.md +0 -31
  17. package/docs/.i18n/glossary.ja-JP.json +0 -14
  18. package/docs/.i18n/glossary.zh-CN.json +0 -210
  19. package/docs/.i18n/ja-JP.tm.jsonl +0 -0
  20. package/docs/.i18n/zh-CN.tm.jsonl +0 -1303
  21. package/docs/CNAME +0 -1
  22. package/docs/assets/install-script.svg +0 -1
  23. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  24. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  25. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  26. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  27. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  28. package/docs/assets/pixel-symi.svg +0 -60
  29. package/docs/assets/showcase/agents-ui.jpg +0 -0
  30. package/docs/assets/showcase/bambu-cli.png +0 -0
  31. package/docs/assets/showcase/codexmonitor.png +0 -0
  32. package/docs/assets/showcase/gohome-grafana.png +0 -0
  33. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  34. package/docs/assets/showcase/oura-health.png +0 -0
  35. package/docs/assets/showcase/padel-cli.svg +0 -11
  36. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  37. package/docs/assets/showcase/papla-tts.jpg +0 -0
  38. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  39. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  40. package/docs/assets/showcase/roborock-status.svg +0 -13
  41. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  42. package/docs/assets/showcase/snag.png +0 -0
  43. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  44. package/docs/assets/showcase/wienerlinien.png +0 -0
  45. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  46. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  47. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  48. package/docs/assets/sponsors/blacksmith.svg +0 -14
  49. package/docs/assets/sponsors/openai.svg +0 -3
  50. package/docs/assets/symi-logo-text-dark.png +0 -0
  51. package/docs/assets/symi-logo-text.png +0 -0
  52. package/docs/automation/auth-monitoring.md +0 -44
  53. package/docs/automation/cron-jobs.md +0 -540
  54. package/docs/automation/cron-vs-heartbeat.md +0 -286
  55. package/docs/automation/gmail-pubsub.md +0 -256
  56. package/docs/automation/hooks.md +0 -998
  57. package/docs/automation/poll.md +0 -61
  58. package/docs/automation/troubleshooting.md +0 -122
  59. package/docs/automation/webhook.md +0 -213
  60. package/docs/brave-search.md +0 -41
  61. package/docs/capabilities.md +0 -151
  62. package/docs/channels/bluebubbles.md +0 -346
  63. package/docs/channels/broadcast-groups.md +0 -441
  64. package/docs/channels/channel-routing.md +0 -112
  65. package/docs/channels/feishu.md +0 -586
  66. package/docs/channels/googlechat.md +0 -253
  67. package/docs/channels/grammy.md +0 -31
  68. package/docs/channels/group-messages.md +0 -82
  69. package/docs/channels/groups.md +0 -364
  70. package/docs/channels/imessage.md +0 -366
  71. package/docs/channels/index.md +0 -46
  72. package/docs/channels/irc.md +0 -234
  73. package/docs/channels/line.md +0 -186
  74. package/docs/channels/location.md +0 -56
  75. package/docs/channels/matrix.md +0 -300
  76. package/docs/channels/mattermost.md +0 -158
  77. package/docs/channels/msteams.md +0 -769
  78. package/docs/channels/nextcloud-talk.md +0 -138
  79. package/docs/channels/nostr.md +0 -233
  80. package/docs/channels/pairing.md +0 -100
  81. package/docs/channels/signal.md +0 -322
  82. package/docs/channels/slack.md +0 -510
  83. package/docs/channels/telegram.md +0 -748
  84. package/docs/channels/tlon.md +0 -148
  85. package/docs/channels/troubleshooting.md +0 -110
  86. package/docs/channels/twitch.md +0 -379
  87. package/docs/channels/whatsapp.md +0 -444
  88. package/docs/channels/zalo.md +0 -192
  89. package/docs/channels/zalouser.md +0 -140
  90. package/docs/ci.md +0 -50
  91. package/docs/cli/acp.md +0 -182
  92. package/docs/cli/agent.md +0 -24
  93. package/docs/cli/agents.md +0 -75
  94. package/docs/cli/approvals.md +0 -50
  95. package/docs/cli/browser.md +0 -107
  96. package/docs/cli/channels.md +0 -73
  97. package/docs/cli/config.md +0 -50
  98. package/docs/cli/configure.md +0 -32
  99. package/docs/cli/cron.md +0 -44
  100. package/docs/cli/dashboard.md +0 -16
  101. package/docs/cli/devices.md +0 -73
  102. package/docs/cli/directory.md +0 -62
  103. package/docs/cli/dns.md +0 -23
  104. package/docs/cli/docs.md +0 -15
  105. package/docs/cli/doctor.md +0 -41
  106. package/docs/cli/gateway.md +0 -202
  107. package/docs/cli/health.md +0 -21
  108. package/docs/cli/hooks.md +0 -313
  109. package/docs/cli/index.md +0 -1029
  110. package/docs/cli/logs.md +0 -28
  111. package/docs/cli/memory.md +0 -45
  112. package/docs/cli/message.md +0 -214
  113. package/docs/cli/models.md +0 -79
  114. package/docs/cli/node.md +0 -112
  115. package/docs/cli/nodes.md +0 -73
  116. package/docs/cli/onboard.md +0 -76
  117. package/docs/cli/pairing.md +0 -21
  118. package/docs/cli/plugins.md +0 -92
  119. package/docs/cli/reset.md +0 -17
  120. package/docs/cli/sandbox.md +0 -152
  121. package/docs/cli/security.md +0 -64
  122. package/docs/cli/sessions.md +0 -16
  123. package/docs/cli/setup.md +0 -29
  124. package/docs/cli/skills.md +0 -26
  125. package/docs/cli/status.md +0 -25
  126. package/docs/cli/system.md +0 -60
  127. package/docs/cli/tui.md +0 -23
  128. package/docs/cli/uninstall.md +0 -17
  129. package/docs/cli/update.md +0 -98
  130. package/docs/cli/voicecall.md +0 -34
  131. package/docs/cli/webhooks.md +0 -25
  132. package/docs/concepts/agent-loop.md +0 -148
  133. package/docs/concepts/agent-workspace.md +0 -234
  134. package/docs/concepts/agent.md +0 -123
  135. package/docs/concepts/architecture.md +0 -135
  136. package/docs/concepts/compaction.md +0 -61
  137. package/docs/concepts/context.md +0 -161
  138. package/docs/concepts/features.md +0 -51
  139. package/docs/concepts/markdown-formatting.md +0 -128
  140. package/docs/concepts/memory.md +0 -729
  141. package/docs/concepts/messages.md +0 -153
  142. package/docs/concepts/model-failover.md +0 -149
  143. package/docs/concepts/model-providers.md +0 -424
  144. package/docs/concepts/models.md +0 -208
  145. package/docs/concepts/multi-agent.md +0 -521
  146. package/docs/concepts/oauth.md +0 -145
  147. package/docs/concepts/presence.md +0 -102
  148. package/docs/concepts/queue.md +0 -86
  149. package/docs/concepts/retry.md +0 -64
  150. package/docs/concepts/session-pruning.md +0 -123
  151. package/docs/concepts/session-tool.md +0 -213
  152. package/docs/concepts/session.md +0 -199
  153. package/docs/concepts/sessions.md +0 -10
  154. package/docs/concepts/streaming.md +0 -129
  155. package/docs/concepts/system-prompt.md +0 -128
  156. package/docs/concepts/timezone.md +0 -90
  157. package/docs/concepts/typebox.md +0 -289
  158. package/docs/concepts/typing-indicators.md +0 -68
  159. package/docs/concepts/usage-tracking.md +0 -35
  160. package/docs/date-time.md +0 -127
  161. package/docs/debug/node-issue.md +0 -85
  162. package/docs/diagnostics/flags.md +0 -91
  163. package/docs/docs.json +0 -1849
  164. package/docs/experiments/onboarding-config-protocol.md +0 -40
  165. package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +0 -229
  166. package/docs/experiments/plans/cron-add-hardening.md +0 -62
  167. package/docs/experiments/plans/group-policy-hardening.md +0 -40
  168. package/docs/experiments/plans/openresponses-gateway.md +0 -123
  169. package/docs/experiments/plans/pty-process-supervision.md +0 -192
  170. package/docs/experiments/plans/session-binding-channel-agnostic.md +0 -202
  171. package/docs/experiments/plans/thread-bound-subagents.md +0 -281
  172. package/docs/experiments/proposals/model-config.md +0 -36
  173. package/docs/experiments/research/memory.md +0 -228
  174. package/docs/gateway/authentication.md +0 -162
  175. package/docs/gateway/background-process.md +0 -96
  176. package/docs/gateway/bonjour.md +0 -177
  177. package/docs/gateway/bridge-protocol.md +0 -91
  178. package/docs/gateway/cli-backends.md +0 -225
  179. package/docs/gateway/configuration-examples.md +0 -610
  180. package/docs/gateway/configuration-reference.md +0 -2465
  181. package/docs/gateway/configuration.md +0 -488
  182. package/docs/gateway/discovery.md +0 -123
  183. package/docs/gateway/doctor.md +0 -282
  184. package/docs/gateway/gateway-lock.md +0 -34
  185. package/docs/gateway/health.md +0 -35
  186. package/docs/gateway/heartbeat.md +0 -374
  187. package/docs/gateway/index.md +0 -254
  188. package/docs/gateway/local-models.md +0 -150
  189. package/docs/gateway/logging.md +0 -113
  190. package/docs/gateway/multiple-gateways.md +0 -112
  191. package/docs/gateway/network-model.md +0 -20
  192. package/docs/gateway/openai-http-api.md +0 -119
  193. package/docs/gateway/openresponses-http-api.md +0 -333
  194. package/docs/gateway/pairing.md +0 -99
  195. package/docs/gateway/protocol.md +0 -221
  196. package/docs/gateway/remote-gateway-readme.md +0 -158
  197. package/docs/gateway/remote.md +0 -131
  198. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -128
  199. package/docs/gateway/sandboxing.md +0 -203
  200. package/docs/gateway/security/index.md +0 -931
  201. package/docs/gateway/tailscale.md +0 -132
  202. package/docs/gateway/tools-invoke-http-api.md +0 -110
  203. package/docs/gateway/troubleshooting.md +0 -317
  204. package/docs/gateway/trusted-proxy-auth.md +0 -270
  205. package/docs/glass-ui-rendering-invariants.md +0 -451
  206. package/docs/help/debugging.md +0 -162
  207. package/docs/help/environment.md +0 -107
  208. package/docs/help/faq.md +0 -2846
  209. package/docs/help/index.md +0 -21
  210. package/docs/help/scripts.md +0 -28
  211. package/docs/help/testing.md +0 -385
  212. package/docs/help/troubleshooting.md +0 -264
  213. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  214. package/docs/images/feishu-step2-create-app.png +0 -0
  215. package/docs/images/feishu-step3-credentials.png +0 -0
  216. package/docs/images/feishu-step4-permissions.png +0 -0
  217. package/docs/images/feishu-step5-bot-capability.png +0 -0
  218. package/docs/images/feishu-step6-event-subscription.png +0 -0
  219. package/docs/images/groups-flow.svg +0 -52
  220. package/docs/images/mobile-ui-screenshot.png +0 -0
  221. package/docs/index.md +0 -186
  222. package/docs/install/ansible.md +0 -207
  223. package/docs/install/bun.md +0 -59
  224. package/docs/install/development-channels.md +0 -75
  225. package/docs/install/docker.md +0 -583
  226. package/docs/install/exe-dev.md +0 -126
  227. package/docs/install/fly.md +0 -472
  228. package/docs/install/gcp.md +0 -499
  229. package/docs/install/hetzner.md +0 -347
  230. package/docs/install/index.md +0 -218
  231. package/docs/install/installer.md +0 -405
  232. package/docs/install/macos-vm.md +0 -281
  233. package/docs/install/migrating.md +0 -192
  234. package/docs/install/nix.md +0 -98
  235. package/docs/install/node.md +0 -138
  236. package/docs/install/northflank.mdx +0 -49
  237. package/docs/install/podman.md +0 -108
  238. package/docs/install/railway.mdx +0 -95
  239. package/docs/install/render.mdx +0 -158
  240. package/docs/install/uninstall.md +0 -128
  241. package/docs/install/updating.md +0 -231
  242. package/docs/ja-JP/AGENTS.md +0 -37
  243. package/docs/ja-JP/index.md +0 -183
  244. package/docs/ja-JP/start/getting-started.md +0 -125
  245. package/docs/ja-JP/start/wizard.md +0 -77
  246. package/docs/logging.md +0 -350
  247. package/docs/nav-tabs-underline.js +0 -100
  248. package/docs/network.md +0 -54
  249. package/docs/nodes/audio.md +0 -133
  250. package/docs/nodes/camera.md +0 -156
  251. package/docs/nodes/images.md +0 -72
  252. package/docs/nodes/index.md +0 -342
  253. package/docs/nodes/location-command.md +0 -113
  254. package/docs/nodes/media-understanding.md +0 -379
  255. package/docs/nodes/talk.md +0 -90
  256. package/docs/nodes/troubleshooting.md +0 -112
  257. package/docs/nodes/voicewake.md +0 -65
  258. package/docs/perplexity.md +0 -80
  259. package/docs/phase-6.5-pre-flight-audit.md +0 -268
  260. package/docs/pi-dev.md +0 -70
  261. package/docs/pi.md +0 -610
  262. package/docs/platforms/android.md +0 -151
  263. package/docs/platforms/digitalocean.md +0 -265
  264. package/docs/platforms/index.md +0 -53
  265. package/docs/platforms/ios.md +0 -108
  266. package/docs/platforms/linux.md +0 -94
  267. package/docs/platforms/mac/bundled-gateway.md +0 -73
  268. package/docs/platforms/mac/canvas.md +0 -125
  269. package/docs/platforms/mac/child-process.md +0 -69
  270. package/docs/platforms/mac/dev-setup.md +0 -104
  271. package/docs/platforms/mac/health.md +0 -34
  272. package/docs/platforms/mac/icon.md +0 -31
  273. package/docs/platforms/mac/logging.md +0 -57
  274. package/docs/platforms/mac/menu-bar.md +0 -81
  275. package/docs/platforms/mac/peekaboo.md +0 -65
  276. package/docs/platforms/mac/permissions.md +0 -50
  277. package/docs/platforms/mac/release.md +0 -85
  278. package/docs/platforms/mac/remote.md +0 -84
  279. package/docs/platforms/mac/signing.md +0 -47
  280. package/docs/platforms/mac/skills.md +0 -33
  281. package/docs/platforms/mac/voice-overlay.md +0 -60
  282. package/docs/platforms/mac/voicewake.md +0 -66
  283. package/docs/platforms/mac/webchat.md +0 -43
  284. package/docs/platforms/mac/xpc.md +0 -61
  285. package/docs/platforms/macos.md +0 -204
  286. package/docs/platforms/oracle.md +0 -303
  287. package/docs/platforms/raspberry-pi.md +0 -358
  288. package/docs/platforms/windows.md +0 -159
  289. package/docs/plugins/agent-tools.md +0 -99
  290. package/docs/plugins/community.md +0 -44
  291. package/docs/plugins/manifest.md +0 -71
  292. package/docs/plugins/voice-call.md +0 -322
  293. package/docs/plugins/zalouser.md +0 -81
  294. package/docs/prose.md +0 -134
  295. package/docs/providers/anthropic.md +0 -174
  296. package/docs/providers/bedrock.md +0 -176
  297. package/docs/providers/claude-max-api-proxy.md +0 -148
  298. package/docs/providers/cloudflare-ai-gateway.md +0 -71
  299. package/docs/providers/deepgram.md +0 -93
  300. package/docs/providers/github-copilot.md +0 -72
  301. package/docs/providers/glm.md +0 -33
  302. package/docs/providers/huggingface.md +0 -209
  303. package/docs/providers/index.md +0 -67
  304. package/docs/providers/litellm.md +0 -153
  305. package/docs/providers/minimax.md +0 -208
  306. package/docs/providers/models.md +0 -52
  307. package/docs/providers/moonshot.md +0 -142
  308. package/docs/providers/nvidia.md +0 -55
  309. package/docs/providers/ollama.md +0 -250
  310. package/docs/providers/openai.md +0 -62
  311. package/docs/providers/opencode.md +0 -36
  312. package/docs/providers/openrouter.md +0 -37
  313. package/docs/providers/qianfan.md +0 -38
  314. package/docs/providers/qwen.md +0 -53
  315. package/docs/providers/synthetic.md +0 -99
  316. package/docs/providers/together.md +0 -65
  317. package/docs/providers/venice.md +0 -267
  318. package/docs/providers/vercel-ai-gateway.md +0 -50
  319. package/docs/providers/vllm.md +0 -92
  320. package/docs/providers/xiaomi.md +0 -64
  321. package/docs/providers/zai.md +0 -38
  322. package/docs/refactor/exec-host.md +0 -316
  323. package/docs/refactor/outbound-session-mirroring.md +0 -83
  324. package/docs/refactor/plugin-sdk.md +0 -214
  325. package/docs/refactor/strict-config.md +0 -93
  326. package/docs/refactor/syminet.md +0 -417
  327. package/docs/reference/AGENTS.default.md +0 -123
  328. package/docs/reference/RELEASING.md +0 -120
  329. package/docs/reference/api-usage-costs.md +0 -138
  330. package/docs/reference/credits.md +0 -28
  331. package/docs/reference/device-models.md +0 -47
  332. package/docs/reference/rpc.md +0 -43
  333. package/docs/reference/session-management-compaction.md +0 -284
  334. package/docs/reference/test.md +0 -51
  335. package/docs/reference/token-use.md +0 -136
  336. package/docs/reference/transcript-hygiene.md +0 -151
  337. package/docs/reference/wizard.md +0 -265
  338. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -89
  339. package/docs/security/README.md +0 -16
  340. package/docs/security/THREAT-MODEL-ATLAS.md +0 -600
  341. package/docs/security/formal-verification.md +0 -164
  342. package/docs/start/bootstrapping.md +0 -41
  343. package/docs/start/docs-directory.md +0 -63
  344. package/docs/start/getting-started.md +0 -135
  345. package/docs/start/hubs.md +0 -196
  346. package/docs/start/lore.md +0 -216
  347. package/docs/start/onboarding-overview.md +0 -51
  348. package/docs/start/onboarding.md +0 -81
  349. package/docs/start/quickstart.md +0 -22
  350. package/docs/start/setup.md +0 -160
  351. package/docs/start/showcase.md +0 -414
  352. package/docs/start/symi.md +0 -211
  353. package/docs/start/wizard-cli-automation.md +0 -158
  354. package/docs/start/wizard-cli-reference.md +0 -255
  355. package/docs/start/wizard.md +0 -109
  356. package/docs/style.css +0 -37
  357. package/docs/tools/agent-send.md +0 -52
  358. package/docs/tools/apply-patch.md +0 -51
  359. package/docs/tools/browser-linux-troubleshooting.md +0 -139
  360. package/docs/tools/browser-login.md +0 -67
  361. package/docs/tools/browser.md +0 -587
  362. package/docs/tools/chrome-extension.md +0 -183
  363. package/docs/tools/creating-skills.md +0 -54
  364. package/docs/tools/elevated.md +0 -55
  365. package/docs/tools/exec-approvals.md +0 -261
  366. package/docs/tools/exec.md +0 -184
  367. package/docs/tools/firecrawl.md +0 -61
  368. package/docs/tools/index.md +0 -540
  369. package/docs/tools/llm-task.md +0 -115
  370. package/docs/tools/loop-detection.md +0 -98
  371. package/docs/tools/multi-agent-sandbox-tools.md +0 -396
  372. package/docs/tools/pipeline.md +0 -340
  373. package/docs/tools/plugin.md +0 -687
  374. package/docs/tools/reactions.md +0 -21
  375. package/docs/tools/skills-config.md +0 -76
  376. package/docs/tools/skills.md +0 -300
  377. package/docs/tools/slash-commands.md +0 -202
  378. package/docs/tools/subagents.md +0 -232
  379. package/docs/tools/symihub.md +0 -256
  380. package/docs/tools/thinking.md +0 -75
  381. package/docs/tools/web.md +0 -265
  382. package/docs/tts.md +0 -398
  383. package/docs/vps.md +0 -43
  384. package/docs/web/control-ui.md +0 -247
  385. package/docs/web/dashboard.md +0 -46
  386. package/docs/web/index.md +0 -118
  387. package/docs/web/tui.md +0 -162
  388. package/docs/web/webchat.md +0 -53
  389. package/docs/whatsapp-symi-ai-zh.jpg +0 -0
  390. package/docs/whatsapp-symi.jpg +0 -0
  391. package/docs/zh-CN/AGENTS.md +0 -59
  392. package/docs/zh-CN/automation/auth-monitoring.md +0 -47
  393. package/docs/zh-CN/automation/cron-jobs.md +0 -422
  394. package/docs/zh-CN/automation/cron-vs-heartbeat.md +0 -286
  395. package/docs/zh-CN/automation/gmail-pubsub.md +0 -249
  396. package/docs/zh-CN/automation/hooks.md +0 -881
  397. package/docs/zh-CN/automation/poll.md +0 -68
  398. package/docs/zh-CN/automation/troubleshooting.md +0 -8
  399. package/docs/zh-CN/automation/webhook.md +0 -161
  400. package/docs/zh-CN/brave-search.md +0 -48
  401. package/docs/zh-CN/channels/bluebubbles.md +0 -271
  402. package/docs/zh-CN/channels/broadcast-groups.md +0 -448
  403. package/docs/zh-CN/channels/channel-routing.md +0 -112
  404. package/docs/zh-CN/channels/feishu.md +0 -629
  405. package/docs/zh-CN/channels/googlechat.md +0 -257
  406. package/docs/zh-CN/channels/grammy.md +0 -38
  407. package/docs/zh-CN/channels/group-messages.md +0 -89
  408. package/docs/zh-CN/channels/groups.md +0 -369
  409. package/docs/zh-CN/channels/imessage.md +0 -300
  410. package/docs/zh-CN/channels/index.md +0 -52
  411. package/docs/zh-CN/channels/line.md +0 -180
  412. package/docs/zh-CN/channels/location.md +0 -63
  413. package/docs/zh-CN/channels/matrix.md +0 -221
  414. package/docs/zh-CN/channels/mattermost.md +0 -144
  415. package/docs/zh-CN/channels/msteams.md +0 -773
  416. package/docs/zh-CN/channels/nextcloud-talk.md +0 -142
  417. package/docs/zh-CN/channels/nostr.md +0 -240
  418. package/docs/zh-CN/channels/pairing.md +0 -86
  419. package/docs/zh-CN/channels/signal.md +0 -207
  420. package/docs/zh-CN/channels/slack.md +0 -529
  421. package/docs/zh-CN/channels/telegram.md +0 -748
  422. package/docs/zh-CN/channels/tlon.md +0 -136
  423. package/docs/zh-CN/channels/troubleshooting.md +0 -34
  424. package/docs/zh-CN/channels/twitch.md +0 -385
  425. package/docs/zh-CN/channels/whatsapp.md +0 -411
  426. package/docs/zh-CN/channels/zalo.md +0 -196
  427. package/docs/zh-CN/channels/zalouser.md +0 -147
  428. package/docs/zh-CN/cli/acp.md +0 -173
  429. package/docs/zh-CN/cli/agent.md +0 -30
  430. package/docs/zh-CN/cli/agents.md +0 -82
  431. package/docs/zh-CN/cli/approvals.md +0 -57
  432. package/docs/zh-CN/cli/browser.md +0 -114
  433. package/docs/zh-CN/cli/channels.md +0 -80
  434. package/docs/zh-CN/cli/config.md +0 -57
  435. package/docs/zh-CN/cli/configure.md +0 -37
  436. package/docs/zh-CN/cli/cron.md +0 -43
  437. package/docs/zh-CN/cli/dashboard.md +0 -23
  438. package/docs/zh-CN/cli/devices.md +0 -74
  439. package/docs/zh-CN/cli/directory.md +0 -69
  440. package/docs/zh-CN/cli/dns.md +0 -30
  441. package/docs/zh-CN/cli/docs.md +0 -22
  442. package/docs/zh-CN/cli/doctor.md +0 -48
  443. package/docs/zh-CN/cli/gateway.md +0 -206
  444. package/docs/zh-CN/cli/health.md +0 -28
  445. package/docs/zh-CN/cli/hooks.md +0 -298
  446. package/docs/zh-CN/cli/index.md +0 -1025
  447. package/docs/zh-CN/cli/logs.md +0 -31
  448. package/docs/zh-CN/cli/memory.md +0 -52
  449. package/docs/zh-CN/cli/message.md +0 -205
  450. package/docs/zh-CN/cli/models.md +0 -85
  451. package/docs/zh-CN/cli/node.md +0 -115
  452. package/docs/zh-CN/cli/nodes.md +0 -80
  453. package/docs/zh-CN/cli/onboard.md +0 -36
  454. package/docs/zh-CN/cli/pairing.md +0 -28
  455. package/docs/zh-CN/cli/plugins.md +0 -66
  456. package/docs/zh-CN/cli/reset.md +0 -24
  457. package/docs/zh-CN/cli/sandbox.md +0 -158
  458. package/docs/zh-CN/cli/security.md +0 -33
  459. package/docs/zh-CN/cli/sessions.md +0 -23
  460. package/docs/zh-CN/cli/setup.md +0 -36
  461. package/docs/zh-CN/cli/skills.md +0 -33
  462. package/docs/zh-CN/cli/status.md +0 -32
  463. package/docs/zh-CN/cli/system.md +0 -63
  464. package/docs/zh-CN/cli/tui.md +0 -30
  465. package/docs/zh-CN/cli/uninstall.md +0 -24
  466. package/docs/zh-CN/cli/update.md +0 -101
  467. package/docs/zh-CN/cli/voicecall.md +0 -41
  468. package/docs/zh-CN/cli/webhooks.md +0 -32
  469. package/docs/zh-CN/concepts/agent-loop.md +0 -146
  470. package/docs/zh-CN/concepts/agent-workspace.md +0 -219
  471. package/docs/zh-CN/concepts/agent.md +0 -115
  472. package/docs/zh-CN/concepts/architecture.md +0 -122
  473. package/docs/zh-CN/concepts/compaction.md +0 -67
  474. package/docs/zh-CN/concepts/context.md +0 -168
  475. package/docs/zh-CN/concepts/features.md +0 -57
  476. package/docs/zh-CN/concepts/markdown-formatting.md +0 -115
  477. package/docs/zh-CN/concepts/memory.md +0 -412
  478. package/docs/zh-CN/concepts/messages.md +0 -140
  479. package/docs/zh-CN/concepts/model-failover.md +0 -145
  480. package/docs/zh-CN/concepts/model-providers.md +0 -320
  481. package/docs/zh-CN/concepts/models.md +0 -196
  482. package/docs/zh-CN/concepts/multi-agent.md +0 -371
  483. package/docs/zh-CN/concepts/oauth.md +0 -151
  484. package/docs/zh-CN/concepts/presence.md +0 -99
  485. package/docs/zh-CN/concepts/queue.md +0 -91
  486. package/docs/zh-CN/concepts/retry.md +0 -71
  487. package/docs/zh-CN/concepts/session-pruning.md +0 -129
  488. package/docs/zh-CN/concepts/session-tool.md +0 -198
  489. package/docs/zh-CN/concepts/session.md +0 -158
  490. package/docs/zh-CN/concepts/sessions.md +0 -17
  491. package/docs/zh-CN/concepts/streaming.md +0 -131
  492. package/docs/zh-CN/concepts/system-prompt.md +0 -99
  493. package/docs/zh-CN/concepts/timezone.md +0 -94
  494. package/docs/zh-CN/concepts/typebox.md +0 -284
  495. package/docs/zh-CN/concepts/typing-indicators.md +0 -74
  496. package/docs/zh-CN/concepts/usage-tracking.md +0 -42
  497. package/docs/zh-CN/date-time.md +0 -128
  498. package/docs/zh-CN/debug/node-issue.md +0 -90
  499. package/docs/zh-CN/diagnostics/flags.md +0 -98
  500. package/docs/zh-CN/experiments/onboarding-config-protocol.md +0 -47
  501. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -69
  502. package/docs/zh-CN/experiments/plans/group-policy-hardening.md +0 -45
  503. package/docs/zh-CN/experiments/plans/openresponses-gateway.md +0 -121
  504. package/docs/zh-CN/experiments/proposals/model-config.md +0 -42
  505. package/docs/zh-CN/experiments/research/memory.md +0 -235
  506. package/docs/zh-CN/gateway/authentication.md +0 -142
  507. package/docs/zh-CN/gateway/background-process.md +0 -100
  508. package/docs/zh-CN/gateway/bonjour.md +0 -174
  509. package/docs/zh-CN/gateway/bridge-protocol.md +0 -86
  510. package/docs/zh-CN/gateway/cli-backends.md +0 -213
  511. package/docs/zh-CN/gateway/configuration-examples.md +0 -580
  512. package/docs/zh-CN/gateway/configuration.md +0 -3284
  513. package/docs/zh-CN/gateway/discovery.md +0 -123
  514. package/docs/zh-CN/gateway/doctor.md +0 -238
  515. package/docs/zh-CN/gateway/gateway-lock.md +0 -41
  516. package/docs/zh-CN/gateway/health.md +0 -42
  517. package/docs/zh-CN/gateway/heartbeat.md +0 -272
  518. package/docs/zh-CN/gateway/index.md +0 -335
  519. package/docs/zh-CN/gateway/local-models.md +0 -157
  520. package/docs/zh-CN/gateway/logging.md +0 -114
  521. package/docs/zh-CN/gateway/multiple-gateways.md +0 -119
  522. package/docs/zh-CN/gateway/network-model.md +0 -23
  523. package/docs/zh-CN/gateway/openai-http-api.md +0 -125
  524. package/docs/zh-CN/gateway/openresponses-http-api.md +0 -317
  525. package/docs/zh-CN/gateway/pairing.md +0 -99
  526. package/docs/zh-CN/gateway/protocol.md +0 -220
  527. package/docs/zh-CN/gateway/remote-gateway-readme.md +0 -164
  528. package/docs/zh-CN/gateway/remote.md +0 -133
  529. package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -135
  530. package/docs/zh-CN/gateway/sandboxing.md +0 -188
  531. package/docs/zh-CN/gateway/security/index.md +0 -772
  532. package/docs/zh-CN/gateway/tailscale.md +0 -124
  533. package/docs/zh-CN/gateway/tools-invoke-http-api.md +0 -92
  534. package/docs/zh-CN/gateway/troubleshooting.md +0 -758
  535. package/docs/zh-CN/help/debugging.md +0 -160
  536. package/docs/zh-CN/help/environment.md +0 -88
  537. package/docs/zh-CN/help/faq.md +0 -2613
  538. package/docs/zh-CN/help/index.md +0 -28
  539. package/docs/zh-CN/help/scripts.md +0 -35
  540. package/docs/zh-CN/help/testing.md +0 -375
  541. package/docs/zh-CN/help/troubleshooting.md +0 -104
  542. package/docs/zh-CN/index.md +0 -183
  543. package/docs/zh-CN/install/ansible.md +0 -214
  544. package/docs/zh-CN/install/bun.md +0 -65
  545. package/docs/zh-CN/install/development-channels.md +0 -81
  546. package/docs/zh-CN/install/docker.md +0 -525
  547. package/docs/zh-CN/install/exe-dev.md +0 -127
  548. package/docs/zh-CN/install/fly.md +0 -476
  549. package/docs/zh-CN/install/gcp.md +0 -509
  550. package/docs/zh-CN/install/hetzner.md +0 -336
  551. package/docs/zh-CN/install/index.md +0 -193
  552. package/docs/zh-CN/install/installer.md +0 -128
  553. package/docs/zh-CN/install/macos-vm.md +0 -288
  554. package/docs/zh-CN/install/migrating.md +0 -199
  555. package/docs/zh-CN/install/nix.md +0 -99
  556. package/docs/zh-CN/install/node.md +0 -8
  557. package/docs/zh-CN/install/northflank.mdx +0 -56
  558. package/docs/zh-CN/install/railway.mdx +0 -102
  559. package/docs/zh-CN/install/render.mdx +0 -168
  560. package/docs/zh-CN/install/uninstall.md +0 -135
  561. package/docs/zh-CN/install/updating.md +0 -233
  562. package/docs/zh-CN/logging.md +0 -329
  563. package/docs/zh-CN/network.md +0 -59
  564. package/docs/zh-CN/nodes/audio.md +0 -120
  565. package/docs/zh-CN/nodes/camera.md +0 -162
  566. package/docs/zh-CN/nodes/images.md +0 -79
  567. package/docs/zh-CN/nodes/index.md +0 -348
  568. package/docs/zh-CN/nodes/location-command.md +0 -120
  569. package/docs/zh-CN/nodes/media-understanding.md +0 -380
  570. package/docs/zh-CN/nodes/talk.md +0 -97
  571. package/docs/zh-CN/nodes/troubleshooting.md +0 -8
  572. package/docs/zh-CN/nodes/voicewake.md +0 -72
  573. package/docs/zh-CN/perplexity.md +0 -84
  574. package/docs/zh-CN/pi-dev.md +0 -77
  575. package/docs/zh-CN/pi.md +0 -617
  576. package/docs/zh-CN/platforms/android.md +0 -155
  577. package/docs/zh-CN/platforms/digitalocean.md +0 -268
  578. package/docs/zh-CN/platforms/index.md +0 -60
  579. package/docs/zh-CN/platforms/ios.md +0 -114
  580. package/docs/zh-CN/platforms/linux.md +0 -101
  581. package/docs/zh-CN/platforms/mac/bundled-gateway.md +0 -75
  582. package/docs/zh-CN/platforms/mac/canvas.md +0 -128
  583. package/docs/zh-CN/platforms/mac/child-process.md +0 -73
  584. package/docs/zh-CN/platforms/mac/dev-setup.md +0 -109
  585. package/docs/zh-CN/platforms/mac/health.md +0 -41
  586. package/docs/zh-CN/platforms/mac/icon.md +0 -38
  587. package/docs/zh-CN/platforms/mac/logging.md +0 -64
  588. package/docs/zh-CN/platforms/mac/menu-bar.md +0 -88
  589. package/docs/zh-CN/platforms/mac/peekaboo.md +0 -62
  590. package/docs/zh-CN/platforms/mac/permissions.md +0 -46
  591. package/docs/zh-CN/platforms/mac/release.md +0 -92
  592. package/docs/zh-CN/platforms/mac/remote.md +0 -90
  593. package/docs/zh-CN/platforms/mac/signing.md +0 -54
  594. package/docs/zh-CN/platforms/mac/skills.md +0 -40
  595. package/docs/zh-CN/platforms/mac/voice-overlay.md +0 -67
  596. package/docs/zh-CN/platforms/mac/voicewake.md +0 -73
  597. package/docs/zh-CN/platforms/mac/webchat.md +0 -43
  598. package/docs/zh-CN/platforms/mac/xpc.md +0 -68
  599. package/docs/zh-CN/platforms/macos.md +0 -193
  600. package/docs/zh-CN/platforms/oracle.md +0 -310
  601. package/docs/zh-CN/platforms/raspberry-pi.md +0 -365
  602. package/docs/zh-CN/platforms/windows.md +0 -156
  603. package/docs/zh-CN/plugins/agent-tools.md +0 -99
  604. package/docs/zh-CN/plugins/manifest.md +0 -68
  605. package/docs/zh-CN/plugins/voice-call.md +0 -250
  606. package/docs/zh-CN/plugins/zalouser.md +0 -88
  607. package/docs/zh-CN/prose.md +0 -141
  608. package/docs/zh-CN/providers/anthropic.md +0 -159
  609. package/docs/zh-CN/providers/bedrock.md +0 -170
  610. package/docs/zh-CN/providers/claude-max-api-proxy.md +0 -155
  611. package/docs/zh-CN/providers/deepgram.md +0 -97
  612. package/docs/zh-CN/providers/github-copilot.md +0 -67
  613. package/docs/zh-CN/providers/glm.md +0 -39
  614. package/docs/zh-CN/providers/index.md +0 -66
  615. package/docs/zh-CN/providers/minimax.md +0 -206
  616. package/docs/zh-CN/providers/models.md +0 -55
  617. package/docs/zh-CN/providers/moonshot.md +0 -145
  618. package/docs/zh-CN/providers/ollama.md +0 -230
  619. package/docs/zh-CN/providers/openai.md +0 -68
  620. package/docs/zh-CN/providers/opencode.md +0 -41
  621. package/docs/zh-CN/providers/openrouter.md +0 -43
  622. package/docs/zh-CN/providers/qianfan.md +0 -8
  623. package/docs/zh-CN/providers/qwen.md +0 -55
  624. package/docs/zh-CN/providers/synthetic.md +0 -102
  625. package/docs/zh-CN/providers/venice.md +0 -274
  626. package/docs/zh-CN/providers/vercel-ai-gateway.md +0 -57
  627. package/docs/zh-CN/providers/xiaomi.md +0 -68
  628. package/docs/zh-CN/providers/zai.md +0 -41
  629. package/docs/zh-CN/refactor/exec-host.md +0 -323
  630. package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -90
  631. package/docs/zh-CN/refactor/plugin-sdk.md +0 -221
  632. package/docs/zh-CN/refactor/strict-config.md +0 -100
  633. package/docs/zh-CN/refactor/syminet.md +0 -424
  634. package/docs/zh-CN/reference/AGENTS.default.md +0 -130
  635. package/docs/zh-CN/reference/RELEASING.md +0 -122
  636. package/docs/zh-CN/reference/api-usage-costs.md +0 -136
  637. package/docs/zh-CN/reference/credits.md +0 -34
  638. package/docs/zh-CN/reference/device-models.md +0 -54
  639. package/docs/zh-CN/reference/rpc.md +0 -48
  640. package/docs/zh-CN/reference/session-management-compaction.md +0 -286
  641. package/docs/zh-CN/reference/templates/AGENTS.dev.md +0 -89
  642. package/docs/zh-CN/reference/templates/AGENTS.md +0 -234
  643. package/docs/zh-CN/reference/templates/BOOT.md +0 -17
  644. package/docs/zh-CN/reference/templates/BOOTSTRAP.md +0 -68
  645. package/docs/zh-CN/reference/templates/IDENTITY.dev.md +0 -54
  646. package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
  647. package/docs/zh-CN/reference/templates/SYMICORE.dev.md +0 -83
  648. package/docs/zh-CN/reference/templates/SYMICORE.md +0 -49
  649. package/docs/zh-CN/reference/templates/SYMIPULSE.md +0 -69
  650. package/docs/zh-CN/reference/templates/TOOLS.dev.md +0 -31
  651. package/docs/zh-CN/reference/templates/TOOLS.md +0 -53
  652. package/docs/zh-CN/reference/templates/USER.dev.md +0 -25
  653. package/docs/zh-CN/reference/templates/USER.md +0 -30
  654. package/docs/zh-CN/reference/test.md +0 -57
  655. package/docs/zh-CN/reference/token-use.md +0 -119
  656. package/docs/zh-CN/reference/transcript-hygiene.md +0 -109
  657. package/docs/zh-CN/reference/wizard.md +0 -9
  658. package/docs/zh-CN/security/formal-verification.md +0 -171
  659. package/docs/zh-CN/start/bootstrapping.md +0 -9
  660. package/docs/zh-CN/start/docs-directory.md +0 -69
  661. package/docs/zh-CN/start/getting-started.md +0 -201
  662. package/docs/zh-CN/start/hubs.md +0 -199
  663. package/docs/zh-CN/start/lore.md +0 -223
  664. package/docs/zh-CN/start/onboarding.md +0 -105
  665. package/docs/zh-CN/start/quickstart.md +0 -88
  666. package/docs/zh-CN/start/setup.md +0 -151
  667. package/docs/zh-CN/start/showcase.md +0 -421
  668. package/docs/zh-CN/start/symi.md +0 -244
  669. package/docs/zh-CN/start/wizard.md +0 -326
  670. package/docs/zh-CN/tools/agent-send.md +0 -58
  671. package/docs/zh-CN/tools/apply-patch.md +0 -57
  672. package/docs/zh-CN/tools/browser-linux-troubleshooting.md +0 -144
  673. package/docs/zh-CN/tools/browser-login.md +0 -75
  674. package/docs/zh-CN/tools/browser.md +0 -553
  675. package/docs/zh-CN/tools/chrome-extension.md +0 -183
  676. package/docs/zh-CN/tools/creating-skills.md +0 -61
  677. package/docs/zh-CN/tools/elevated.md +0 -62
  678. package/docs/zh-CN/tools/exec-approvals.md +0 -233
  679. package/docs/zh-CN/tools/exec.md +0 -169
  680. package/docs/zh-CN/tools/firecrawl.md +0 -68
  681. package/docs/zh-CN/tools/index.md +0 -508
  682. package/docs/zh-CN/tools/llm-task.md +0 -117
  683. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +0 -400
  684. package/docs/zh-CN/tools/pipeline.md +0 -349
  685. package/docs/zh-CN/tools/plugin.md +0 -639
  686. package/docs/zh-CN/tools/reactions.md +0 -28
  687. package/docs/zh-CN/tools/skills-config.md +0 -78
  688. package/docs/zh-CN/tools/skills.md +0 -279
  689. package/docs/zh-CN/tools/slash-commands.md +0 -196
  690. package/docs/zh-CN/tools/subagents.md +0 -167
  691. package/docs/zh-CN/tools/symihub.md +0 -209
  692. package/docs/zh-CN/tools/thinking.md +0 -80
  693. package/docs/zh-CN/tools/web.md +0 -257
  694. package/docs/zh-CN/tts.md +0 -373
  695. package/docs/zh-CN/vps.md +0 -47
  696. package/docs/zh-CN/web/control-ui.md +0 -190
  697. package/docs/zh-CN/web/dashboard.md +0 -53
  698. package/docs/zh-CN/web/index.md +0 -118
  699. package/docs/zh-CN/web/tui.md +0 -166
  700. package/docs/zh-CN/web/webchat.md +0 -56
  701. package/extensions/imessage/index.ts +0 -17
  702. package/extensions/imessage/node_modules/.bin/symi +0 -21
  703. package/extensions/imessage/package.json +0 -15
  704. package/extensions/imessage/src/channel.outbound.test.ts +0 -66
  705. package/extensions/imessage/src/channel.ts +0 -298
  706. package/extensions/imessage/src/runtime.ts +0 -14
  707. package/extensions/imessage/symi.plugin.json +0 -9
  708. package/extensions/line/index.ts +0 -19
  709. package/extensions/line/node_modules/.bin/symi +0 -21
  710. package/extensions/line/package.json +0 -30
  711. package/extensions/line/src/card-command.ts +0 -344
  712. package/extensions/line/src/channel.logout.test.ts +0 -133
  713. package/extensions/line/src/channel.sendPayload.test.ts +0 -312
  714. package/extensions/line/src/channel.startup.test.ts +0 -133
  715. package/extensions/line/src/channel.ts +0 -801
  716. package/extensions/line/src/runtime.ts +0 -14
  717. package/extensions/line/symi.plugin.json +0 -9
  718. package/extensions/signal/index.ts +0 -17
  719. package/extensions/signal/node_modules/.bin/symi +0 -21
  720. package/extensions/signal/package.json +0 -15
  721. package/extensions/signal/src/channel.ts +0 -302
  722. package/extensions/signal/src/runtime.ts +0 -14
  723. package/extensions/signal/symi.plugin.json +0 -9
  724. package/extensions/telegram/index.ts +0 -17
  725. package/extensions/telegram/node_modules/.bin/symi +0 -21
  726. package/extensions/telegram/package.json +0 -15
  727. package/extensions/telegram/src/channel.test.ts +0 -125
  728. package/extensions/telegram/src/channel.ts +0 -560
  729. package/extensions/telegram/src/runtime.ts +0 -14
  730. package/extensions/telegram/symi.plugin.json +0 -9
  731. package/extensions/whatsapp/index.ts +0 -17
  732. package/extensions/whatsapp/node_modules/.bin/symi +0 -21
  733. package/extensions/whatsapp/package.json +0 -15
  734. package/extensions/whatsapp/src/channel.ts +0 -465
  735. package/extensions/whatsapp/src/resolve-target.test.ts +0 -170
  736. package/extensions/whatsapp/src/runtime.ts +0 -14
  737. package/extensions/whatsapp/symi.plugin.json +0 -9
@@ -1,729 +0,0 @@
1
- ---
2
- title: "Memory"
3
- summary: "How Symi memory works (workspace files + automatic memory flush)"
4
- read_when:
5
- - You want the memory file layout and workflow
6
- - You want to tune the automatic pre-compaction memory flush
7
- ---
8
-
9
- # Memory
10
-
11
- Symi memory is **plain Markdown in the agent workspace**. The files are the
12
- source of truth; the model only "remembers" what gets written to disk.
13
-
14
- Memory search tools are provided by the active memory plugin (default:
15
- `memory-core`). Disable memory plugins with `plugins.slots.memory = "none"`.
16
-
17
- ## Memory files (Markdown)
18
-
19
- The default workspace layout uses two memory layers:
20
-
21
- - `memory/YYYY-MM-DD.md`
22
- - Daily log (append-only).
23
- - Read today + yesterday at session start.
24
- - `MEMORY.md` (optional)
25
- - Curated long-term memory.
26
- - **Only load in the main, private session** (never in group contexts).
27
-
28
- These files live under the workspace (`agents.defaults.workspace`, default
29
- `~/.symi/workspace`). See [Agent workspace](/concepts/agent-workspace) for the full layout.
30
-
31
- ## Memory tools
32
-
33
- Symi exposes two agent-facing tools for these Markdown files:
34
-
35
- - `memory_search` — semantic recall over indexed snippets.
36
- - `memory_get` — targeted read of a specific Markdown file/line range.
37
-
38
- `memory_get` now **degrades gracefully when a file doesn't exist** (for example,
39
- today's daily log before the first write). Both the builtin manager and the QMD
40
- backend return `{ text: "", path }` instead of throwing `ENOENT`, so agents can
41
- handle "nothing recorded yet" and continue their workflow without wrapping the
42
- tool call in try/catch logic.
43
-
44
- ## When to write memory
45
-
46
- - Decisions, preferences, and durable facts go to `MEMORY.md`.
47
- - Day-to-day notes and running context go to `memory/YYYY-MM-DD.md`.
48
- - If someone says "remember this," write it down (do not keep it in RAM).
49
- - This area is still evolving. It helps to remind the model to store memories; it will know what to do.
50
- - If you want something to stick, **ask the bot to write it** into memory.
51
-
52
- ## Automatic memory flush (pre-compaction ping)
53
-
54
- When a session is **close to auto-compaction**, Symi triggers a **silent,
55
- agentic turn** that reminds the model to write durable memory **before** the
56
- context is compacted. The default prompts explicitly say the model _may reply_,
57
- but usually `NO_REPLY` is the correct response so the user never sees this turn.
58
-
59
- This is controlled by `agents.defaults.compaction.memoryFlush`:
60
-
61
- ```json5
62
- {
63
- agents: {
64
- defaults: {
65
- compaction: {
66
- reserveTokensFloor: 20000,
67
- memoryFlush: {
68
- enabled: true,
69
- softThresholdTokens: 4000,
70
- systemPrompt: "Session nearing compaction. Store durable memories now.",
71
- prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.",
72
- },
73
- },
74
- },
75
- },
76
- }
77
- ```
78
-
79
- Details:
80
-
81
- - **Soft threshold**: flush triggers when the session token estimate crosses
82
- `contextWindow - reserveTokensFloor - softThresholdTokens`.
83
- - **Silent** by default: prompts include `NO_REPLY` so nothing is delivered.
84
- - **Two prompts**: a user prompt plus a system prompt append the reminder.
85
- - **One flush per compaction cycle** (tracked in `sessions.json`).
86
- - **Workspace must be writable**: if the session runs sandboxed with
87
- `workspaceAccess: "ro"` or `"none"`, the flush is skipped.
88
-
89
- For the full compaction lifecycle, see
90
- [Session management + compaction](/reference/session-management-compaction).
91
-
92
- ## Vector memory search
93
-
94
- Symi can build a small vector index over `MEMORY.md` and `memory/*.md` so
95
- semantic queries can find related notes even when wording differs.
96
-
97
- Defaults:
98
-
99
- - Enabled by default.
100
- - Watches memory files for changes (debounced).
101
- - Configure memory search under `agents.defaults.memorySearch` (not top-level
102
- `memorySearch`).
103
- - Uses remote embeddings by default. If `memorySearch.provider` is not set, Symi auto-selects:
104
- 1. `local` if a `memorySearch.local.modelPath` is configured and the file exists.
105
- 2. `openai` if an OpenAI key can be resolved.
106
- 3. `gemini` if a Gemini key can be resolved.
107
- 4. `voyage` if a Voyage key can be resolved.
108
- 5. Otherwise memory search stays disabled until configured.
109
- - Local mode uses node-llama-cpp and may require `pnpm approve-builds`.
110
- - Uses sqlite-vec (when available) to accelerate vector search inside SQLite.
111
-
112
- Remote embeddings **require** an API key for the embedding provider. Symi
113
- resolves keys from auth profiles, `models.providers.*.apiKey`, or environment
114
- variables. Codex OAuth only covers chat/completions and does **not** satisfy
115
- embeddings for memory search. For Gemini, use `GEMINI_API_KEY` or
116
- `models.providers.google.apiKey`. For Voyage, use `VOYAGE_API_KEY` or
117
- `models.providers.voyage.apiKey`. When using a custom OpenAI-compatible endpoint,
118
- set `memorySearch.remote.apiKey` (and optional `memorySearch.remote.headers`).
119
-
120
- ### QMD backend (experimental)
121
-
122
- Set `memory.backend = "qmd"` to swap the built-in SQLite indexer for
123
- [QMD](https://github.com/tobi/qmd): a local-first search sidecar that combines
124
- BM25 + vectors + reranking. Markdown stays the source of truth; Symi shells
125
- out to QMD for retrieval. Key points:
126
-
127
- **Prereqs**
128
-
129
- - Disabled by default. Opt in per-config (`memory.backend = "qmd"`).
130
- - Install the QMD CLI separately (`bun install -g https://github.com/tobi/qmd` or grab
131
- a release) and make sure the `qmd` binary is on the gateway’s `PATH`.
132
- - QMD needs an SQLite build that allows extensions (`brew install sqlite` on
133
- macOS).
134
- - QMD runs fully locally via Bun + `node-llama-cpp` and auto-downloads GGUF
135
- models from HuggingFace on first use (no separate Ollama daemon required).
136
- - The gateway runs QMD in a self-contained XDG home under
137
- `~/.symi/agents/<agentId>/qmd/` by setting `XDG_CONFIG_HOME` and
138
- `XDG_CACHE_HOME`.
139
- - OS support: macOS and Linux work out of the box once Bun + SQLite are
140
- installed. Windows is best supported via WSL2.
141
-
142
- **How the sidecar runs**
143
-
144
- - The gateway writes a self-contained QMD home under
145
- `~/.symi/agents/<agentId>/qmd/` (config + cache + sqlite DB).
146
- - Collections are created via `qmd collection add` from `memory.qmd.paths`
147
- (plus default workspace memory files), then `qmd update` + `qmd embed` run
148
- on boot and on a configurable interval (`memory.qmd.update.interval`,
149
- default 5 m).
150
- - The gateway now initializes the QMD manager on startup, so periodic update
151
- timers are armed even before the first `memory_search` call.
152
- - Boot refresh now runs in the background by default so chat startup is not
153
- blocked; set `memory.qmd.update.waitForBootSync = true` to keep the previous
154
- blocking behavior.
155
- - Searches run via `memory.qmd.searchMode` (default `qmd search --json`; also
156
- supports `vsearch` and `query`). If the selected mode rejects flags on your
157
- QMD build, Symi retries with `qmd query`. If QMD fails or the binary is
158
- missing, Symi automatically falls back to the builtin SQLite manager so
159
- memory tools keep working.
160
- - Symi does not expose QMD embed batch-size tuning today; batch behavior is
161
- controlled by QMD itself.
162
- - **First search may be slow**: QMD may download local GGUF models (reranker/query
163
- expansion) on the first `qmd query` run.
164
- - Symi sets `XDG_CONFIG_HOME`/`XDG_CACHE_HOME` automatically when it runs QMD.
165
- - If you want to pre-download models manually (and warm the same index Symi
166
- uses), run a one-off query with the agent’s XDG dirs.
167
-
168
- Symi’s QMD state lives under your **state dir** (defaults to `~/.symi`).
169
- You can point `qmd` at the exact same index by exporting the same XDG vars
170
- Symi uses:
171
-
172
- ```bash
173
- # Pick the same state dir Symi uses
174
- STATE_DIR="${SYMI_STATE_DIR:-$HOME/.symi}"
175
-
176
- export XDG_CONFIG_HOME="$STATE_DIR/agents/main/qmd/xdg-config"
177
- export XDG_CACHE_HOME="$STATE_DIR/agents/main/qmd/xdg-cache"
178
-
179
- # (Optional) force an index refresh + embeddings
180
- qmd update
181
- qmd embed
182
-
183
- # Warm up / trigger first-time model downloads
184
- qmd query "test" -c memory-root --json >/dev/null 2>&1
185
- ```
186
-
187
- **Config surface (`memory.qmd.*`)**
188
-
189
- - `command` (default `qmd`): override the executable path.
190
- - `searchMode` (default `search`): pick which QMD command backs
191
- `memory_search` (`search`, `vsearch`, `query`).
192
- - `includeDefaultMemory` (default `true`): auto-index `MEMORY.md` + `memory/**/*.md`.
193
- - `paths[]`: add extra directories/files (`path`, optional `pattern`, optional
194
- stable `name`).
195
- - `sessions`: opt into session JSONL indexing (`enabled`, `retentionDays`,
196
- `exportDir`).
197
- - `update`: controls refresh cadence and maintenance execution:
198
- (`interval`, `debounceMs`, `onBoot`, `waitForBootSync`, `embedInterval`,
199
- `commandTimeoutMs`, `updateTimeoutMs`, `embedTimeoutMs`).
200
- - `limits`: clamp recall payload (`maxResults`, `maxSnippetChars`,
201
- `maxInjectedChars`, `timeoutMs`).
202
- - `scope`: same schema as [`session.sendPolicy`](/gateway/configuration#session).
203
- Default is DM-only (`deny` all, `allow` direct chats); loosen it to surface QMD
204
- hits in groups/channels.
205
- - `match.keyPrefix` matches the **normalized** session key (lowercased, with any
206
- - `match.rawKeyPrefix` matches the **raw** session key (lowercased), including
207
- - Legacy: `match.keyPrefix: "agent:..."` is still treated as a raw-key prefix,
208
- but prefer `rawKeyPrefix` for clarity.
209
- - When `scope` denies a search, Symi logs a warning with the derived
210
- `channel`/`chatType` so empty results are easier to debug.
211
- - Snippets sourced outside the workspace show up as
212
- `qmd/<collection>/<relative-path>` in `memory_search` results; `memory_get`
213
- understands that prefix and reads from the configured QMD collection root.
214
- - When `memory.qmd.sessions.enabled = true`, Symi exports sanitized session
215
- transcripts (User/Assistant turns) into a dedicated QMD collection under
216
- `~/.symi/agents/<id>/qmd/sessions/`, so `memory_search` can recall recent
217
- conversations without touching the builtin SQLite index.
218
- - `memory_search` snippets now include a `Source: <path#line>` footer when
219
- `memory.citations` is `auto`/`on`; set `memory.citations = "off"` to keep
220
- the path metadata internal (the agent still receives the path for
221
- `memory_get`, but the snippet text omits the footer and the system prompt
222
- warns the agent not to cite it).
223
-
224
- **Example**
225
-
226
- ```json5
227
- memory: {
228
- backend: "qmd",
229
- citations: "auto",
230
- qmd: {
231
- includeDefaultMemory: true,
232
- update: { interval: "5m", debounceMs: 15000 },
233
- limits: { maxResults: 6, timeoutMs: 4000 },
234
- scope: {
235
- default: "deny",
236
- rules: [
237
- { action: "allow", match: { chatType: "direct" } },
238
- // Normalized session-key prefix (strips `agent:<id>:`).
239
- // Raw session-key prefix (includes `agent:<id>:`).
240
- ]
241
- },
242
- paths: [
243
- { name: "docs", path: "~/notes", pattern: "**/*.md" }
244
- ]
245
- }
246
- }
247
- ```
248
-
249
- **Citations & fallback**
250
-
251
- - `memory.citations` applies regardless of backend (`auto`/`on`/`off`).
252
- - When `qmd` runs, we tag `status().backend = "qmd"` so diagnostics show which
253
- engine served the results. If the QMD subprocess exits or JSON output can’t be
254
- parsed, the search manager logs a warning and returns the builtin provider
255
- (existing Markdown embeddings) until QMD recovers.
256
-
257
- ### Additional memory paths
258
-
259
- If you want to index Markdown files outside the default workspace layout, add
260
- explicit paths:
261
-
262
- ```json5
263
- agents: {
264
- defaults: {
265
- memorySearch: {
266
- extraPaths: ["../team-docs", "/srv/shared-notes/overview.md"]
267
- }
268
- }
269
- }
270
- ```
271
-
272
- Notes:
273
-
274
- - Paths can be absolute or workspace-relative.
275
- - Directories are scanned recursively for `.md` files.
276
- - Only Markdown files are indexed.
277
- - Symlinks are ignored (files or directories).
278
-
279
- ### Gemini embeddings (native)
280
-
281
- Set the provider to `gemini` to use the Gemini embeddings API directly:
282
-
283
- ```json5
284
- agents: {
285
- defaults: {
286
- memorySearch: {
287
- provider: "gemini",
288
- model: "gemini-embedding-001",
289
- remote: {
290
- apiKey: "YOUR_GEMINI_API_KEY"
291
- }
292
- }
293
- }
294
- }
295
- ```
296
-
297
- Notes:
298
-
299
- - `remote.baseUrl` is optional (defaults to the Gemini API base URL).
300
- - `remote.headers` lets you add extra headers if needed.
301
- - Default model: `gemini-embedding-001`.
302
-
303
- If you want to use a **custom OpenAI-compatible endpoint** (OpenRouter, vLLM, or a proxy),
304
- you can use the `remote` configuration with the OpenAI provider:
305
-
306
- ```json5
307
- agents: {
308
- defaults: {
309
- memorySearch: {
310
- provider: "openai",
311
- model: "text-embedding-3-small",
312
- remote: {
313
- baseUrl: "https://api.example.com/v1/",
314
- apiKey: "YOUR_OPENAI_COMPAT_API_KEY",
315
- headers: { "X-Custom-Header": "value" }
316
- }
317
- }
318
- }
319
- }
320
- ```
321
-
322
- If you don't want to set an API key, use `memorySearch.provider = "local"` or set
323
- `memorySearch.fallback = "none"`.
324
-
325
- Fallbacks:
326
-
327
- - `memorySearch.fallback` can be `openai`, `gemini`, `local`, or `none`.
328
- - The fallback provider is only used when the primary embedding provider fails.
329
-
330
- Batch indexing (OpenAI + Gemini + Voyage):
331
-
332
- - Disabled by default. Set `agents.defaults.memorySearch.remote.batch.enabled = true` to enable for large-corpus indexing (OpenAI, Gemini, and Voyage).
333
- - Default behavior waits for batch completion; tune `remote.batch.wait`, `remote.batch.pollIntervalMs`, and `remote.batch.timeoutMinutes` if needed.
334
- - Set `remote.batch.concurrency` to control how many batch jobs we submit in parallel (default: 2).
335
- - Batch mode applies when `memorySearch.provider = "openai"` or `"gemini"` and uses the corresponding API key.
336
- - Gemini batch jobs use the async embeddings batch endpoint and require Gemini Batch API availability.
337
-
338
- Why OpenAI batch is fast + cheap:
339
-
340
- - For large backfills, OpenAI is typically the fastest option we support because we can submit many embedding requests in a single batch job and let OpenAI process them asynchronously.
341
- - OpenAI offers discounted pricing for Batch API workloads, so large indexing runs are usually cheaper than sending the same requests synchronously.
342
- - See the OpenAI Batch API docs and pricing for details:
343
- - [https://platform.openai.com/docs/api-reference/batch](https://platform.openai.com/docs/api-reference/batch)
344
- - [https://platform.openai.com/pricing](https://platform.openai.com/pricing)
345
-
346
- Config example:
347
-
348
- ```json5
349
- agents: {
350
- defaults: {
351
- memorySearch: {
352
- provider: "openai",
353
- model: "text-embedding-3-small",
354
- fallback: "openai",
355
- remote: {
356
- batch: { enabled: true, concurrency: 2 }
357
- },
358
- sync: { watch: true }
359
- }
360
- }
361
- }
362
- ```
363
-
364
- Tools:
365
-
366
- - `memory_search` — returns snippets with file + line ranges.
367
- - `memory_get` — read memory file content by path.
368
-
369
- Local mode:
370
-
371
- - Set `agents.defaults.memorySearch.provider = "local"`.
372
- - Provide `agents.defaults.memorySearch.local.modelPath` (GGUF or `hf:` URI).
373
- - Optional: set `agents.defaults.memorySearch.fallback = "none"` to avoid remote fallback.
374
-
375
- ### How the memory tools work
376
-
377
- - `memory_search` semantically searches Markdown chunks (~400 token target, 80-token overlap) from `MEMORY.md` + `memory/**/*.md`. It returns snippet text (capped ~700 chars), file path, line range, score, provider/model, and whether we fell back from local → remote embeddings. No full file payload is returned.
378
- - `memory_get` reads a specific memory Markdown file (workspace-relative), optionally from a starting line and for N lines. Paths outside `MEMORY.md` / `memory/` are rejected.
379
- - Both tools are enabled only when `memorySearch.enabled` resolves true for the agent.
380
-
381
- ### What gets indexed (and when)
382
-
383
- - File type: Markdown only (`MEMORY.md`, `memory/**/*.md`).
384
- - Index storage: per-agent SQLite at `~/.symi/memory/<agentId>.sqlite` (configurable via `agents.defaults.memorySearch.store.path`, supports `{agentId}` token).
385
- - Freshness: watcher on `MEMORY.md` + `memory/` marks the index dirty (debounce 1.5s). Sync is scheduled on session start, on search, or on an interval and runs asynchronously. Session transcripts use delta thresholds to trigger background sync.
386
- - Reindex triggers: the index stores the embedding **provider/model + endpoint fingerprint + chunking params**. If any of those change, Symi automatically resets and reindexes the entire store.
387
-
388
- ### Hybrid search (BM25 + vector)
389
-
390
- When enabled, Symi combines:
391
-
392
- - **Vector similarity** (semantic match, wording can differ)
393
- - **BM25 keyword relevance** (exact tokens like IDs, env vars, code symbols)
394
-
395
- If full-text search is unavailable on your platform, Symi falls back to vector-only search.
396
-
397
- #### Why hybrid?
398
-
399
- Vector search is great at “this means the same thing”:
400
-
401
- - “Mac Studio gateway host” vs “the machine running the gateway”
402
- - “debounce file updates” vs “avoid indexing on every write”
403
-
404
- But it can be weak at exact, high-signal tokens:
405
-
406
- - IDs (`a828e60`, `b3b9895a…`)
407
- - code symbols (`memorySearch.query.hybrid`)
408
- - error strings ("sqlite-vec unavailable")
409
-
410
- BM25 (full-text) is the opposite: strong at exact tokens, weaker at paraphrases.
411
- Hybrid search is the pragmatic middle ground: **use both retrieval signals** so you get
412
- good results for both "natural language" queries and "needle in a haystack" queries.
413
-
414
- #### How we merge results (the current design)
415
-
416
- Implementation sketch:
417
-
418
- 1. Retrieve a candidate pool from both sides:
419
-
420
- - **Vector**: top `maxResults * candidateMultiplier` by cosine similarity.
421
- - **BM25**: top `maxResults * candidateMultiplier` by FTS5 BM25 rank (lower is better).
422
-
423
- 2. Convert BM25 rank into a 0..1-ish score:
424
-
425
- - `textScore = 1 / (1 + max(0, bm25Rank))`
426
-
427
- 3. Union candidates by chunk id and compute a weighted score:
428
-
429
- - `finalScore = vectorWeight * vectorScore + textWeight * textScore`
430
-
431
- Notes:
432
-
433
- - `vectorWeight` + `textWeight` is normalized to 1.0 in config resolution, so weights behave as percentages.
434
- - If embeddings are unavailable (or the provider returns a zero-vector), we still run BM25 and return keyword matches.
435
- - If FTS5 can't be created, we keep vector-only search (no hard failure).
436
-
437
- This isn't "IR-theory perfect", but it's simple, fast, and tends to improve recall/precision on real notes.
438
- If we want to get fancier later, common next steps are Reciprocal Rank Fusion (RRF) or score normalization
439
- (min/max or z-score) before mixing.
440
-
441
- #### Post-processing pipeline
442
-
443
- After merging vector and keyword scores, two optional post-processing stages
444
- refine the result list before it reaches the agent:
445
-
446
- ```
447
- Vector + Keyword → Weighted Merge → Temporal Decay → Sort → MMR → Top-K Results
448
- ```
449
-
450
- Both stages are **off by default** and can be enabled independently.
451
-
452
- #### MMR re-ranking (diversity)
453
-
454
- When hybrid search returns results, multiple chunks may contain similar or overlapping content.
455
- For example, searching for "home network setup" might return five nearly identical snippets
456
- from different daily notes that all mention the same router configuration.
457
-
458
- **MMR (Maximal Marginal Relevance)** re-ranks the results to balance relevance with diversity,
459
- ensuring the top results cover different aspects of the query instead of repeating the same information.
460
-
461
- How it works:
462
-
463
- 1. Results are scored by their original relevance (vector + BM25 weighted score).
464
- 2. MMR iteratively selects results that maximize: `λ × relevance − (1−λ) × max_similarity_to_selected`.
465
- 3. Similarity between results is measured using Jaccard text similarity on tokenized content.
466
-
467
- The `lambda` parameter controls the trade-off:
468
-
469
- - `lambda = 1.0` → pure relevance (no diversity penalty)
470
- - `lambda = 0.0` → maximum diversity (ignores relevance)
471
- - Default: `0.7` (balanced, slight relevance bias)
472
-
473
- **Example — query: "home network setup"**
474
-
475
- Given these memory files:
476
-
477
- ```
478
- memory/2026-02-10.md → "Configured Omada router, set VLAN 10 for IoT devices"
479
- memory/2026-02-08.md → "Configured Omada router, moved IoT to VLAN 10"
480
- memory/2026-02-05.md → "Set up AdGuard DNS on 192.168.10.2"
481
- memory/network.md → "Router: Omada ER605, AdGuard: 192.168.10.2, VLAN 10: IoT"
482
- ```
483
-
484
- Without MMR — top 3 results:
485
-
486
- ```
487
- 1. memory/2026-02-10.md (score: 0.92) ← router + VLAN
488
- 2. memory/2026-02-08.md (score: 0.89) ← router + VLAN (near-duplicate!)
489
- 3. memory/network.md (score: 0.85) ← reference doc
490
- ```
491
-
492
- With MMR (λ=0.7) — top 3 results:
493
-
494
- ```
495
- 1. memory/2026-02-10.md (score: 0.92) ← router + VLAN
496
- 2. memory/network.md (score: 0.85) ← reference doc (diverse!)
497
- 3. memory/2026-02-05.md (score: 0.78) ← AdGuard DNS (diverse!)
498
- ```
499
-
500
- The near-duplicate from Feb 8 drops out, and the agent gets three distinct pieces of information.
501
-
502
- **When to enable:** If you notice `memory_search` returning redundant or near-duplicate snippets,
503
- especially with daily notes that often repeat similar information across days.
504
-
505
- #### Temporal decay (recency boost)
506
-
507
- Agents with daily notes accumulate hundreds of dated files over time. Without decay,
508
- a well-worded note from six months ago can outrank yesterday's update on the same topic.
509
-
510
- **Temporal decay** applies an exponential multiplier to scores based on the age of each result,
511
- so recent memories naturally rank higher while old ones fade:
512
-
513
- ```
514
- decayedScore = score × e^(-λ × ageInDays)
515
- ```
516
-
517
- where `λ = ln(2) / halfLifeDays`.
518
-
519
- With the default half-life of 30 days:
520
-
521
- - Today's notes: **100%** of original score
522
- - 7 days ago: **~84%**
523
- - 30 days ago: **50%**
524
- - 90 days ago: **12.5%**
525
- - 180 days ago: **~1.6%**
526
-
527
- **Evergreen files are never decayed:**
528
-
529
- - `MEMORY.md` (root memory file)
530
- - Non-dated files in `memory/` (e.g., `memory/projects.md`, `memory/network.md`)
531
- - These contain durable reference information that should always rank normally.
532
-
533
- **Dated daily files** (`memory/YYYY-MM-DD.md`) use the date extracted from the filename.
534
- Other sources (e.g., session transcripts) fall back to file modification time (`mtime`).
535
-
536
- **Example — query: "what's Rod's work schedule?"**
537
-
538
- Given these memory files (today is Feb 10):
539
-
540
- ```
541
- memory/2025-09-15.md → "Rod works Mon-Fri, standup at 10am, pairing at 2pm" (148 days old)
542
- memory/2026-02-10.md → "Rod has standup at 14:15, 1:1 with Zeb at 14:45" (today)
543
- memory/2026-02-03.md → "Rod started new team, standup moved to 14:15" (7 days old)
544
- ```
545
-
546
- Without decay:
547
-
548
- ```
549
- 1. memory/2025-09-15.md (score: 0.91) ← best semantic match, but stale!
550
- 2. memory/2026-02-10.md (score: 0.82)
551
- 3. memory/2026-02-03.md (score: 0.80)
552
- ```
553
-
554
- With decay (halfLife=30):
555
-
556
- ```
557
- 1. memory/2026-02-10.md (score: 0.82 × 1.00 = 0.82) ← today, no decay
558
- 2. memory/2026-02-03.md (score: 0.80 × 0.85 = 0.68) ← 7 days, mild decay
559
- 3. memory/2025-09-15.md (score: 0.91 × 0.03 = 0.03) ← 148 days, nearly gone
560
- ```
561
-
562
- The stale September note drops to the bottom despite having the best raw semantic match.
563
-
564
- **When to enable:** If your agent has months of daily notes and you find that old,
565
- stale information outranks recent context. A half-life of 30 days works well for
566
- daily-note-heavy workflows; increase it (e.g., 90 days) if you reference older notes frequently.
567
-
568
- #### Configuration
569
-
570
- Both features are configured under `memorySearch.query.hybrid`:
571
-
572
- ```json5
573
- agents: {
574
- defaults: {
575
- memorySearch: {
576
- query: {
577
- hybrid: {
578
- enabled: true,
579
- vectorWeight: 0.7,
580
- textWeight: 0.3,
581
- candidateMultiplier: 4,
582
- // Diversity: reduce redundant results
583
- mmr: {
584
- enabled: true, // default: false
585
- lambda: 0.7 // 0 = max diversity, 1 = max relevance
586
- },
587
- // Recency: boost newer memories
588
- temporalDecay: {
589
- enabled: true, // default: false
590
- halfLifeDays: 30 // score halves every 30 days
591
- }
592
- }
593
- }
594
- }
595
- }
596
- }
597
- ```
598
-
599
- You can enable either feature independently:
600
-
601
- - **MMR only** — useful when you have many similar notes but age doesn't matter.
602
- - **Temporal decay only** — useful when recency matters but your results are already diverse.
603
- - **Both** — recommended for agents with large, long-running daily note histories.
604
-
605
- ### Embedding cache
606
-
607
- Symi can cache **chunk embeddings** in SQLite so reindexing and frequent updates (especially session transcripts) don't re-embed unchanged text.
608
-
609
- Config:
610
-
611
- ```json5
612
- agents: {
613
- defaults: {
614
- memorySearch: {
615
- cache: {
616
- enabled: true,
617
- maxEntries: 50000
618
- }
619
- }
620
- }
621
- }
622
- ```
623
-
624
- ### Session memory search (experimental)
625
-
626
- You can optionally index **session transcripts** and surface them via `memory_search`.
627
- This is gated behind an experimental flag.
628
-
629
- ```json5
630
- agents: {
631
- defaults: {
632
- memorySearch: {
633
- experimental: { sessionMemory: true },
634
- sources: ["memory", "sessions"]
635
- }
636
- }
637
- }
638
- ```
639
-
640
- Notes:
641
-
642
- - Session indexing is **opt-in** (off by default).
643
- - Session updates are debounced and **indexed asynchronously** once they cross delta thresholds (best-effort).
644
- - `memory_search` never blocks on indexing; results can be slightly stale until background sync finishes.
645
- - Results still include snippets only; `memory_get` remains limited to memory files.
646
- - Session indexing is isolated per agent (only that agent’s session logs are indexed).
647
- - Session logs live on disk (`~/.symi/agents/<agentId>/sessions/*.jsonl`). Any process/user with filesystem access can read them, so treat disk access as the trust boundary. For stricter isolation, run agents under separate OS users or hosts.
648
-
649
- Delta thresholds (defaults shown):
650
-
651
- ```json5
652
- agents: {
653
- defaults: {
654
- memorySearch: {
655
- sync: {
656
- sessions: {
657
- deltaBytes: 100000, // ~100 KB
658
- deltaMessages: 50 // JSONL lines
659
- }
660
- }
661
- }
662
- }
663
- }
664
- ```
665
-
666
- ### SQLite vector acceleration (sqlite-vec)
667
-
668
- When the sqlite-vec extension is available, Symi stores embeddings in a
669
- SQLite virtual table (`vec0`) and performs vector distance queries in the
670
- database. This keeps search fast without loading every embedding into JS.
671
-
672
- Configuration (optional):
673
-
674
- ```json5
675
- agents: {
676
- defaults: {
677
- memorySearch: {
678
- store: {
679
- vector: {
680
- enabled: true,
681
- extensionPath: "/path/to/sqlite-vec"
682
- }
683
- }
684
- }
685
- }
686
- }
687
- ```
688
-
689
- Notes:
690
-
691
- - `enabled` defaults to true; when disabled, search falls back to in-process
692
- cosine similarity over stored embeddings.
693
- - If the sqlite-vec extension is missing or fails to load, Symi logs the
694
- error and continues with the JS fallback (no vector table).
695
- - `extensionPath` overrides the bundled sqlite-vec path (useful for custom builds
696
- or non-standard install locations).
697
-
698
- ### Local embedding auto-download
699
-
700
- - Default local embedding model: `hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf` (~0.6 GB).
701
- - When `memorySearch.provider = "local"`, `node-llama-cpp` resolves `modelPath`; if the GGUF is missing it **auto-downloads** to the cache (or `local.modelCacheDir` if set), then loads it. Downloads resume on retry.
702
- - Native build requirement: run `pnpm approve-builds`, pick `node-llama-cpp`, then `pnpm rebuild node-llama-cpp`.
703
- - Fallback: if local setup fails and `memorySearch.fallback = "openai"`, we automatically switch to remote embeddings (`openai/text-embedding-3-small` unless overridden) and record the reason.
704
-
705
- ### Custom OpenAI-compatible endpoint example
706
-
707
- ```json5
708
- agents: {
709
- defaults: {
710
- memorySearch: {
711
- provider: "openai",
712
- model: "text-embedding-3-small",
713
- remote: {
714
- baseUrl: "https://api.example.com/v1/",
715
- apiKey: "YOUR_REMOTE_API_KEY",
716
- headers: {
717
- "X-Organization": "org-id",
718
- "X-Project": "project-id"
719
- }
720
- }
721
- }
722
- }
723
- }
724
- ```
725
-
726
- Notes:
727
-
728
- - `remote.*` takes precedence over `models.providers.openai.*`.
729
- - `remote.headers` merge with OpenAI headers; remote wins on key conflicts. Omit `remote.headers` to use the OpenAI defaults.