@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.
- package/dist/{audio-preflight-BaCdNfrk.js → audio-preflight-D7BVT-ls.js} +4 -4
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-UfmVM0xR.js → chrome-B5CO2vB5.js} +7 -7
- package/dist/{deliver-BqXdac6W.js → deliver-CrwjsDwv.js} +1 -1
- package/dist/extensionAPI.js +7 -7
- package/dist/{image-DIWsXYcW.js → image-Csu7WcLW.js} +1 -1
- package/dist/{manager-DW3SxcPr.js → manager-BkkVjTO8.js} +1 -1
- package/dist/{pi-embedded-BNch0U5F.js → pi-embedded-Dhp64z5l.js} +16 -16
- package/dist/{pi-embedded-helpers-IkHl02JF.js → pi-embedded-helpers-840E4hop.js} +4 -4
- package/dist/{pw-ai-nMkA-oDJ.js → pw-ai-CBgJf_RR.js} +1 -1
- package/dist/{runner-DNEC58JI.js → runner-BbFKo1ne.js} +1 -1
- package/dist/{synthesis-BWAr0sZ9.js → synthesis-DoEM0E8_.js} +7 -7
- package/dist/{web-7a-m_UxL.js → web-BYXJn-Ps.js} +7 -7
- 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
- package/extensions/imessage/index.ts +0 -17
- package/extensions/imessage/node_modules/.bin/symi +0 -21
- package/extensions/imessage/package.json +0 -15
- package/extensions/imessage/src/channel.outbound.test.ts +0 -66
- package/extensions/imessage/src/channel.ts +0 -298
- package/extensions/imessage/src/runtime.ts +0 -14
- package/extensions/imessage/symi.plugin.json +0 -9
- package/extensions/line/index.ts +0 -19
- package/extensions/line/node_modules/.bin/symi +0 -21
- package/extensions/line/package.json +0 -30
- package/extensions/line/src/card-command.ts +0 -344
- package/extensions/line/src/channel.logout.test.ts +0 -133
- package/extensions/line/src/channel.sendPayload.test.ts +0 -312
- package/extensions/line/src/channel.startup.test.ts +0 -133
- package/extensions/line/src/channel.ts +0 -801
- package/extensions/line/src/runtime.ts +0 -14
- package/extensions/line/symi.plugin.json +0 -9
- package/extensions/signal/index.ts +0 -17
- package/extensions/signal/node_modules/.bin/symi +0 -21
- package/extensions/signal/package.json +0 -15
- package/extensions/signal/src/channel.ts +0 -302
- package/extensions/signal/src/runtime.ts +0 -14
- package/extensions/signal/symi.plugin.json +0 -9
- package/extensions/telegram/index.ts +0 -17
- package/extensions/telegram/node_modules/.bin/symi +0 -21
- package/extensions/telegram/package.json +0 -15
- package/extensions/telegram/src/channel.test.ts +0 -125
- package/extensions/telegram/src/channel.ts +0 -560
- package/extensions/telegram/src/runtime.ts +0 -14
- package/extensions/telegram/symi.plugin.json +0 -9
- package/extensions/whatsapp/index.ts +0 -17
- package/extensions/whatsapp/node_modules/.bin/symi +0 -21
- package/extensions/whatsapp/package.json +0 -15
- package/extensions/whatsapp/src/channel.ts +0 -465
- package/extensions/whatsapp/src/resolve-target.test.ts +0 -170
- package/extensions/whatsapp/src/runtime.ts +0 -14
- package/extensions/whatsapp/symi.plugin.json +0 -9
|
@@ -1,488 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Configuration overview: common tasks, quick setup, and links to the full reference"
|
|
3
|
-
read_when:
|
|
4
|
-
- Setting up Symi for the first time
|
|
5
|
-
- Looking for common configuration patterns
|
|
6
|
-
- Navigating to specific config sections
|
|
7
|
-
title: "Configuration"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Configuration
|
|
11
|
-
|
|
12
|
-
Symi reads an optional <Tooltip tip="JSON5 supports comments and trailing commas">**JSON5**</Tooltip> config from `~/.symi/symi.json`.
|
|
13
|
-
|
|
14
|
-
If the file is missing, Symi uses safe defaults. Common reasons to add a config:
|
|
15
|
-
|
|
16
|
-
- Connect channels and control who can message the bot
|
|
17
|
-
- Set models, tools, sandboxing, or automation (cron, hooks)
|
|
18
|
-
- Tune sessions, media, networking, or UI
|
|
19
|
-
|
|
20
|
-
See the [full reference](/gateway/configuration-reference) for every available field.
|
|
21
|
-
|
|
22
|
-
<Tip>
|
|
23
|
-
**New to configuration?** Start with `symi onboard` for interactive setup, or check out the [Configuration Examples](/gateway/configuration-examples) guide for complete copy-paste configs.
|
|
24
|
-
</Tip>
|
|
25
|
-
|
|
26
|
-
## Minimal config
|
|
27
|
-
|
|
28
|
-
```json5
|
|
29
|
-
// ~/.symi/symi.json
|
|
30
|
-
{
|
|
31
|
-
agents: { defaults: { workspace: "~/.symi/workspace" } },
|
|
32
|
-
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Editing config
|
|
37
|
-
|
|
38
|
-
<Tabs>
|
|
39
|
-
<Tab title="Interactive wizard">
|
|
40
|
-
```bash
|
|
41
|
-
symi onboard # full setup wizard
|
|
42
|
-
symi configure # config wizard
|
|
43
|
-
```
|
|
44
|
-
</Tab>
|
|
45
|
-
<Tab title="CLI (one-liners)">
|
|
46
|
-
```bash
|
|
47
|
-
symi config get agents.defaults.workspace
|
|
48
|
-
symi config set agents.defaults.heartbeat.every "2h"
|
|
49
|
-
symi config unset tools.web.search.apiKey
|
|
50
|
-
```
|
|
51
|
-
</Tab>
|
|
52
|
-
<Tab title="Control UI">
|
|
53
|
-
Open [http://127.0.0.1:18789](http://127.0.0.1:18789) and use the **Config** tab.
|
|
54
|
-
The Control UI renders a form from the config schema, with a **Raw JSON** editor as an escape hatch.
|
|
55
|
-
</Tab>
|
|
56
|
-
<Tab title="Direct edit">
|
|
57
|
-
Edit `~/.symi/symi.json` directly. The Gateway watches the file and applies changes automatically (see [hot reload](#config-hot-reload)).
|
|
58
|
-
</Tab>
|
|
59
|
-
</Tabs>
|
|
60
|
-
|
|
61
|
-
## Strict validation
|
|
62
|
-
|
|
63
|
-
<Warning>
|
|
64
|
-
Symi only accepts configurations that fully match the schema. Unknown keys, malformed types, or invalid values cause the Gateway to **refuse to start**. The only root-level exception is `$schema` (string), so editors can attach JSON Schema metadata.
|
|
65
|
-
</Warning>
|
|
66
|
-
|
|
67
|
-
When validation fails:
|
|
68
|
-
|
|
69
|
-
- The Gateway does not boot
|
|
70
|
-
- Only diagnostic commands work (`symi doctor`, `symi logs`, `symi health`, `symi status`)
|
|
71
|
-
- Run `symi doctor` to see exact issues
|
|
72
|
-
- Run `symi doctor --fix` (or `--yes`) to apply repairs
|
|
73
|
-
|
|
74
|
-
## Common tasks
|
|
75
|
-
|
|
76
|
-
<AccordionGroup>
|
|
77
|
-
Each channel has its own config section under `channels.<provider>`. See the dedicated channel page for setup steps:
|
|
78
|
-
|
|
79
|
-
- [WhatsApp](/channels/whatsapp) — `channels.whatsapp`
|
|
80
|
-
- [Telegram](/channels/telegram) — `channels.telegram`
|
|
81
|
-
- [Slack](/channels/slack) — `channels.slack`
|
|
82
|
-
- [Signal](/channels/signal) — `channels.signal`
|
|
83
|
-
- [iMessage](/channels/imessage) — `channels.imessage`
|
|
84
|
-
- [Google Chat](/channels/googlechat) — `channels.googlechat`
|
|
85
|
-
- [Mattermost](/channels/mattermost) — `channels.mattermost`
|
|
86
|
-
- [MS Teams](/channels/msteams) — `channels.msteams`
|
|
87
|
-
|
|
88
|
-
All channels share the same DM policy pattern:
|
|
89
|
-
|
|
90
|
-
```json5
|
|
91
|
-
{
|
|
92
|
-
channels: {
|
|
93
|
-
telegram: {
|
|
94
|
-
enabled: true,
|
|
95
|
-
botToken: "123:abc",
|
|
96
|
-
dmPolicy: "pairing", // pairing | allowlist | open | disabled
|
|
97
|
-
allowFrom: ["tg:123"], // only for allowlist/open
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
</Accordion>
|
|
104
|
-
|
|
105
|
-
<Accordion title="Choose and configure models">
|
|
106
|
-
Set the primary model and optional fallbacks:
|
|
107
|
-
|
|
108
|
-
```json5
|
|
109
|
-
{
|
|
110
|
-
agents: {
|
|
111
|
-
defaults: {
|
|
112
|
-
model: {
|
|
113
|
-
primary: "anthropic/claude-sonnet-4-5",
|
|
114
|
-
fallbacks: ["openai/gpt-5.2"],
|
|
115
|
-
},
|
|
116
|
-
models: {
|
|
117
|
-
"anthropic/claude-sonnet-4-5": { alias: "Sonnet" },
|
|
118
|
-
"openai/gpt-5.2": { alias: "GPT" },
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
- `agents.defaults.models` defines the model catalog and acts as the allowlist for `/model`.
|
|
126
|
-
- Model refs use `provider/model` format (e.g. `anthropic/claude-opus-4-6`).
|
|
127
|
-
- `agents.defaults.imageMaxDimensionPx` controls transcript/tool image downscaling (default `1200`); lower values usually reduce vision-token usage on screenshot-heavy runs.
|
|
128
|
-
- See [Models CLI](/concepts/models) for switching models in chat and [Model Failover](/concepts/model-failover) for auth rotation and fallback behavior.
|
|
129
|
-
- For custom/self-hosted providers, see [Custom providers](/gateway/configuration-reference#custom-providers-and-base-urls) in the reference.
|
|
130
|
-
|
|
131
|
-
</Accordion>
|
|
132
|
-
|
|
133
|
-
<Accordion title="Control who can message the bot">
|
|
134
|
-
DM access is controlled per channel via `dmPolicy`:
|
|
135
|
-
|
|
136
|
-
- `"pairing"` (default): unknown senders get a one-time pairing code to approve
|
|
137
|
-
- `"allowlist"`: only senders in `allowFrom` (or the paired allow store)
|
|
138
|
-
- `"open"`: allow all inbound DMs (requires `allowFrom: ["*"]`)
|
|
139
|
-
- `"disabled"`: ignore all DMs
|
|
140
|
-
|
|
141
|
-
For groups, use `groupPolicy` + `groupAllowFrom` or channel-specific allowlists.
|
|
142
|
-
|
|
143
|
-
See the [full reference](/gateway/configuration-reference#dm-and-group-access) for per-channel details.
|
|
144
|
-
|
|
145
|
-
</Accordion>
|
|
146
|
-
|
|
147
|
-
<Accordion title="Set up group chat mention gating">
|
|
148
|
-
Group messages default to **require mention**. Configure patterns per agent:
|
|
149
|
-
|
|
150
|
-
```json5
|
|
151
|
-
{
|
|
152
|
-
agents: {
|
|
153
|
-
list: [
|
|
154
|
-
{
|
|
155
|
-
id: "main",
|
|
156
|
-
groupChat: {
|
|
157
|
-
mentionPatterns: ["@symi", "symi"],
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
},
|
|
162
|
-
channels: {
|
|
163
|
-
whatsapp: {
|
|
164
|
-
groups: { "*": { requireMention: true } },
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
- **Metadata mentions**: native @-mentions (WhatsApp tap-to-mention, Telegram @bot, etc.)
|
|
171
|
-
- **Text patterns**: regex patterns in `mentionPatterns`
|
|
172
|
-
- See [full reference](/gateway/configuration-reference#group-chat-mention-gating) for per-channel overrides and self-chat mode.
|
|
173
|
-
|
|
174
|
-
</Accordion>
|
|
175
|
-
|
|
176
|
-
<Accordion title="Configure sessions and resets">
|
|
177
|
-
Sessions control conversation continuity and isolation:
|
|
178
|
-
|
|
179
|
-
```json5
|
|
180
|
-
{
|
|
181
|
-
session: {
|
|
182
|
-
dmScope: "per-channel-peer", // recommended for multi-user
|
|
183
|
-
reset: {
|
|
184
|
-
mode: "daily",
|
|
185
|
-
atHour: 4,
|
|
186
|
-
idleMinutes: 120,
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
- `dmScope`: `main` (shared) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
|
|
193
|
-
- See [Session Management](/concepts/session) for scoping, identity links, and send policy.
|
|
194
|
-
- See [full reference](/gateway/configuration-reference#session) for all fields.
|
|
195
|
-
|
|
196
|
-
</Accordion>
|
|
197
|
-
|
|
198
|
-
<Accordion title="Enable sandboxing">
|
|
199
|
-
Run agent sessions in isolated Docker containers:
|
|
200
|
-
|
|
201
|
-
```json5
|
|
202
|
-
{
|
|
203
|
-
agents: {
|
|
204
|
-
defaults: {
|
|
205
|
-
sandbox: {
|
|
206
|
-
mode: "non-main", // off | non-main | all
|
|
207
|
-
scope: "agent", // session | agent | shared
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
}
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
Build the image first: `scripts/sandbox-setup.sh`
|
|
215
|
-
|
|
216
|
-
See [Sandboxing](/gateway/sandboxing) for the full guide and [full reference](/gateway/configuration-reference#sandbox) for all options.
|
|
217
|
-
|
|
218
|
-
</Accordion>
|
|
219
|
-
|
|
220
|
-
<Accordion title="Set up heartbeat (periodic check-ins)">
|
|
221
|
-
```json5
|
|
222
|
-
{
|
|
223
|
-
agents: {
|
|
224
|
-
defaults: {
|
|
225
|
-
heartbeat: {
|
|
226
|
-
every: "30m",
|
|
227
|
-
target: "last",
|
|
228
|
-
},
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
- `every`: duration string (`30m`, `2h`). Set `0m` to disable.
|
|
235
|
-
- See [Heartbeat](/gateway/heartbeat) for the full guide.
|
|
236
|
-
|
|
237
|
-
</Accordion>
|
|
238
|
-
|
|
239
|
-
<Accordion title="Configure cron jobs">
|
|
240
|
-
```json5
|
|
241
|
-
{
|
|
242
|
-
cron: {
|
|
243
|
-
enabled: true,
|
|
244
|
-
maxConcurrentRuns: 2,
|
|
245
|
-
sessionRetention: "24h",
|
|
246
|
-
},
|
|
247
|
-
}
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
See [Cron jobs](/automation/cron-jobs) for the feature overview and CLI examples.
|
|
251
|
-
|
|
252
|
-
</Accordion>
|
|
253
|
-
|
|
254
|
-
<Accordion title="Set up webhooks (hooks)">
|
|
255
|
-
Enable HTTP webhook endpoints on the Gateway:
|
|
256
|
-
|
|
257
|
-
```json5
|
|
258
|
-
{
|
|
259
|
-
hooks: {
|
|
260
|
-
enabled: true,
|
|
261
|
-
token: "shared-secret",
|
|
262
|
-
path: "/hooks",
|
|
263
|
-
defaultSessionKey: "hook:ingress",
|
|
264
|
-
allowRequestSessionKey: false,
|
|
265
|
-
allowedSessionKeyPrefixes: ["hook:"],
|
|
266
|
-
mappings: [
|
|
267
|
-
{
|
|
268
|
-
match: { path: "gmail" },
|
|
269
|
-
action: "agent",
|
|
270
|
-
agentId: "main",
|
|
271
|
-
deliver: true,
|
|
272
|
-
},
|
|
273
|
-
],
|
|
274
|
-
},
|
|
275
|
-
}
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
See [full reference](/gateway/configuration-reference#hooks) for all mapping options and Gmail integration.
|
|
279
|
-
|
|
280
|
-
</Accordion>
|
|
281
|
-
|
|
282
|
-
<Accordion title="Configure multi-agent routing">
|
|
283
|
-
Run multiple isolated agents with separate workspaces and sessions:
|
|
284
|
-
|
|
285
|
-
```json5
|
|
286
|
-
{
|
|
287
|
-
agents: {
|
|
288
|
-
list: [
|
|
289
|
-
{ id: "home", default: true, workspace: "~/.symi/workspace-home" },
|
|
290
|
-
{ id: "work", workspace: "~/.symi/workspace-work" },
|
|
291
|
-
],
|
|
292
|
-
},
|
|
293
|
-
bindings: [
|
|
294
|
-
{ agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
|
|
295
|
-
{ agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
|
|
296
|
-
],
|
|
297
|
-
}
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
See [Multi-Agent](/concepts/multi-agent) and [full reference](/gateway/configuration-reference#multi-agent-routing) for binding rules and per-agent access profiles.
|
|
301
|
-
|
|
302
|
-
</Accordion>
|
|
303
|
-
|
|
304
|
-
<Accordion title="Split config into multiple files ($include)">
|
|
305
|
-
Use `$include` to organize large configs:
|
|
306
|
-
|
|
307
|
-
```json5
|
|
308
|
-
// ~/.symi/symi.json
|
|
309
|
-
{
|
|
310
|
-
gateway: { port: 18789 },
|
|
311
|
-
agents: { $include: "./agents.json5" },
|
|
312
|
-
broadcast: {
|
|
313
|
-
$include: ["./clients/a.json5", "./clients/b.json5"],
|
|
314
|
-
},
|
|
315
|
-
}
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
- **Single file**: replaces the containing object
|
|
319
|
-
- **Array of files**: deep-merged in order (later wins)
|
|
320
|
-
- **Sibling keys**: merged after includes (override included values)
|
|
321
|
-
- **Nested includes**: supported up to 10 levels deep
|
|
322
|
-
- **Relative paths**: resolved relative to the including file
|
|
323
|
-
- **Error handling**: clear errors for missing files, parse errors, and circular includes
|
|
324
|
-
|
|
325
|
-
</Accordion>
|
|
326
|
-
</AccordionGroup>
|
|
327
|
-
|
|
328
|
-
## Config hot reload
|
|
329
|
-
|
|
330
|
-
The Gateway watches `~/.symi/symi.json` and applies changes automatically — no manual restart needed for most settings.
|
|
331
|
-
|
|
332
|
-
### Reload modes
|
|
333
|
-
|
|
334
|
-
| Mode | Behavior |
|
|
335
|
-
| ---------------------- | --------------------------------------------------------------------------------------- |
|
|
336
|
-
| **`hybrid`** (default) | Hot-applies safe changes instantly. Automatically restarts for critical ones. |
|
|
337
|
-
| **`hot`** | Hot-applies safe changes only. Logs a warning when a restart is needed — you handle it. |
|
|
338
|
-
| **`restart`** | Restarts the Gateway on any config change, safe or not. |
|
|
339
|
-
| **`off`** | Disables file watching. Changes take effect on the next manual restart. |
|
|
340
|
-
|
|
341
|
-
```json5
|
|
342
|
-
{
|
|
343
|
-
gateway: {
|
|
344
|
-
reload: { mode: "hybrid", debounceMs: 300 },
|
|
345
|
-
},
|
|
346
|
-
}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### What hot-applies vs what needs a restart
|
|
350
|
-
|
|
351
|
-
Most fields hot-apply without downtime. In `hybrid` mode, restart-required changes are handled automatically.
|
|
352
|
-
|
|
353
|
-
| Category | Fields | Restart needed? |
|
|
354
|
-
| ------------------- | -------------------------------------------------------------------- | --------------- |
|
|
355
|
-
| Channels | `channels.*`, `web` (WhatsApp) — all built-in and extension channels | No |
|
|
356
|
-
| Agent & models | `agent`, `agents`, `models`, `routing` | No |
|
|
357
|
-
| Automation | `hooks`, `cron`, `agent.heartbeat` | No |
|
|
358
|
-
| Sessions & messages | `session`, `messages` | No |
|
|
359
|
-
| Tools & media | `tools`, `browser`, `skills`, `audio`, `talk` | No |
|
|
360
|
-
| UI & misc | `ui`, `logging`, `identity`, `bindings` | No |
|
|
361
|
-
| Gateway server | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Yes** |
|
|
362
|
-
| Infrastructure | `discovery`, `canvasHost`, `plugins` | **Yes** |
|
|
363
|
-
|
|
364
|
-
<Note>
|
|
365
|
-
`gateway.reload` and `gateway.remote` are exceptions — changing them does **not** trigger a restart.
|
|
366
|
-
</Note>
|
|
367
|
-
|
|
368
|
-
## Config RPC (programmatic updates)
|
|
369
|
-
|
|
370
|
-
<Note>
|
|
371
|
-
Control-plane write RPCs (`config.apply`, `config.patch`, `update.run`) are rate-limited to **3 requests per 60 seconds** per `deviceId+clientIp`. When limited, the RPC returns `UNAVAILABLE` with `retryAfterMs`.
|
|
372
|
-
</Note>
|
|
373
|
-
|
|
374
|
-
<AccordionGroup>
|
|
375
|
-
<Accordion title="config.apply (full replace)">
|
|
376
|
-
Validates + writes the full config and restarts the Gateway in one step.
|
|
377
|
-
|
|
378
|
-
<Warning>
|
|
379
|
-
`config.apply` replaces the **entire config**. Use `config.patch` for partial updates, or `symi config set` for single keys.
|
|
380
|
-
</Warning>
|
|
381
|
-
|
|
382
|
-
Params:
|
|
383
|
-
|
|
384
|
-
- `raw` (string) — JSON5 payload for the entire config
|
|
385
|
-
- `baseHash` (optional) — config hash from `config.get` (required when config exists)
|
|
386
|
-
- `sessionKey` (optional) — session key for the post-restart wake-up ping
|
|
387
|
-
- `note` (optional) — note for the restart sentinel
|
|
388
|
-
- `restartDelayMs` (optional) — delay before restart (default 2000)
|
|
389
|
-
|
|
390
|
-
Restart requests are coalesced while one is already pending/in-flight, and a 30-second cooldown applies between restart cycles.
|
|
391
|
-
|
|
392
|
-
```bash
|
|
393
|
-
symi gateway call config.get --params '{}' # capture payload.hash
|
|
394
|
-
symi gateway call config.apply --params '{
|
|
395
|
-
"raw": "{ agents: { defaults: { workspace: \"~/.symi/workspace\" } } }",
|
|
396
|
-
"baseHash": "<hash>",
|
|
397
|
-
"sessionKey": "agent:main:whatsapp:dm:+15555550123"
|
|
398
|
-
}'
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
</Accordion>
|
|
402
|
-
|
|
403
|
-
<Accordion title="config.patch (partial update)">
|
|
404
|
-
Merges a partial update into the existing config (JSON merge patch semantics):
|
|
405
|
-
|
|
406
|
-
- Objects merge recursively
|
|
407
|
-
- `null` deletes a key
|
|
408
|
-
- Arrays replace
|
|
409
|
-
|
|
410
|
-
Params:
|
|
411
|
-
|
|
412
|
-
- `raw` (string) — JSON5 with just the keys to change
|
|
413
|
-
- `baseHash` (required) — config hash from `config.get`
|
|
414
|
-
- `sessionKey`, `note`, `restartDelayMs` — same as `config.apply`
|
|
415
|
-
|
|
416
|
-
Restart behavior matches `config.apply`: coalesced pending restarts plus a 30-second cooldown between restart cycles.
|
|
417
|
-
|
|
418
|
-
```bash
|
|
419
|
-
symi gateway call config.patch --params '{
|
|
420
|
-
"raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }",
|
|
421
|
-
"baseHash": "<hash>"
|
|
422
|
-
}'
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
</Accordion>
|
|
426
|
-
</AccordionGroup>
|
|
427
|
-
|
|
428
|
-
## Environment variables
|
|
429
|
-
|
|
430
|
-
Symi reads env vars from the parent process plus:
|
|
431
|
-
|
|
432
|
-
- `.env` from the current working directory (if present)
|
|
433
|
-
- `~/.symi/.env` (global fallback)
|
|
434
|
-
|
|
435
|
-
Neither file overrides existing env vars. You can also set inline env vars in config:
|
|
436
|
-
|
|
437
|
-
```json5
|
|
438
|
-
{
|
|
439
|
-
env: {
|
|
440
|
-
OPENROUTER_API_KEY: "sk-or-...",
|
|
441
|
-
vars: { GROQ_API_KEY: "gsk-..." },
|
|
442
|
-
},
|
|
443
|
-
}
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
<Accordion title="Shell env import (optional)">
|
|
447
|
-
If enabled and expected keys aren't set, Symi runs your login shell and imports only the missing keys:
|
|
448
|
-
|
|
449
|
-
```json5
|
|
450
|
-
{
|
|
451
|
-
env: {
|
|
452
|
-
shellEnv: { enabled: true, timeoutMs: 15000 },
|
|
453
|
-
},
|
|
454
|
-
}
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
Env var equivalent: `SYMI_LOAD_SHELL_ENV=1`
|
|
458
|
-
</Accordion>
|
|
459
|
-
|
|
460
|
-
<Accordion title="Env var substitution in config values">
|
|
461
|
-
Reference env vars in any config string value with `${VAR_NAME}`:
|
|
462
|
-
|
|
463
|
-
```json5
|
|
464
|
-
{
|
|
465
|
-
gateway: { auth: { token: "${SYMI_GATEWAY_TOKEN}" } },
|
|
466
|
-
models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },
|
|
467
|
-
}
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
Rules:
|
|
471
|
-
|
|
472
|
-
- Only uppercase names matched: `[A-Z_][A-Z0-9_]*`
|
|
473
|
-
- Missing/empty vars throw an error at load time
|
|
474
|
-
- Escape with `$${VAR}` for literal output
|
|
475
|
-
- Works inside `$include` files
|
|
476
|
-
- Inline substitution: `"${BASE}/v1"` → `"https://api.example.com/v1"`
|
|
477
|
-
|
|
478
|
-
</Accordion>
|
|
479
|
-
|
|
480
|
-
See [Environment](/help/environment) for full precedence and sources.
|
|
481
|
-
|
|
482
|
-
## Full reference
|
|
483
|
-
|
|
484
|
-
For the complete field-by-field reference, see **[Configuration Reference](/gateway/configuration-reference)**.
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
|
|
488
|
-
_Related: [Configuration Examples](/gateway/configuration-examples) · [Configuration Reference](/gateway/configuration-reference) · [Doctor](/gateway/doctor)_
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Node discovery and transports (Bonjour, Tailscale, SSH) for finding the gateway"
|
|
3
|
-
read_when:
|
|
4
|
-
- Implementing or changing Bonjour discovery/advertising
|
|
5
|
-
- Adjusting remote connection modes (direct vs SSH)
|
|
6
|
-
- Designing node discovery + pairing for remote nodes
|
|
7
|
-
title: "Discovery and Transports"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Discovery & transports
|
|
11
|
-
|
|
12
|
-
Symi has two distinct problems that look similar on the surface:
|
|
13
|
-
|
|
14
|
-
1. **Operator remote control**: the macOS menu bar app controlling a gateway running elsewhere.
|
|
15
|
-
2. **Node pairing**: iOS/Android (and future nodes) finding a gateway and pairing securely.
|
|
16
|
-
|
|
17
|
-
The design goal is to keep all network discovery/advertising in the **Node Gateway** (`symi gateway`) and keep clients (mac app, iOS) as consumers.
|
|
18
|
-
|
|
19
|
-
## Terms
|
|
20
|
-
|
|
21
|
-
- **Gateway**: a single long-running gateway process that owns state (sessions, pairing, node registry) and runs channels. Most setups use one per host; isolated multi-gateway setups are possible.
|
|
22
|
-
- **Gateway WS (control plane)**: the WebSocket endpoint on `127.0.0.1:18789` by default; can be bound to LAN/tailnet via `gateway.bind`.
|
|
23
|
-
- **Direct WS transport**: a LAN/tailnet-facing Gateway WS endpoint (no SSH).
|
|
24
|
-
- **SSH transport (fallback)**: remote control by forwarding `127.0.0.1:18789` over SSH.
|
|
25
|
-
- **Legacy TCP bridge (deprecated/removed)**: older node transport (see [Bridge protocol](/gateway/bridge-protocol)); no longer advertised for discovery.
|
|
26
|
-
|
|
27
|
-
Protocol details:
|
|
28
|
-
|
|
29
|
-
- [Gateway protocol](/gateway/protocol)
|
|
30
|
-
- [Bridge protocol (legacy)](/gateway/bridge-protocol)
|
|
31
|
-
|
|
32
|
-
## Why we keep both “direct” and SSH
|
|
33
|
-
|
|
34
|
-
- **Direct WS** is the best UX on the same network and within a tailnet:
|
|
35
|
-
- auto-discovery on LAN via Bonjour
|
|
36
|
-
- pairing tokens + ACLs owned by the gateway
|
|
37
|
-
- no shell access required; protocol surface can stay tight and auditable
|
|
38
|
-
- **SSH** remains the universal fallback:
|
|
39
|
-
- works anywhere you have SSH access (even across unrelated networks)
|
|
40
|
-
- survives multicast/mDNS issues
|
|
41
|
-
- requires no new inbound ports besides SSH
|
|
42
|
-
|
|
43
|
-
## Discovery inputs (how clients learn where the gateway is)
|
|
44
|
-
|
|
45
|
-
### 1) Bonjour / mDNS (LAN only)
|
|
46
|
-
|
|
47
|
-
Bonjour is best-effort and does not cross networks. It is only used for “same LAN” convenience.
|
|
48
|
-
|
|
49
|
-
Target direction:
|
|
50
|
-
|
|
51
|
-
- The **gateway** advertises its WS endpoint via Bonjour.
|
|
52
|
-
- Clients browse and show a “pick a gateway” list, then store the chosen endpoint.
|
|
53
|
-
|
|
54
|
-
Troubleshooting and beacon details: [Bonjour](/gateway/bonjour).
|
|
55
|
-
|
|
56
|
-
#### Service beacon details
|
|
57
|
-
|
|
58
|
-
- Service types:
|
|
59
|
-
- `_symi-gw._tcp` (gateway transport beacon)
|
|
60
|
-
- TXT keys (non-secret):
|
|
61
|
-
- `role=gateway`
|
|
62
|
-
- `lanHost=<hostname>.local`
|
|
63
|
-
- `sshPort=22` (or whatever is advertised)
|
|
64
|
-
- `gatewayPort=18789` (Gateway WS + HTTP)
|
|
65
|
-
- `gatewayTls=1` (only when TLS is enabled)
|
|
66
|
-
- `gatewayTlsSha256=<sha256>` (only when TLS is enabled and fingerprint is available)
|
|
67
|
-
- `canvasPort=<port>` (canvas host port; currently the same as `gatewayPort` when the canvas host is enabled)
|
|
68
|
-
- `cliPath=<path>` (optional; absolute path to a runnable `symi` entrypoint or binary)
|
|
69
|
-
- `tailnetDns=<magicdns>` (optional hint; auto-detected when Tailscale is available)
|
|
70
|
-
|
|
71
|
-
Security notes:
|
|
72
|
-
|
|
73
|
-
- Bonjour/mDNS TXT records are **unauthenticated**. Clients must treat TXT values as UX hints only.
|
|
74
|
-
- Routing (host/port) should prefer the **resolved service endpoint** (SRV + A/AAAA) over TXT-provided `lanHost`, `tailnetDns`, or `gatewayPort`.
|
|
75
|
-
- TLS pinning must never allow an advertised `gatewayTlsSha256` to override a previously stored pin.
|
|
76
|
-
- iOS/Android nodes should treat discovery-based direct connects as **TLS-only** and require an explicit “trust this fingerprint” confirmation before storing a first-time pin (out-of-band verification).
|
|
77
|
-
|
|
78
|
-
Disable/override:
|
|
79
|
-
|
|
80
|
-
- `SYMI_DISABLE_BONJOUR=1` disables advertising.
|
|
81
|
-
- `gateway.bind` in `~/.symi/symi.json` controls the Gateway bind mode.
|
|
82
|
-
- `SYMI_SSH_PORT` overrides the SSH port advertised in TXT (defaults to 22).
|
|
83
|
-
- `SYMI_TAILNET_DNS` publishes a `tailnetDns` hint (MagicDNS).
|
|
84
|
-
- `SYMI_CLI_PATH` overrides the advertised CLI path.
|
|
85
|
-
|
|
86
|
-
### 2) Tailnet (cross-network)
|
|
87
|
-
|
|
88
|
-
For London/Vienna style setups, Bonjour won’t help. The recommended “direct” target is:
|
|
89
|
-
|
|
90
|
-
- Tailscale MagicDNS name (preferred) or a stable tailnet IP.
|
|
91
|
-
|
|
92
|
-
If the gateway can detect it is running under Tailscale, it publishes `tailnetDns` as an optional hint for clients (including wide-area beacons).
|
|
93
|
-
|
|
94
|
-
### 3) Manual / SSH target
|
|
95
|
-
|
|
96
|
-
When there is no direct route (or direct is disabled), clients can always connect via SSH by forwarding the loopback gateway port.
|
|
97
|
-
|
|
98
|
-
See [Remote access](/gateway/remote).
|
|
99
|
-
|
|
100
|
-
## Transport selection (client policy)
|
|
101
|
-
|
|
102
|
-
Recommended client behavior:
|
|
103
|
-
|
|
104
|
-
1. If a paired direct endpoint is configured and reachable, use it.
|
|
105
|
-
2. Else, if Bonjour finds a gateway on LAN, offer a one-tap “Use this gateway” choice and save it as the direct endpoint.
|
|
106
|
-
3. Else, if a tailnet DNS/IP is configured, try direct.
|
|
107
|
-
4. Else, fall back to SSH.
|
|
108
|
-
|
|
109
|
-
## Pairing + auth (direct transport)
|
|
110
|
-
|
|
111
|
-
The gateway is the source of truth for node/client admission.
|
|
112
|
-
|
|
113
|
-
- Pairing requests are created/approved/rejected in the gateway (see [Gateway pairing](/gateway/pairing)).
|
|
114
|
-
- The gateway enforces:
|
|
115
|
-
- auth (token / keypair)
|
|
116
|
-
- scopes/ACLs (the gateway is not a raw proxy to every method)
|
|
117
|
-
- rate limits
|
|
118
|
-
|
|
119
|
-
## Responsibilities by component
|
|
120
|
-
|
|
121
|
-
- **Gateway**: advertises discovery beacons, owns pairing decisions, and hosts the WS endpoint.
|
|
122
|
-
- **macOS app**: helps you pick a gateway, shows pairing prompts, and uses SSH only as a fallback.
|
|
123
|
-
- **iOS/Android nodes**: browse Bonjour as a convenience and connect to the paired Gateway WS.
|