@symerian/symi 3.0.21 → 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.
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/package.json +1 -1
- package/docs/.i18n/README.md +0 -31
- package/docs/.i18n/glossary.ja-JP.json +0 -14
- package/docs/.i18n/glossary.zh-CN.json +0 -210
- package/docs/.i18n/ja-JP.tm.jsonl +0 -0
- package/docs/.i18n/zh-CN.tm.jsonl +0 -1303
- package/docs/CNAME +0 -1
- package/docs/assets/install-script.svg +0 -1
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/pixel-symi.svg +0 -60
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +0 -11
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +0 -13
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith.svg +0 -14
- package/docs/assets/sponsors/openai.svg +0 -3
- package/docs/assets/symi-logo-text-dark.png +0 -0
- package/docs/assets/symi-logo-text.png +0 -0
- package/docs/automation/auth-monitoring.md +0 -44
- package/docs/automation/cron-jobs.md +0 -540
- package/docs/automation/cron-vs-heartbeat.md +0 -286
- package/docs/automation/gmail-pubsub.md +0 -256
- package/docs/automation/hooks.md +0 -998
- package/docs/automation/poll.md +0 -61
- package/docs/automation/troubleshooting.md +0 -122
- package/docs/automation/webhook.md +0 -213
- package/docs/brave-search.md +0 -41
- package/docs/capabilities.md +0 -151
- package/docs/channels/bluebubbles.md +0 -346
- package/docs/channels/broadcast-groups.md +0 -441
- package/docs/channels/channel-routing.md +0 -112
- package/docs/channels/feishu.md +0 -586
- package/docs/channels/googlechat.md +0 -253
- package/docs/channels/grammy.md +0 -31
- package/docs/channels/group-messages.md +0 -82
- package/docs/channels/groups.md +0 -364
- package/docs/channels/imessage.md +0 -366
- package/docs/channels/index.md +0 -46
- package/docs/channels/irc.md +0 -234
- package/docs/channels/line.md +0 -186
- package/docs/channels/location.md +0 -56
- package/docs/channels/matrix.md +0 -300
- package/docs/channels/mattermost.md +0 -158
- package/docs/channels/msteams.md +0 -769
- package/docs/channels/nextcloud-talk.md +0 -138
- package/docs/channels/nostr.md +0 -233
- package/docs/channels/pairing.md +0 -100
- package/docs/channels/signal.md +0 -322
- package/docs/channels/slack.md +0 -510
- package/docs/channels/telegram.md +0 -748
- package/docs/channels/tlon.md +0 -148
- package/docs/channels/troubleshooting.md +0 -110
- package/docs/channels/twitch.md +0 -379
- package/docs/channels/whatsapp.md +0 -444
- package/docs/channels/zalo.md +0 -192
- package/docs/channels/zalouser.md +0 -140
- package/docs/ci.md +0 -50
- package/docs/cli/acp.md +0 -182
- package/docs/cli/agent.md +0 -24
- package/docs/cli/agents.md +0 -75
- package/docs/cli/approvals.md +0 -50
- package/docs/cli/browser.md +0 -107
- package/docs/cli/channels.md +0 -73
- package/docs/cli/config.md +0 -50
- package/docs/cli/configure.md +0 -32
- package/docs/cli/cron.md +0 -44
- package/docs/cli/dashboard.md +0 -16
- package/docs/cli/devices.md +0 -73
- package/docs/cli/directory.md +0 -62
- package/docs/cli/dns.md +0 -23
- package/docs/cli/docs.md +0 -15
- package/docs/cli/doctor.md +0 -41
- package/docs/cli/gateway.md +0 -202
- package/docs/cli/health.md +0 -21
- package/docs/cli/hooks.md +0 -313
- package/docs/cli/index.md +0 -1029
- package/docs/cli/logs.md +0 -28
- package/docs/cli/memory.md +0 -45
- package/docs/cli/message.md +0 -214
- package/docs/cli/models.md +0 -79
- package/docs/cli/node.md +0 -112
- package/docs/cli/nodes.md +0 -73
- package/docs/cli/onboard.md +0 -76
- package/docs/cli/pairing.md +0 -21
- package/docs/cli/plugins.md +0 -92
- package/docs/cli/reset.md +0 -17
- package/docs/cli/sandbox.md +0 -152
- package/docs/cli/security.md +0 -64
- package/docs/cli/sessions.md +0 -16
- package/docs/cli/setup.md +0 -29
- package/docs/cli/skills.md +0 -26
- package/docs/cli/status.md +0 -25
- package/docs/cli/system.md +0 -60
- package/docs/cli/tui.md +0 -23
- package/docs/cli/uninstall.md +0 -17
- package/docs/cli/update.md +0 -98
- package/docs/cli/voicecall.md +0 -34
- package/docs/cli/webhooks.md +0 -25
- package/docs/concepts/agent-loop.md +0 -148
- package/docs/concepts/agent-workspace.md +0 -234
- package/docs/concepts/agent.md +0 -123
- package/docs/concepts/architecture.md +0 -135
- package/docs/concepts/compaction.md +0 -61
- package/docs/concepts/context.md +0 -161
- package/docs/concepts/features.md +0 -51
- package/docs/concepts/markdown-formatting.md +0 -128
- package/docs/concepts/memory.md +0 -729
- package/docs/concepts/messages.md +0 -153
- package/docs/concepts/model-failover.md +0 -149
- package/docs/concepts/model-providers.md +0 -424
- package/docs/concepts/models.md +0 -208
- package/docs/concepts/multi-agent.md +0 -521
- package/docs/concepts/oauth.md +0 -145
- package/docs/concepts/presence.md +0 -102
- package/docs/concepts/queue.md +0 -86
- package/docs/concepts/retry.md +0 -64
- package/docs/concepts/session-pruning.md +0 -123
- package/docs/concepts/session-tool.md +0 -213
- package/docs/concepts/session.md +0 -199
- package/docs/concepts/sessions.md +0 -10
- package/docs/concepts/streaming.md +0 -129
- package/docs/concepts/system-prompt.md +0 -128
- package/docs/concepts/timezone.md +0 -90
- package/docs/concepts/typebox.md +0 -289
- package/docs/concepts/typing-indicators.md +0 -68
- package/docs/concepts/usage-tracking.md +0 -35
- package/docs/date-time.md +0 -127
- package/docs/debug/node-issue.md +0 -85
- package/docs/diagnostics/flags.md +0 -91
- package/docs/docs.json +0 -1849
- package/docs/experiments/onboarding-config-protocol.md +0 -40
- package/docs/experiments/plans/browser-evaluate-cdp-refactor.md +0 -229
- package/docs/experiments/plans/cron-add-hardening.md +0 -62
- package/docs/experiments/plans/group-policy-hardening.md +0 -40
- package/docs/experiments/plans/openresponses-gateway.md +0 -123
- package/docs/experiments/plans/pty-process-supervision.md +0 -192
- package/docs/experiments/plans/session-binding-channel-agnostic.md +0 -202
- package/docs/experiments/plans/thread-bound-subagents.md +0 -281
- package/docs/experiments/proposals/model-config.md +0 -36
- package/docs/experiments/research/memory.md +0 -228
- package/docs/gateway/authentication.md +0 -162
- package/docs/gateway/background-process.md +0 -96
- package/docs/gateway/bonjour.md +0 -177
- package/docs/gateway/bridge-protocol.md +0 -91
- package/docs/gateway/cli-backends.md +0 -225
- package/docs/gateway/configuration-examples.md +0 -610
- package/docs/gateway/configuration-reference.md +0 -2465
- package/docs/gateway/configuration.md +0 -488
- package/docs/gateway/discovery.md +0 -123
- package/docs/gateway/doctor.md +0 -282
- package/docs/gateway/gateway-lock.md +0 -34
- package/docs/gateway/health.md +0 -35
- package/docs/gateway/heartbeat.md +0 -374
- package/docs/gateway/index.md +0 -254
- package/docs/gateway/local-models.md +0 -150
- package/docs/gateway/logging.md +0 -113
- package/docs/gateway/multiple-gateways.md +0 -112
- package/docs/gateway/network-model.md +0 -20
- package/docs/gateway/openai-http-api.md +0 -119
- package/docs/gateway/openresponses-http-api.md +0 -333
- package/docs/gateway/pairing.md +0 -99
- package/docs/gateway/protocol.md +0 -221
- package/docs/gateway/remote-gateway-readme.md +0 -158
- package/docs/gateway/remote.md +0 -131
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -128
- package/docs/gateway/sandboxing.md +0 -203
- package/docs/gateway/security/index.md +0 -931
- package/docs/gateway/tailscale.md +0 -132
- package/docs/gateway/tools-invoke-http-api.md +0 -110
- package/docs/gateway/troubleshooting.md +0 -317
- package/docs/gateway/trusted-proxy-auth.md +0 -270
- package/docs/glass-ui-rendering-invariants.md +0 -451
- package/docs/help/debugging.md +0 -162
- package/docs/help/environment.md +0 -107
- package/docs/help/faq.md +0 -2846
- package/docs/help/index.md +0 -21
- package/docs/help/scripts.md +0 -28
- package/docs/help/testing.md +0 -385
- package/docs/help/troubleshooting.md +0 -264
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/groups-flow.svg +0 -52
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +0 -186
- package/docs/install/ansible.md +0 -207
- package/docs/install/bun.md +0 -59
- package/docs/install/development-channels.md +0 -75
- package/docs/install/docker.md +0 -583
- package/docs/install/exe-dev.md +0 -126
- package/docs/install/fly.md +0 -472
- package/docs/install/gcp.md +0 -499
- package/docs/install/hetzner.md +0 -347
- package/docs/install/index.md +0 -218
- package/docs/install/installer.md +0 -405
- package/docs/install/macos-vm.md +0 -281
- package/docs/install/migrating.md +0 -192
- package/docs/install/nix.md +0 -98
- package/docs/install/node.md +0 -138
- package/docs/install/northflank.mdx +0 -49
- package/docs/install/podman.md +0 -108
- package/docs/install/railway.mdx +0 -95
- package/docs/install/render.mdx +0 -158
- package/docs/install/uninstall.md +0 -128
- package/docs/install/updating.md +0 -231
- package/docs/ja-JP/AGENTS.md +0 -37
- package/docs/ja-JP/index.md +0 -183
- package/docs/ja-JP/start/getting-started.md +0 -125
- package/docs/ja-JP/start/wizard.md +0 -77
- package/docs/logging.md +0 -350
- package/docs/nav-tabs-underline.js +0 -100
- package/docs/network.md +0 -54
- package/docs/nodes/audio.md +0 -133
- package/docs/nodes/camera.md +0 -156
- package/docs/nodes/images.md +0 -72
- package/docs/nodes/index.md +0 -342
- package/docs/nodes/location-command.md +0 -113
- package/docs/nodes/media-understanding.md +0 -379
- package/docs/nodes/talk.md +0 -90
- package/docs/nodes/troubleshooting.md +0 -112
- package/docs/nodes/voicewake.md +0 -65
- package/docs/perplexity.md +0 -80
- package/docs/phase-6.5-pre-flight-audit.md +0 -268
- package/docs/pi-dev.md +0 -70
- package/docs/pi.md +0 -610
- package/docs/platforms/android.md +0 -151
- package/docs/platforms/digitalocean.md +0 -265
- package/docs/platforms/index.md +0 -53
- package/docs/platforms/ios.md +0 -108
- package/docs/platforms/linux.md +0 -94
- package/docs/platforms/mac/bundled-gateway.md +0 -73
- package/docs/platforms/mac/canvas.md +0 -125
- package/docs/platforms/mac/child-process.md +0 -69
- package/docs/platforms/mac/dev-setup.md +0 -104
- package/docs/platforms/mac/health.md +0 -34
- package/docs/platforms/mac/icon.md +0 -31
- package/docs/platforms/mac/logging.md +0 -57
- package/docs/platforms/mac/menu-bar.md +0 -81
- package/docs/platforms/mac/peekaboo.md +0 -65
- package/docs/platforms/mac/permissions.md +0 -50
- package/docs/platforms/mac/release.md +0 -85
- package/docs/platforms/mac/remote.md +0 -84
- package/docs/platforms/mac/signing.md +0 -47
- package/docs/platforms/mac/skills.md +0 -33
- package/docs/platforms/mac/voice-overlay.md +0 -60
- package/docs/platforms/mac/voicewake.md +0 -66
- package/docs/platforms/mac/webchat.md +0 -43
- package/docs/platforms/mac/xpc.md +0 -61
- package/docs/platforms/macos.md +0 -204
- package/docs/platforms/oracle.md +0 -303
- package/docs/platforms/raspberry-pi.md +0 -358
- package/docs/platforms/windows.md +0 -159
- package/docs/plugins/agent-tools.md +0 -99
- package/docs/plugins/community.md +0 -44
- package/docs/plugins/manifest.md +0 -71
- package/docs/plugins/voice-call.md +0 -322
- package/docs/plugins/zalouser.md +0 -81
- package/docs/prose.md +0 -134
- package/docs/providers/anthropic.md +0 -174
- package/docs/providers/bedrock.md +0 -176
- package/docs/providers/claude-max-api-proxy.md +0 -148
- package/docs/providers/cloudflare-ai-gateway.md +0 -71
- package/docs/providers/deepgram.md +0 -93
- package/docs/providers/github-copilot.md +0 -72
- package/docs/providers/glm.md +0 -33
- package/docs/providers/huggingface.md +0 -209
- package/docs/providers/index.md +0 -67
- package/docs/providers/litellm.md +0 -153
- package/docs/providers/minimax.md +0 -208
- package/docs/providers/models.md +0 -52
- package/docs/providers/moonshot.md +0 -142
- package/docs/providers/nvidia.md +0 -55
- package/docs/providers/ollama.md +0 -250
- package/docs/providers/openai.md +0 -62
- package/docs/providers/opencode.md +0 -36
- package/docs/providers/openrouter.md +0 -37
- package/docs/providers/qianfan.md +0 -38
- package/docs/providers/qwen.md +0 -53
- package/docs/providers/synthetic.md +0 -99
- package/docs/providers/together.md +0 -65
- package/docs/providers/venice.md +0 -267
- package/docs/providers/vercel-ai-gateway.md +0 -50
- package/docs/providers/vllm.md +0 -92
- package/docs/providers/xiaomi.md +0 -64
- package/docs/providers/zai.md +0 -38
- package/docs/refactor/exec-host.md +0 -316
- package/docs/refactor/outbound-session-mirroring.md +0 -83
- package/docs/refactor/plugin-sdk.md +0 -214
- package/docs/refactor/strict-config.md +0 -93
- package/docs/refactor/syminet.md +0 -417
- package/docs/reference/AGENTS.default.md +0 -123
- package/docs/reference/RELEASING.md +0 -120
- package/docs/reference/api-usage-costs.md +0 -138
- package/docs/reference/credits.md +0 -28
- package/docs/reference/device-models.md +0 -47
- package/docs/reference/rpc.md +0 -43
- package/docs/reference/session-management-compaction.md +0 -284
- package/docs/reference/test.md +0 -51
- package/docs/reference/token-use.md +0 -136
- package/docs/reference/transcript-hygiene.md +0 -151
- package/docs/reference/wizard.md +0 -265
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -89
- package/docs/security/README.md +0 -16
- package/docs/security/THREAT-MODEL-ATLAS.md +0 -600
- package/docs/security/formal-verification.md +0 -164
- package/docs/start/bootstrapping.md +0 -41
- package/docs/start/docs-directory.md +0 -63
- package/docs/start/getting-started.md +0 -135
- package/docs/start/hubs.md +0 -196
- package/docs/start/lore.md +0 -216
- package/docs/start/onboarding-overview.md +0 -51
- package/docs/start/onboarding.md +0 -81
- package/docs/start/quickstart.md +0 -22
- package/docs/start/setup.md +0 -160
- package/docs/start/showcase.md +0 -414
- package/docs/start/symi.md +0 -211
- package/docs/start/wizard-cli-automation.md +0 -158
- package/docs/start/wizard-cli-reference.md +0 -255
- package/docs/start/wizard.md +0 -109
- package/docs/style.css +0 -37
- package/docs/tools/agent-send.md +0 -52
- package/docs/tools/apply-patch.md +0 -51
- package/docs/tools/browser-linux-troubleshooting.md +0 -139
- package/docs/tools/browser-login.md +0 -67
- package/docs/tools/browser.md +0 -587
- package/docs/tools/chrome-extension.md +0 -183
- package/docs/tools/creating-skills.md +0 -54
- package/docs/tools/elevated.md +0 -55
- package/docs/tools/exec-approvals.md +0 -261
- package/docs/tools/exec.md +0 -184
- package/docs/tools/firecrawl.md +0 -61
- package/docs/tools/index.md +0 -540
- package/docs/tools/llm-task.md +0 -115
- package/docs/tools/loop-detection.md +0 -98
- package/docs/tools/multi-agent-sandbox-tools.md +0 -396
- package/docs/tools/pipeline.md +0 -340
- package/docs/tools/plugin.md +0 -687
- package/docs/tools/reactions.md +0 -21
- package/docs/tools/skills-config.md +0 -76
- package/docs/tools/skills.md +0 -300
- package/docs/tools/slash-commands.md +0 -202
- package/docs/tools/subagents.md +0 -232
- package/docs/tools/symihub.md +0 -256
- package/docs/tools/thinking.md +0 -75
- package/docs/tools/web.md +0 -265
- package/docs/tts.md +0 -398
- package/docs/vps.md +0 -43
- package/docs/web/control-ui.md +0 -247
- package/docs/web/dashboard.md +0 -46
- package/docs/web/index.md +0 -118
- package/docs/web/tui.md +0 -162
- package/docs/web/webchat.md +0 -53
- package/docs/whatsapp-symi-ai-zh.jpg +0 -0
- package/docs/whatsapp-symi.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +0 -59
- package/docs/zh-CN/automation/auth-monitoring.md +0 -47
- package/docs/zh-CN/automation/cron-jobs.md +0 -422
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +0 -286
- package/docs/zh-CN/automation/gmail-pubsub.md +0 -249
- package/docs/zh-CN/automation/hooks.md +0 -881
- package/docs/zh-CN/automation/poll.md +0 -68
- package/docs/zh-CN/automation/troubleshooting.md +0 -8
- package/docs/zh-CN/automation/webhook.md +0 -161
- package/docs/zh-CN/brave-search.md +0 -48
- package/docs/zh-CN/channels/bluebubbles.md +0 -271
- package/docs/zh-CN/channels/broadcast-groups.md +0 -448
- package/docs/zh-CN/channels/channel-routing.md +0 -112
- package/docs/zh-CN/channels/feishu.md +0 -629
- package/docs/zh-CN/channels/googlechat.md +0 -257
- package/docs/zh-CN/channels/grammy.md +0 -38
- package/docs/zh-CN/channels/group-messages.md +0 -89
- package/docs/zh-CN/channels/groups.md +0 -369
- package/docs/zh-CN/channels/imessage.md +0 -300
- package/docs/zh-CN/channels/index.md +0 -52
- package/docs/zh-CN/channels/line.md +0 -180
- package/docs/zh-CN/channels/location.md +0 -63
- package/docs/zh-CN/channels/matrix.md +0 -221
- package/docs/zh-CN/channels/mattermost.md +0 -144
- package/docs/zh-CN/channels/msteams.md +0 -773
- package/docs/zh-CN/channels/nextcloud-talk.md +0 -142
- package/docs/zh-CN/channels/nostr.md +0 -240
- package/docs/zh-CN/channels/pairing.md +0 -86
- package/docs/zh-CN/channels/signal.md +0 -207
- package/docs/zh-CN/channels/slack.md +0 -529
- package/docs/zh-CN/channels/telegram.md +0 -748
- package/docs/zh-CN/channels/tlon.md +0 -136
- package/docs/zh-CN/channels/troubleshooting.md +0 -34
- package/docs/zh-CN/channels/twitch.md +0 -385
- package/docs/zh-CN/channels/whatsapp.md +0 -411
- package/docs/zh-CN/channels/zalo.md +0 -196
- package/docs/zh-CN/channels/zalouser.md +0 -147
- package/docs/zh-CN/cli/acp.md +0 -173
- package/docs/zh-CN/cli/agent.md +0 -30
- package/docs/zh-CN/cli/agents.md +0 -82
- package/docs/zh-CN/cli/approvals.md +0 -57
- package/docs/zh-CN/cli/browser.md +0 -114
- package/docs/zh-CN/cli/channels.md +0 -80
- package/docs/zh-CN/cli/config.md +0 -57
- package/docs/zh-CN/cli/configure.md +0 -37
- package/docs/zh-CN/cli/cron.md +0 -43
- package/docs/zh-CN/cli/dashboard.md +0 -23
- package/docs/zh-CN/cli/devices.md +0 -74
- package/docs/zh-CN/cli/directory.md +0 -69
- package/docs/zh-CN/cli/dns.md +0 -30
- package/docs/zh-CN/cli/docs.md +0 -22
- package/docs/zh-CN/cli/doctor.md +0 -48
- package/docs/zh-CN/cli/gateway.md +0 -206
- package/docs/zh-CN/cli/health.md +0 -28
- package/docs/zh-CN/cli/hooks.md +0 -298
- package/docs/zh-CN/cli/index.md +0 -1025
- package/docs/zh-CN/cli/logs.md +0 -31
- package/docs/zh-CN/cli/memory.md +0 -52
- package/docs/zh-CN/cli/message.md +0 -205
- package/docs/zh-CN/cli/models.md +0 -85
- package/docs/zh-CN/cli/node.md +0 -115
- package/docs/zh-CN/cli/nodes.md +0 -80
- package/docs/zh-CN/cli/onboard.md +0 -36
- package/docs/zh-CN/cli/pairing.md +0 -28
- package/docs/zh-CN/cli/plugins.md +0 -66
- package/docs/zh-CN/cli/reset.md +0 -24
- package/docs/zh-CN/cli/sandbox.md +0 -158
- package/docs/zh-CN/cli/security.md +0 -33
- package/docs/zh-CN/cli/sessions.md +0 -23
- package/docs/zh-CN/cli/setup.md +0 -36
- package/docs/zh-CN/cli/skills.md +0 -33
- package/docs/zh-CN/cli/status.md +0 -32
- package/docs/zh-CN/cli/system.md +0 -63
- package/docs/zh-CN/cli/tui.md +0 -30
- package/docs/zh-CN/cli/uninstall.md +0 -24
- package/docs/zh-CN/cli/update.md +0 -101
- package/docs/zh-CN/cli/voicecall.md +0 -41
- package/docs/zh-CN/cli/webhooks.md +0 -32
- package/docs/zh-CN/concepts/agent-loop.md +0 -146
- package/docs/zh-CN/concepts/agent-workspace.md +0 -219
- package/docs/zh-CN/concepts/agent.md +0 -115
- package/docs/zh-CN/concepts/architecture.md +0 -122
- package/docs/zh-CN/concepts/compaction.md +0 -67
- package/docs/zh-CN/concepts/context.md +0 -168
- package/docs/zh-CN/concepts/features.md +0 -57
- package/docs/zh-CN/concepts/markdown-formatting.md +0 -115
- package/docs/zh-CN/concepts/memory.md +0 -412
- package/docs/zh-CN/concepts/messages.md +0 -140
- package/docs/zh-CN/concepts/model-failover.md +0 -145
- package/docs/zh-CN/concepts/model-providers.md +0 -320
- package/docs/zh-CN/concepts/models.md +0 -196
- package/docs/zh-CN/concepts/multi-agent.md +0 -371
- package/docs/zh-CN/concepts/oauth.md +0 -151
- package/docs/zh-CN/concepts/presence.md +0 -99
- package/docs/zh-CN/concepts/queue.md +0 -91
- package/docs/zh-CN/concepts/retry.md +0 -71
- package/docs/zh-CN/concepts/session-pruning.md +0 -129
- package/docs/zh-CN/concepts/session-tool.md +0 -198
- package/docs/zh-CN/concepts/session.md +0 -158
- package/docs/zh-CN/concepts/sessions.md +0 -17
- package/docs/zh-CN/concepts/streaming.md +0 -131
- package/docs/zh-CN/concepts/system-prompt.md +0 -99
- package/docs/zh-CN/concepts/timezone.md +0 -94
- package/docs/zh-CN/concepts/typebox.md +0 -284
- package/docs/zh-CN/concepts/typing-indicators.md +0 -74
- package/docs/zh-CN/concepts/usage-tracking.md +0 -42
- package/docs/zh-CN/date-time.md +0 -128
- package/docs/zh-CN/debug/node-issue.md +0 -90
- package/docs/zh-CN/diagnostics/flags.md +0 -98
- package/docs/zh-CN/experiments/onboarding-config-protocol.md +0 -47
- package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -69
- package/docs/zh-CN/experiments/plans/group-policy-hardening.md +0 -45
- package/docs/zh-CN/experiments/plans/openresponses-gateway.md +0 -121
- package/docs/zh-CN/experiments/proposals/model-config.md +0 -42
- package/docs/zh-CN/experiments/research/memory.md +0 -235
- package/docs/zh-CN/gateway/authentication.md +0 -142
- package/docs/zh-CN/gateway/background-process.md +0 -100
- package/docs/zh-CN/gateway/bonjour.md +0 -174
- package/docs/zh-CN/gateway/bridge-protocol.md +0 -86
- package/docs/zh-CN/gateway/cli-backends.md +0 -213
- package/docs/zh-CN/gateway/configuration-examples.md +0 -580
- package/docs/zh-CN/gateway/configuration.md +0 -3284
- package/docs/zh-CN/gateway/discovery.md +0 -123
- package/docs/zh-CN/gateway/doctor.md +0 -238
- package/docs/zh-CN/gateway/gateway-lock.md +0 -41
- package/docs/zh-CN/gateway/health.md +0 -42
- package/docs/zh-CN/gateway/heartbeat.md +0 -272
- package/docs/zh-CN/gateway/index.md +0 -335
- package/docs/zh-CN/gateway/local-models.md +0 -157
- package/docs/zh-CN/gateway/logging.md +0 -114
- package/docs/zh-CN/gateway/multiple-gateways.md +0 -119
- package/docs/zh-CN/gateway/network-model.md +0 -23
- package/docs/zh-CN/gateway/openai-http-api.md +0 -125
- package/docs/zh-CN/gateway/openresponses-http-api.md +0 -317
- package/docs/zh-CN/gateway/pairing.md +0 -99
- package/docs/zh-CN/gateway/protocol.md +0 -220
- package/docs/zh-CN/gateway/remote-gateway-readme.md +0 -164
- package/docs/zh-CN/gateway/remote.md +0 -133
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -135
- package/docs/zh-CN/gateway/sandboxing.md +0 -188
- package/docs/zh-CN/gateway/security/index.md +0 -772
- package/docs/zh-CN/gateway/tailscale.md +0 -124
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +0 -92
- package/docs/zh-CN/gateway/troubleshooting.md +0 -758
- package/docs/zh-CN/help/debugging.md +0 -160
- package/docs/zh-CN/help/environment.md +0 -88
- package/docs/zh-CN/help/faq.md +0 -2613
- package/docs/zh-CN/help/index.md +0 -28
- package/docs/zh-CN/help/scripts.md +0 -35
- package/docs/zh-CN/help/testing.md +0 -375
- package/docs/zh-CN/help/troubleshooting.md +0 -104
- package/docs/zh-CN/index.md +0 -183
- package/docs/zh-CN/install/ansible.md +0 -214
- package/docs/zh-CN/install/bun.md +0 -65
- package/docs/zh-CN/install/development-channels.md +0 -81
- package/docs/zh-CN/install/docker.md +0 -525
- package/docs/zh-CN/install/exe-dev.md +0 -127
- package/docs/zh-CN/install/fly.md +0 -476
- package/docs/zh-CN/install/gcp.md +0 -509
- package/docs/zh-CN/install/hetzner.md +0 -336
- package/docs/zh-CN/install/index.md +0 -193
- package/docs/zh-CN/install/installer.md +0 -128
- package/docs/zh-CN/install/macos-vm.md +0 -288
- package/docs/zh-CN/install/migrating.md +0 -199
- package/docs/zh-CN/install/nix.md +0 -99
- package/docs/zh-CN/install/node.md +0 -8
- package/docs/zh-CN/install/northflank.mdx +0 -56
- package/docs/zh-CN/install/railway.mdx +0 -102
- package/docs/zh-CN/install/render.mdx +0 -168
- package/docs/zh-CN/install/uninstall.md +0 -135
- package/docs/zh-CN/install/updating.md +0 -233
- package/docs/zh-CN/logging.md +0 -329
- package/docs/zh-CN/network.md +0 -59
- package/docs/zh-CN/nodes/audio.md +0 -120
- package/docs/zh-CN/nodes/camera.md +0 -162
- package/docs/zh-CN/nodes/images.md +0 -79
- package/docs/zh-CN/nodes/index.md +0 -348
- package/docs/zh-CN/nodes/location-command.md +0 -120
- package/docs/zh-CN/nodes/media-understanding.md +0 -380
- package/docs/zh-CN/nodes/talk.md +0 -97
- package/docs/zh-CN/nodes/troubleshooting.md +0 -8
- package/docs/zh-CN/nodes/voicewake.md +0 -72
- package/docs/zh-CN/perplexity.md +0 -84
- package/docs/zh-CN/pi-dev.md +0 -77
- package/docs/zh-CN/pi.md +0 -617
- package/docs/zh-CN/platforms/android.md +0 -155
- package/docs/zh-CN/platforms/digitalocean.md +0 -268
- package/docs/zh-CN/platforms/index.md +0 -60
- package/docs/zh-CN/platforms/ios.md +0 -114
- package/docs/zh-CN/platforms/linux.md +0 -101
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +0 -75
- package/docs/zh-CN/platforms/mac/canvas.md +0 -128
- package/docs/zh-CN/platforms/mac/child-process.md +0 -73
- package/docs/zh-CN/platforms/mac/dev-setup.md +0 -109
- package/docs/zh-CN/platforms/mac/health.md +0 -41
- package/docs/zh-CN/platforms/mac/icon.md +0 -38
- package/docs/zh-CN/platforms/mac/logging.md +0 -64
- package/docs/zh-CN/platforms/mac/menu-bar.md +0 -88
- package/docs/zh-CN/platforms/mac/peekaboo.md +0 -62
- package/docs/zh-CN/platforms/mac/permissions.md +0 -46
- package/docs/zh-CN/platforms/mac/release.md +0 -92
- package/docs/zh-CN/platforms/mac/remote.md +0 -90
- package/docs/zh-CN/platforms/mac/signing.md +0 -54
- package/docs/zh-CN/platforms/mac/skills.md +0 -40
- package/docs/zh-CN/platforms/mac/voice-overlay.md +0 -67
- package/docs/zh-CN/platforms/mac/voicewake.md +0 -73
- package/docs/zh-CN/platforms/mac/webchat.md +0 -43
- package/docs/zh-CN/platforms/mac/xpc.md +0 -68
- package/docs/zh-CN/platforms/macos.md +0 -193
- package/docs/zh-CN/platforms/oracle.md +0 -310
- package/docs/zh-CN/platforms/raspberry-pi.md +0 -365
- package/docs/zh-CN/platforms/windows.md +0 -156
- package/docs/zh-CN/plugins/agent-tools.md +0 -99
- package/docs/zh-CN/plugins/manifest.md +0 -68
- package/docs/zh-CN/plugins/voice-call.md +0 -250
- package/docs/zh-CN/plugins/zalouser.md +0 -88
- package/docs/zh-CN/prose.md +0 -141
- package/docs/zh-CN/providers/anthropic.md +0 -159
- package/docs/zh-CN/providers/bedrock.md +0 -170
- package/docs/zh-CN/providers/claude-max-api-proxy.md +0 -155
- package/docs/zh-CN/providers/deepgram.md +0 -97
- package/docs/zh-CN/providers/github-copilot.md +0 -67
- package/docs/zh-CN/providers/glm.md +0 -39
- package/docs/zh-CN/providers/index.md +0 -66
- package/docs/zh-CN/providers/minimax.md +0 -206
- package/docs/zh-CN/providers/models.md +0 -55
- package/docs/zh-CN/providers/moonshot.md +0 -145
- package/docs/zh-CN/providers/ollama.md +0 -230
- package/docs/zh-CN/providers/openai.md +0 -68
- package/docs/zh-CN/providers/opencode.md +0 -41
- package/docs/zh-CN/providers/openrouter.md +0 -43
- package/docs/zh-CN/providers/qianfan.md +0 -8
- package/docs/zh-CN/providers/qwen.md +0 -55
- package/docs/zh-CN/providers/synthetic.md +0 -102
- package/docs/zh-CN/providers/venice.md +0 -274
- package/docs/zh-CN/providers/vercel-ai-gateway.md +0 -57
- package/docs/zh-CN/providers/xiaomi.md +0 -68
- package/docs/zh-CN/providers/zai.md +0 -41
- package/docs/zh-CN/refactor/exec-host.md +0 -323
- package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -90
- package/docs/zh-CN/refactor/plugin-sdk.md +0 -221
- package/docs/zh-CN/refactor/strict-config.md +0 -100
- package/docs/zh-CN/refactor/syminet.md +0 -424
- package/docs/zh-CN/reference/AGENTS.default.md +0 -130
- package/docs/zh-CN/reference/RELEASING.md +0 -122
- package/docs/zh-CN/reference/api-usage-costs.md +0 -136
- package/docs/zh-CN/reference/credits.md +0 -34
- package/docs/zh-CN/reference/device-models.md +0 -54
- package/docs/zh-CN/reference/rpc.md +0 -48
- package/docs/zh-CN/reference/session-management-compaction.md +0 -286
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +0 -89
- package/docs/zh-CN/reference/templates/AGENTS.md +0 -234
- package/docs/zh-CN/reference/templates/BOOT.md +0 -17
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +0 -68
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +0 -54
- package/docs/zh-CN/reference/templates/IDENTITY.md +0 -36
- package/docs/zh-CN/reference/templates/SYMICORE.dev.md +0 -83
- package/docs/zh-CN/reference/templates/SYMICORE.md +0 -49
- package/docs/zh-CN/reference/templates/SYMIPULSE.md +0 -69
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +0 -31
- package/docs/zh-CN/reference/templates/TOOLS.md +0 -53
- package/docs/zh-CN/reference/templates/USER.dev.md +0 -25
- package/docs/zh-CN/reference/templates/USER.md +0 -30
- package/docs/zh-CN/reference/test.md +0 -57
- package/docs/zh-CN/reference/token-use.md +0 -119
- package/docs/zh-CN/reference/transcript-hygiene.md +0 -109
- package/docs/zh-CN/reference/wizard.md +0 -9
- package/docs/zh-CN/security/formal-verification.md +0 -171
- package/docs/zh-CN/start/bootstrapping.md +0 -9
- package/docs/zh-CN/start/docs-directory.md +0 -69
- package/docs/zh-CN/start/getting-started.md +0 -201
- package/docs/zh-CN/start/hubs.md +0 -199
- package/docs/zh-CN/start/lore.md +0 -223
- package/docs/zh-CN/start/onboarding.md +0 -105
- package/docs/zh-CN/start/quickstart.md +0 -88
- package/docs/zh-CN/start/setup.md +0 -151
- package/docs/zh-CN/start/showcase.md +0 -421
- package/docs/zh-CN/start/symi.md +0 -244
- package/docs/zh-CN/start/wizard.md +0 -326
- package/docs/zh-CN/tools/agent-send.md +0 -58
- package/docs/zh-CN/tools/apply-patch.md +0 -57
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +0 -144
- package/docs/zh-CN/tools/browser-login.md +0 -75
- package/docs/zh-CN/tools/browser.md +0 -553
- package/docs/zh-CN/tools/chrome-extension.md +0 -183
- package/docs/zh-CN/tools/creating-skills.md +0 -61
- package/docs/zh-CN/tools/elevated.md +0 -62
- package/docs/zh-CN/tools/exec-approvals.md +0 -233
- package/docs/zh-CN/tools/exec.md +0 -169
- package/docs/zh-CN/tools/firecrawl.md +0 -68
- package/docs/zh-CN/tools/index.md +0 -508
- package/docs/zh-CN/tools/llm-task.md +0 -117
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +0 -400
- package/docs/zh-CN/tools/pipeline.md +0 -349
- package/docs/zh-CN/tools/plugin.md +0 -639
- package/docs/zh-CN/tools/reactions.md +0 -28
- package/docs/zh-CN/tools/skills-config.md +0 -78
- package/docs/zh-CN/tools/skills.md +0 -279
- package/docs/zh-CN/tools/slash-commands.md +0 -196
- package/docs/zh-CN/tools/subagents.md +0 -167
- package/docs/zh-CN/tools/symihub.md +0 -209
- package/docs/zh-CN/tools/thinking.md +0 -80
- package/docs/zh-CN/tools/web.md +0 -257
- package/docs/zh-CN/tts.md +0 -373
- package/docs/zh-CN/vps.md +0 -47
- package/docs/zh-CN/web/control-ui.md +0 -190
- package/docs/zh-CN/web/dashboard.md +0 -53
- package/docs/zh-CN/web/index.md +0 -118
- package/docs/zh-CN/web/tui.md +0 -166
- package/docs/zh-CN/web/webchat.md +0 -56
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Research notes: offline memory system for Symi workspaces (Markdown source-of-truth + derived index)"
|
|
3
|
-
read_when:
|
|
4
|
-
- Designing workspace memory (~/.symi/workspace) beyond daily Markdown logs
|
|
5
|
-
- Deciding: standalone CLI vs deep Symi integration
|
|
6
|
-
- Adding offline recall + reflection (retain/recall/reflect)
|
|
7
|
-
title: "Workspace Memory Research"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Workspace Memory v2 (offline): research notes
|
|
11
|
-
|
|
12
|
-
Target: Symi-style workspace (`agents.defaults.workspace`, default `~/.symi/workspace`) where “memory” is stored as one Markdown file per day (`memory/YYYY-MM-DD.md`) plus a small set of stable files (e.g. `memory.md`, `SYMICORE.md`).
|
|
13
|
-
|
|
14
|
-
This doc proposes an **offline-first** memory architecture that keeps Markdown as the canonical, reviewable source of truth, but adds **structured recall** (search, entity summaries, confidence updates) via a derived index.
|
|
15
|
-
|
|
16
|
-
## Why change?
|
|
17
|
-
|
|
18
|
-
The current setup (one file per day) is excellent for:
|
|
19
|
-
|
|
20
|
-
- “append-only” journaling
|
|
21
|
-
- human editing
|
|
22
|
-
- git-backed durability + auditability
|
|
23
|
-
- low-friction capture (“just write it down”)
|
|
24
|
-
|
|
25
|
-
It’s weak for:
|
|
26
|
-
|
|
27
|
-
- high-recall retrieval (“what did we decide about X?”, “last time we tried Y?”)
|
|
28
|
-
- entity-centric answers (“tell me about Alice / The Castle / warelay”) without rereading many files
|
|
29
|
-
- opinion/preference stability (and evidence when it changes)
|
|
30
|
-
- time constraints (“what was true during Nov 2025?”) and conflict resolution
|
|
31
|
-
|
|
32
|
-
## Design goals
|
|
33
|
-
|
|
34
|
-
- **Offline**: works without network; can run on laptop/Castle; no cloud dependency.
|
|
35
|
-
- **Explainable**: retrieved items should be attributable (file + location) and separable from inference.
|
|
36
|
-
- **Low ceremony**: daily logging stays Markdown, no heavy schema work.
|
|
37
|
-
- **Incremental**: v1 is useful with FTS only; semantic/vector and graphs are optional upgrades.
|
|
38
|
-
- **Agent-friendly**: makes “recall within token budgets” easy (return small bundles of facts).
|
|
39
|
-
|
|
40
|
-
## North star model (Hindsight × Letta)
|
|
41
|
-
|
|
42
|
-
Two pieces to blend:
|
|
43
|
-
|
|
44
|
-
1. **Letta/MemGPT-style control loop**
|
|
45
|
-
|
|
46
|
-
- keep a small “core” always in context (persona + key user facts)
|
|
47
|
-
- everything else is out-of-context and retrieved via tools
|
|
48
|
-
- memory writes are explicit tool calls (append/replace/insert), persisted, then re-injected next turn
|
|
49
|
-
|
|
50
|
-
2. **Hindsight-style memory substrate**
|
|
51
|
-
|
|
52
|
-
- separate what’s observed vs what’s believed vs what’s summarized
|
|
53
|
-
- support retain/recall/reflect
|
|
54
|
-
- confidence-bearing opinions that can evolve with evidence
|
|
55
|
-
- entity-aware retrieval + temporal queries (even without full knowledge graphs)
|
|
56
|
-
|
|
57
|
-
## Proposed architecture (Markdown source-of-truth + derived index)
|
|
58
|
-
|
|
59
|
-
### Canonical store (git-friendly)
|
|
60
|
-
|
|
61
|
-
Keep `~/.symi/workspace` as canonical human-readable memory.
|
|
62
|
-
|
|
63
|
-
Suggested workspace layout:
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
~/.symi/workspace/
|
|
67
|
-
memory.md # small: durable facts + preferences (core-ish)
|
|
68
|
-
memory/
|
|
69
|
-
YYYY-MM-DD.md # daily log (append; narrative)
|
|
70
|
-
bank/ # “typed” memory pages (stable, reviewable)
|
|
71
|
-
world.md # objective facts about the world
|
|
72
|
-
experience.md # what the agent did (first-person)
|
|
73
|
-
opinions.md # subjective prefs/judgments + confidence + evidence pointers
|
|
74
|
-
entities/
|
|
75
|
-
Peter.md
|
|
76
|
-
The-Castle.md
|
|
77
|
-
warelay.md
|
|
78
|
-
...
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Notes:
|
|
82
|
-
|
|
83
|
-
- **Daily log stays daily log**. No need to turn it into JSON.
|
|
84
|
-
- The `bank/` files are **curated**, produced by reflection jobs, and can still be edited by hand.
|
|
85
|
-
- `memory.md` remains “small + core-ish”: the things you want Symi to see every session.
|
|
86
|
-
|
|
87
|
-
### Derived store (machine recall)
|
|
88
|
-
|
|
89
|
-
Add a derived index under the workspace (not necessarily git tracked):
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
~/.symi/workspace/.memory/index.sqlite
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Back it with:
|
|
96
|
-
|
|
97
|
-
- SQLite schema for facts + entity links + opinion metadata
|
|
98
|
-
- SQLite **FTS5** for lexical recall (fast, tiny, offline)
|
|
99
|
-
- optional embeddings table for semantic recall (still offline)
|
|
100
|
-
|
|
101
|
-
The index is always **rebuildable from Markdown**.
|
|
102
|
-
|
|
103
|
-
## Retain / Recall / Reflect (operational loop)
|
|
104
|
-
|
|
105
|
-
### Retain: normalize daily logs into “facts”
|
|
106
|
-
|
|
107
|
-
Hindsight’s key insight that matters here: store **narrative, self-contained facts**, not tiny snippets.
|
|
108
|
-
|
|
109
|
-
Practical rule for `memory/YYYY-MM-DD.md`:
|
|
110
|
-
|
|
111
|
-
- at end of day (or during), add a `## Retain` section with 2–5 bullets that are:
|
|
112
|
-
- narrative (cross-turn context preserved)
|
|
113
|
-
- self-contained (standalone makes sense later)
|
|
114
|
-
- tagged with type + entity mentions
|
|
115
|
-
|
|
116
|
-
Example:
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
## Retain
|
|
120
|
-
- W @Peter: Currently in Marrakech (Nov 27–Dec 1, 2025) for Andy’s birthday.
|
|
121
|
-
- B @warelay: I fixed the Baileys WS crash by wrapping connection.update handlers in try/catch (see memory/2025-11-27.md).
|
|
122
|
-
- O(c=0.95) @Peter: Prefers concise replies (<1500 chars) on WhatsApp; long content goes into files.
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Minimal parsing:
|
|
126
|
-
|
|
127
|
-
- Type prefix: `W` (world), `B` (experience/biographical), `O` (opinion), `S` (observation/summary; usually generated)
|
|
128
|
-
- Entities: `@Peter`, `@warelay`, etc (slugs map to `bank/entities/*.md`)
|
|
129
|
-
- Opinion confidence: `O(c=0.0..1.0)` optional
|
|
130
|
-
|
|
131
|
-
If you don’t want authors to think about it: the reflect job can infer these bullets from the rest of the log, but having an explicit `## Retain` section is the easiest “quality lever”.
|
|
132
|
-
|
|
133
|
-
### Recall: queries over the derived index
|
|
134
|
-
|
|
135
|
-
Recall should support:
|
|
136
|
-
|
|
137
|
-
- **lexical**: “find exact terms / names / commands” (FTS5)
|
|
138
|
-
- **entity**: “tell me about X” (entity pages + entity-linked facts)
|
|
139
|
-
- **temporal**: “what happened around Nov 27” / “since last week”
|
|
140
|
-
- **opinion**: “what does Peter prefer?” (with confidence + evidence)
|
|
141
|
-
|
|
142
|
-
Return format should be agent-friendly and cite sources:
|
|
143
|
-
|
|
144
|
-
- `kind` (`world|experience|opinion|observation`)
|
|
145
|
-
- `timestamp` (source day, or extracted time range if present)
|
|
146
|
-
- `entities` (`["Peter","warelay"]`)
|
|
147
|
-
- `content` (the narrative fact)
|
|
148
|
-
- `source` (`memory/2025-11-27.md#L12` etc)
|
|
149
|
-
|
|
150
|
-
### Reflect: produce stable pages + update beliefs
|
|
151
|
-
|
|
152
|
-
Reflection is a scheduled job (daily or heartbeat `ultrathink`) that:
|
|
153
|
-
|
|
154
|
-
- updates `bank/entities/*.md` from recent facts (entity summaries)
|
|
155
|
-
- updates `bank/opinions.md` confidence based on reinforcement/contradiction
|
|
156
|
-
- optionally proposes edits to `memory.md` (“core-ish” durable facts)
|
|
157
|
-
|
|
158
|
-
Opinion evolution (simple, explainable):
|
|
159
|
-
|
|
160
|
-
- each opinion has:
|
|
161
|
-
- statement
|
|
162
|
-
- confidence `c ∈ [0,1]`
|
|
163
|
-
- last_updated
|
|
164
|
-
- evidence links (supporting + contradicting fact IDs)
|
|
165
|
-
- when new facts arrive:
|
|
166
|
-
- find candidate opinions by entity overlap + similarity (FTS first, embeddings later)
|
|
167
|
-
- update confidence by small deltas; big jumps require strong contradiction + repeated evidence
|
|
168
|
-
|
|
169
|
-
## CLI integration: standalone vs deep integration
|
|
170
|
-
|
|
171
|
-
Recommendation: **deep integration in Symi**, but keep a separable core library.
|
|
172
|
-
|
|
173
|
-
### Why integrate into Symi?
|
|
174
|
-
|
|
175
|
-
- Symi already knows:
|
|
176
|
-
- the workspace path (`agents.defaults.workspace`)
|
|
177
|
-
- the session model + heartbeats
|
|
178
|
-
- logging + troubleshooting patterns
|
|
179
|
-
- You want the agent itself to call the tools:
|
|
180
|
-
- `symi memory recall "…" --k 25 --since 30d`
|
|
181
|
-
- `symi memory reflect --since 7d`
|
|
182
|
-
|
|
183
|
-
### Why still split a library?
|
|
184
|
-
|
|
185
|
-
- keep memory logic testable without gateway/runtime
|
|
186
|
-
- reuse from other contexts (local scripts, future desktop app, etc.)
|
|
187
|
-
|
|
188
|
-
Shape:
|
|
189
|
-
The memory tooling is intended to be a small CLI + library layer, but this is exploratory only.
|
|
190
|
-
|
|
191
|
-
## “S-Collide” / SuCo: when to use it (research)
|
|
192
|
-
|
|
193
|
-
If “S-Collide” refers to **SuCo (Subspace Collision)**: it’s an ANN retrieval approach that targets strong recall/latency tradeoffs by using learned/structured collisions in subspaces (paper: arXiv 2411.14754, 2024).
|
|
194
|
-
|
|
195
|
-
Pragmatic take for `~/.symi/workspace`:
|
|
196
|
-
|
|
197
|
-
- **don’t start** with SuCo.
|
|
198
|
-
- start with SQLite FTS + (optional) simple embeddings; you’ll get most UX wins immediately.
|
|
199
|
-
- consider SuCo/HNSW/ScaNN-class solutions only once:
|
|
200
|
-
- corpus is big (tens/hundreds of thousands of chunks)
|
|
201
|
-
- brute-force embedding search becomes too slow
|
|
202
|
-
- recall quality is meaningfully bottlenecked by lexical search
|
|
203
|
-
|
|
204
|
-
Offline-friendly alternatives (in increasing complexity):
|
|
205
|
-
|
|
206
|
-
- SQLite FTS5 + metadata filters (zero ML)
|
|
207
|
-
- Embeddings + brute force (works surprisingly far if chunk count is low)
|
|
208
|
-
- HNSW index (common, robust; needs a library binding)
|
|
209
|
-
- SuCo (research-grade; attractive if there’s a solid implementation you can embed)
|
|
210
|
-
|
|
211
|
-
Open question:
|
|
212
|
-
|
|
213
|
-
- what’s the **best** offline embedding model for “personal assistant memory” on your machines (laptop + desktop)?
|
|
214
|
-
- if you already have Ollama: embed with a local model; otherwise ship a small embedding model in the toolchain.
|
|
215
|
-
|
|
216
|
-
## Smallest useful pilot
|
|
217
|
-
|
|
218
|
-
If you want a minimal, still-useful version:
|
|
219
|
-
|
|
220
|
-
- Add `bank/` entity pages and a `## Retain` section in daily logs.
|
|
221
|
-
- Use SQLite FTS for recall with citations (path + line numbers).
|
|
222
|
-
- Add embeddings only if recall quality or scale demands it.
|
|
223
|
-
|
|
224
|
-
## References
|
|
225
|
-
|
|
226
|
-
- Letta / MemGPT concepts: “core memory blocks” + “archival memory” + tool-driven self-editing memory.
|
|
227
|
-
- Hindsight Technical Report: “retain / recall / reflect”, four-network memory, narrative fact extraction, opinion confidence evolution.
|
|
228
|
-
- SuCo: arXiv 2411.14754 (2024): “Subspace Collision” approximate nearest neighbor retrieval.
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Model authentication: OAuth, API keys, and setup-token"
|
|
3
|
-
read_when:
|
|
4
|
-
- Debugging model auth or OAuth expiry
|
|
5
|
-
- Documenting authentication or credential storage
|
|
6
|
-
title: "Authentication"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Authentication
|
|
10
|
-
|
|
11
|
-
Symi supports OAuth and API keys for model providers. For Anthropic
|
|
12
|
-
accounts, we recommend using an **API key**. For Claude subscription access,
|
|
13
|
-
use the long‑lived token created by `claude setup-token`.
|
|
14
|
-
|
|
15
|
-
See [/concepts/oauth](/concepts/oauth) for the full OAuth flow and storage
|
|
16
|
-
layout.
|
|
17
|
-
|
|
18
|
-
## Recommended Anthropic setup (API key)
|
|
19
|
-
|
|
20
|
-
If you’re using Anthropic directly, use an API key.
|
|
21
|
-
|
|
22
|
-
1. Create an API key in the Anthropic Console.
|
|
23
|
-
2. Put it on the **gateway host** (the machine running `symi gateway`).
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
export ANTHROPIC_API_KEY="..."
|
|
27
|
-
symi models status
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
3. If the Gateway runs under systemd/launchd, prefer putting the key in
|
|
31
|
-
`~/.symi/.env` so the daemon can read it:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
cat >> ~/.symi/.env <<'EOF'
|
|
35
|
-
ANTHROPIC_API_KEY=...
|
|
36
|
-
EOF
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Then restart the daemon (or restart your Gateway process) and re-check:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
symi models status
|
|
43
|
-
symi doctor
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If you’d rather not manage env vars yourself, the onboarding wizard can store
|
|
47
|
-
API keys for daemon use: `symi onboard`.
|
|
48
|
-
|
|
49
|
-
See [Help](/help) for details on env inheritance (`env.shellEnv`,
|
|
50
|
-
`~/.symi/.env`, systemd/launchd).
|
|
51
|
-
|
|
52
|
-
## Anthropic: setup-token (subscription auth)
|
|
53
|
-
|
|
54
|
-
For Anthropic, the recommended path is an **API key**. If you’re using a Claude
|
|
55
|
-
subscription, the setup-token flow is also supported. Run it on the **gateway host**:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
claude setup-token
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Then paste it into Symi:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
symi models auth setup-token --provider anthropic
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
If the token was created on another machine, paste it manually:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
symi models auth paste-token --provider anthropic
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
If you see an Anthropic error like:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
This credential is only authorized for use with Claude Code and cannot be used for other API requests.
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
…use an Anthropic API key instead.
|
|
80
|
-
|
|
81
|
-
Manual token entry (any provider; writes `auth-profiles.json` + updates config):
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
symi models auth paste-token --provider anthropic
|
|
85
|
-
symi models auth paste-token --provider openrouter
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Automation-friendly check (exit `1` when expired/missing, `2` when expiring):
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
symi models status --check
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Optional ops scripts (systemd/Termux) are documented here:
|
|
95
|
-
[/automation/auth-monitoring](/automation/auth-monitoring)
|
|
96
|
-
|
|
97
|
-
> `claude setup-token` requires an interactive TTY.
|
|
98
|
-
|
|
99
|
-
## Checking model auth status
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
symi models status
|
|
103
|
-
symi doctor
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## API key rotation behavior (gateway)
|
|
107
|
-
|
|
108
|
-
Some providers support retrying a request with alternative keys when an API call
|
|
109
|
-
hits a provider rate limit.
|
|
110
|
-
|
|
111
|
-
- Priority order:
|
|
112
|
-
- `SYMI_LIVE_<PROVIDER>_KEY` (single override)
|
|
113
|
-
- `<PROVIDER>_API_KEYS`
|
|
114
|
-
- `<PROVIDER>_API_KEY`
|
|
115
|
-
- `<PROVIDER>_API_KEY_*`
|
|
116
|
-
- Google providers also include `GOOGLE_API_KEY` as an additional fallback.
|
|
117
|
-
- The same key list is deduplicated before use.
|
|
118
|
-
- Symi retries with the next key only for rate-limit errors (for example
|
|
119
|
-
`429`, `rate_limit`, `quota`, `resource exhausted`).
|
|
120
|
-
- Non-rate-limit errors are not retried with alternate keys.
|
|
121
|
-
- If all keys fail, the final error from the last attempt is returned.
|
|
122
|
-
|
|
123
|
-
## Controlling which credential is used
|
|
124
|
-
|
|
125
|
-
### Per-session (chat command)
|
|
126
|
-
|
|
127
|
-
Use `/model <alias-or-id>@<profileId>` to pin a specific provider credential for the current session (example profile ids: `anthropic:default`, `anthropic:work`).
|
|
128
|
-
|
|
129
|
-
Use `/model` (or `/model list`) for a compact picker; use `/model status` for the full view (candidates + next auth profile, plus provider endpoint details when configured).
|
|
130
|
-
|
|
131
|
-
### Per-agent (CLI override)
|
|
132
|
-
|
|
133
|
-
Set an explicit auth profile order override for an agent (stored in that agent’s `auth-profiles.json`):
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
symi models auth order get --provider anthropic
|
|
137
|
-
symi models auth order set --provider anthropic anthropic:default
|
|
138
|
-
symi models auth order clear --provider anthropic
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Use `--agent <id>` to target a specific agent; omit it to use the configured default agent.
|
|
142
|
-
|
|
143
|
-
## Troubleshooting
|
|
144
|
-
|
|
145
|
-
### “No credentials found”
|
|
146
|
-
|
|
147
|
-
If the Anthropic token profile is missing, run `claude setup-token` on the
|
|
148
|
-
**gateway host**, then re-check:
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
symi models status
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Token expiring/expired
|
|
155
|
-
|
|
156
|
-
Run `symi models status` to confirm which profile is expiring. If the profile
|
|
157
|
-
is missing, rerun `claude setup-token` and paste the token again.
|
|
158
|
-
|
|
159
|
-
## Requirements
|
|
160
|
-
|
|
161
|
-
- Claude Max or Pro subscription (for `claude setup-token`)
|
|
162
|
-
- Claude Code CLI installed (`claude` command available)
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Background exec execution and process management"
|
|
3
|
-
read_when:
|
|
4
|
-
- Adding or modifying background exec behavior
|
|
5
|
-
- Debugging long-running exec tasks
|
|
6
|
-
title: "Background Exec and Process Tool"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Background Exec + Process Tool
|
|
10
|
-
|
|
11
|
-
Symi runs shell commands through the `exec` tool and keeps long‑running tasks in memory. The `process` tool manages those background sessions.
|
|
12
|
-
|
|
13
|
-
## exec tool
|
|
14
|
-
|
|
15
|
-
Key parameters:
|
|
16
|
-
|
|
17
|
-
- `command` (required)
|
|
18
|
-
- `yieldMs` (default 10000): auto‑background after this delay
|
|
19
|
-
- `background` (bool): background immediately
|
|
20
|
-
- `timeout` (seconds, default 1800): kill the process after this timeout
|
|
21
|
-
- `elevated` (bool): run on host if elevated mode is enabled/allowed
|
|
22
|
-
- Need a real TTY? Set `pty: true`.
|
|
23
|
-
- `workdir`, `env`
|
|
24
|
-
|
|
25
|
-
Behavior:
|
|
26
|
-
|
|
27
|
-
- Foreground runs return output directly.
|
|
28
|
-
- When backgrounded (explicit or timeout), the tool returns `status: "running"` + `sessionId` and a short tail.
|
|
29
|
-
- Output is kept in memory until the session is polled or cleared.
|
|
30
|
-
- If the `process` tool is disallowed, `exec` runs synchronously and ignores `yieldMs`/`background`.
|
|
31
|
-
|
|
32
|
-
## Child process bridging
|
|
33
|
-
|
|
34
|
-
When spawning long-running child processes outside the exec/process tools (for example, CLI respawns or gateway helpers), attach the child-process bridge helper so termination signals are forwarded and listeners are detached on exit/error. This avoids orphaned processes on systemd and keeps shutdown behavior consistent across platforms.
|
|
35
|
-
|
|
36
|
-
Environment overrides:
|
|
37
|
-
|
|
38
|
-
- `PI_BASH_YIELD_MS`: default yield (ms)
|
|
39
|
-
- `PI_BASH_MAX_OUTPUT_CHARS`: in‑memory output cap (chars)
|
|
40
|
-
- `SYMI_BASH_PENDING_MAX_OUTPUT_CHARS`: pending stdout/stderr cap per stream (chars)
|
|
41
|
-
- `PI_BASH_JOB_TTL_MS`: TTL for finished sessions (ms, bounded to 1m–3h)
|
|
42
|
-
|
|
43
|
-
Config (preferred):
|
|
44
|
-
|
|
45
|
-
- `tools.exec.backgroundMs` (default 10000)
|
|
46
|
-
- `tools.exec.timeoutSec` (default 1800)
|
|
47
|
-
- `tools.exec.cleanupMs` (default 1800000)
|
|
48
|
-
- `tools.exec.notifyOnExit` (default true): enqueue a system event + request heartbeat when a backgrounded exec exits.
|
|
49
|
-
- `tools.exec.notifyOnExitEmptySuccess` (default false): when true, also enqueue completion events for successful backgrounded runs that produced no output.
|
|
50
|
-
|
|
51
|
-
## process tool
|
|
52
|
-
|
|
53
|
-
Actions:
|
|
54
|
-
|
|
55
|
-
- `list`: running + finished sessions
|
|
56
|
-
- `poll`: drain new output for a session (also reports exit status)
|
|
57
|
-
- `log`: read the aggregated output (supports `offset` + `limit`)
|
|
58
|
-
- `write`: send stdin (`data`, optional `eof`)
|
|
59
|
-
- `kill`: terminate a background session
|
|
60
|
-
- `clear`: remove a finished session from memory
|
|
61
|
-
- `remove`: kill if running, otherwise clear if finished
|
|
62
|
-
|
|
63
|
-
Notes:
|
|
64
|
-
|
|
65
|
-
- Only backgrounded sessions are listed/persisted in memory.
|
|
66
|
-
- Sessions are lost on process restart (no disk persistence).
|
|
67
|
-
- Session logs are only saved to chat history if you run `process poll/log` and the tool result is recorded.
|
|
68
|
-
- `process` is scoped per agent; it only sees sessions started by that agent.
|
|
69
|
-
- `process list` includes a derived `name` (command verb + target) for quick scans.
|
|
70
|
-
- `process log` uses line-based `offset`/`limit`.
|
|
71
|
-
- When both `offset` and `limit` are omitted, it returns the last 200 lines and includes a paging hint.
|
|
72
|
-
- When `offset` is provided and `limit` is omitted, it returns from `offset` to the end (not capped to 200).
|
|
73
|
-
|
|
74
|
-
## Examples
|
|
75
|
-
|
|
76
|
-
Run a long task and poll later:
|
|
77
|
-
|
|
78
|
-
```json
|
|
79
|
-
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
```json
|
|
83
|
-
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Start immediately in background:
|
|
87
|
-
|
|
88
|
-
```json
|
|
89
|
-
{ "tool": "exec", "command": "npm run build", "background": true }
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Send stdin:
|
|
93
|
-
|
|
94
|
-
```json
|
|
95
|
-
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }
|
|
96
|
-
```
|
package/docs/gateway/bonjour.md
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Bonjour/mDNS discovery + debugging (Gateway beacons, clients, and common failure modes)"
|
|
3
|
-
read_when:
|
|
4
|
-
- Debugging Bonjour discovery issues on macOS/iOS
|
|
5
|
-
- Changing mDNS service types, TXT records, or discovery UX
|
|
6
|
-
title: "Bonjour Discovery"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Bonjour / mDNS discovery
|
|
10
|
-
|
|
11
|
-
Symi uses Bonjour (mDNS / DNS‑SD) as a **LAN‑only convenience** to discover
|
|
12
|
-
an active Gateway (WebSocket endpoint). It is best‑effort and does **not** replace SSH or
|
|
13
|
-
Tailnet-based connectivity.
|
|
14
|
-
|
|
15
|
-
## Wide‑area Bonjour (Unicast DNS‑SD) over Tailscale
|
|
16
|
-
|
|
17
|
-
If the node and gateway are on different networks, multicast mDNS won’t cross the
|
|
18
|
-
boundary. You can keep the same discovery UX by switching to **unicast DNS‑SD**
|
|
19
|
-
("Wide‑Area Bonjour") over Tailscale.
|
|
20
|
-
|
|
21
|
-
High‑level steps:
|
|
22
|
-
|
|
23
|
-
1. Run a DNS server on the gateway host (reachable over Tailnet).
|
|
24
|
-
2. Publish DNS‑SD records for `_symi-gw._tcp` under a dedicated zone
|
|
25
|
-
(example: `symi.internal.`).
|
|
26
|
-
3. Configure Tailscale **split DNS** so your chosen domain resolves via that
|
|
27
|
-
DNS server for clients (including iOS).
|
|
28
|
-
|
|
29
|
-
Symi supports any discovery domain; `symi.internal.` is just an example.
|
|
30
|
-
iOS/Android nodes browse both `local.` and your configured wide‑area domain.
|
|
31
|
-
|
|
32
|
-
### Gateway config (recommended)
|
|
33
|
-
|
|
34
|
-
```json5
|
|
35
|
-
{
|
|
36
|
-
gateway: { bind: "tailnet" }, // tailnet-only (recommended)
|
|
37
|
-
discovery: { wideArea: { enabled: true } }, // enables wide-area DNS-SD publishing
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### One‑time DNS server setup (gateway host)
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
symi dns setup --apply
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
This installs CoreDNS and configures it to:
|
|
48
|
-
|
|
49
|
-
- listen on port 53 only on the gateway’s Tailscale interfaces
|
|
50
|
-
- serve your chosen domain (example: `symi.internal.`) from `~/.symi/dns/<domain>.db`
|
|
51
|
-
|
|
52
|
-
Validate from a tailnet‑connected machine:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
dns-sd -B _symi-gw._tcp symi.internal.
|
|
56
|
-
dig @<TAILNET_IPV4> -p 53 _symi-gw._tcp.symi.internal PTR +short
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Tailscale DNS settings
|
|
60
|
-
|
|
61
|
-
In the Tailscale admin console:
|
|
62
|
-
|
|
63
|
-
- Add a nameserver pointing at the gateway’s tailnet IP (UDP/TCP 53).
|
|
64
|
-
- Add split DNS so your discovery domain uses that nameserver.
|
|
65
|
-
|
|
66
|
-
Once clients accept tailnet DNS, iOS nodes can browse
|
|
67
|
-
`_symi-gw._tcp` in your discovery domain without multicast.
|
|
68
|
-
|
|
69
|
-
### Gateway listener security (recommended)
|
|
70
|
-
|
|
71
|
-
The Gateway WS port (default `18789`) binds to loopback by default. For LAN/tailnet
|
|
72
|
-
access, bind explicitly and keep auth enabled.
|
|
73
|
-
|
|
74
|
-
For tailnet‑only setups:
|
|
75
|
-
|
|
76
|
-
- Set `gateway.bind: "tailnet"` in `~/.symi/symi.json`.
|
|
77
|
-
- Restart the Gateway (or restart the macOS menubar app).
|
|
78
|
-
|
|
79
|
-
## What advertises
|
|
80
|
-
|
|
81
|
-
Only the Gateway advertises `_symi-gw._tcp`.
|
|
82
|
-
|
|
83
|
-
## Service types
|
|
84
|
-
|
|
85
|
-
- `_symi-gw._tcp` — gateway transport beacon (used by macOS/iOS/Android nodes).
|
|
86
|
-
|
|
87
|
-
## TXT keys (non‑secret hints)
|
|
88
|
-
|
|
89
|
-
The Gateway advertises small non‑secret hints to make UI flows convenient:
|
|
90
|
-
|
|
91
|
-
- `role=gateway`
|
|
92
|
-
- `displayName=<friendly name>`
|
|
93
|
-
- `lanHost=<hostname>.local`
|
|
94
|
-
- `gatewayPort=<port>` (Gateway WS + HTTP)
|
|
95
|
-
- `gatewayTls=1` (only when TLS is enabled)
|
|
96
|
-
- `gatewayTlsSha256=<sha256>` (only when TLS is enabled and fingerprint is available)
|
|
97
|
-
- `canvasPort=<port>` (only when the canvas host is enabled; currently the same as `gatewayPort`)
|
|
98
|
-
- `sshPort=<port>` (defaults to 22 when not overridden)
|
|
99
|
-
- `transport=gateway`
|
|
100
|
-
- `cliPath=<path>` (optional; absolute path to a runnable `symi` entrypoint)
|
|
101
|
-
- `tailnetDns=<magicdns>` (optional hint when Tailnet is available)
|
|
102
|
-
|
|
103
|
-
Security notes:
|
|
104
|
-
|
|
105
|
-
- Bonjour/mDNS TXT records are **unauthenticated**. Clients must not treat TXT as authoritative routing.
|
|
106
|
-
- Clients should route using the resolved service endpoint (SRV + A/AAAA). Treat `lanHost`, `tailnetDns`, `gatewayPort`, and `gatewayTlsSha256` as hints only.
|
|
107
|
-
- TLS pinning must never allow an advertised `gatewayTlsSha256` to override a previously stored pin.
|
|
108
|
-
- iOS/Android nodes should treat discovery-based direct connects as **TLS-only** and require explicit user confirmation before trusting a first-time fingerprint.
|
|
109
|
-
|
|
110
|
-
## Debugging on macOS
|
|
111
|
-
|
|
112
|
-
Useful built‑in tools:
|
|
113
|
-
|
|
114
|
-
- Browse instances:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
dns-sd -B _symi-gw._tcp local.
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
- Resolve one instance (replace `<instance>`):
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
dns-sd -L "<instance>" _symi-gw._tcp local.
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
If browsing works but resolving fails, you’re usually hitting a LAN policy or
|
|
127
|
-
mDNS resolver issue.
|
|
128
|
-
|
|
129
|
-
## Debugging in Gateway logs
|
|
130
|
-
|
|
131
|
-
The Gateway writes a rolling log file (printed on startup as
|
|
132
|
-
`gateway log file: ...`). Look for `bonjour:` lines, especially:
|
|
133
|
-
|
|
134
|
-
- `bonjour: advertise failed ...`
|
|
135
|
-
- `bonjour: ... name conflict resolved` / `hostname conflict resolved`
|
|
136
|
-
- `bonjour: watchdog detected non-announced service ...`
|
|
137
|
-
|
|
138
|
-
## Debugging on iOS node
|
|
139
|
-
|
|
140
|
-
The iOS node uses `NWBrowser` to discover `_symi-gw._tcp`.
|
|
141
|
-
|
|
142
|
-
To capture logs:
|
|
143
|
-
|
|
144
|
-
- Settings → Gateway → Advanced → **Discovery Debug Logs**
|
|
145
|
-
- Settings → Gateway → Advanced → **Discovery Logs** → reproduce → **Copy**
|
|
146
|
-
|
|
147
|
-
The log includes browser state transitions and result‑set changes.
|
|
148
|
-
|
|
149
|
-
## Common failure modes
|
|
150
|
-
|
|
151
|
-
- **Bonjour doesn’t cross networks**: use Tailnet or SSH.
|
|
152
|
-
- **Multicast blocked**: some Wi‑Fi networks disable mDNS.
|
|
153
|
-
- **Sleep / interface churn**: macOS may temporarily drop mDNS results; retry.
|
|
154
|
-
- **Browse works but resolve fails**: keep machine names simple (avoid emojis or
|
|
155
|
-
punctuation), then restart the Gateway. The service instance name derives from
|
|
156
|
-
the host name, so overly complex names can confuse some resolvers.
|
|
157
|
-
|
|
158
|
-
## Escaped instance names (`\032`)
|
|
159
|
-
|
|
160
|
-
Bonjour/DNS‑SD often escapes bytes in service instance names as decimal `\DDD`
|
|
161
|
-
sequences (e.g. spaces become `\032`).
|
|
162
|
-
|
|
163
|
-
- This is normal at the protocol level.
|
|
164
|
-
- UIs should decode for display (iOS uses `BonjourEscapes.decode`).
|
|
165
|
-
|
|
166
|
-
## Disabling / configuration
|
|
167
|
-
|
|
168
|
-
- `SYMI_DISABLE_BONJOUR=1` disables advertising (legacy: `SYMI_DISABLE_BONJOUR`).
|
|
169
|
-
- `gateway.bind` in `~/.symi/symi.json` controls the Gateway bind mode.
|
|
170
|
-
- `SYMI_SSH_PORT` overrides the SSH port advertised in TXT (legacy: `SYMI_SSH_PORT`).
|
|
171
|
-
- `SYMI_TAILNET_DNS` publishes a MagicDNS hint in TXT (legacy: `SYMI_TAILNET_DNS`).
|
|
172
|
-
- `SYMI_CLI_PATH` overrides the advertised CLI path (legacy: `SYMI_CLI_PATH`).
|
|
173
|
-
|
|
174
|
-
## Related docs
|
|
175
|
-
|
|
176
|
-
- Discovery policy and transport selection: [Discovery](/gateway/discovery)
|
|
177
|
-
- Node pairing + approvals: [Gateway pairing](/gateway/pairing)
|