fengming 0.3.9 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/dist/build-info.json +2 -2
  2. package/dist/{bundled-channel-config-schema-DpdKMATU.d.ts → bundled-channel-config-schema-Bte--ZlY.d.ts} +26 -26
  3. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  4. package/dist/cli-startup-metadata.json +8 -8
  5. package/dist/control-ui/assets/{activity-B2W-IeAT.js → activity-wgT0-JR0.js} +2 -2
  6. package/dist/control-ui/assets/{agents-mRUyNVCz.js → agents-DG5PobrT.js} +2 -2
  7. package/dist/control-ui/assets/{channels-8QHOqBnt.js → channels-CX28oM42.js} +2 -2
  8. package/dist/control-ui/assets/{cron-H3unP_mO.js → cron-B8ixwBqU.js} +2 -2
  9. package/dist/control-ui/assets/{debug-CxLsQ9vH.js → debug-CnkYZUXy.js} +2 -2
  10. package/dist/control-ui/assets/{index-jtIYT0Eh.js → index-DQRZJKbO.js} +4 -4
  11. package/dist/control-ui/assets/{instances-B1JQeCRb.js → instances-BE3mV1JC.js} +2 -2
  12. package/dist/control-ui/assets/{nodes-RGOmq_1l.js → nodes-Cou4PWRX.js} +2 -2
  13. package/dist/control-ui/assets/{sessions-C2O-Jgpg.js → sessions-DpAaBT21.js} +2 -2
  14. package/dist/control-ui/assets/{skills-jyJOYA4I.js → skills-DjA_j_20.js} +2 -2
  15. package/dist/control-ui/assets/{workboard-uM_kK8cQ.js → workboard-BFnvbS0k.js} +2 -2
  16. package/dist/control-ui/index.html +1 -1
  17. package/dist/control-ui/sw.js +1 -1
  18. package/dist/gateway/protocol/index.d.ts +1 -1
  19. package/dist/{index-DhOQs6M_.d.ts → index-DuDY3bCZ.d.ts} +45 -45
  20. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  21. package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
  22. package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-BPFNnbwu.d.ts} +23 -23
  23. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
  24. package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
  25. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
  26. package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
  27. package/dist/plugin-sdk/channel-core.d.ts +1 -1
  28. package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
  29. package/dist/plugin-sdk/compat.d.ts +2 -2
  30. package/dist/plugin-sdk/{config-schema-DUddICQM.d.ts → config-schema-D7cABQ6o.d.ts} +1 -1
  31. package/dist/plugin-sdk/config-schema.d.ts +4 -4
  32. package/dist/plugin-sdk/core.d.ts +1 -1
  33. package/dist/plugin-sdk/discord.d.ts +2 -2
  34. package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
  35. package/dist/plugin-sdk/{zod-schema.core-B4_b2R5K.d.ts → zod-schema.core-CwBNqcXp.d.ts} +1 -1
  36. package/dist/{zod-schema.core-Cuz0lz6m.d.ts → zod-schema.core-BGLctDlK.d.ts} +1 -1
  37. package/package.json +7 -412
  38. package/CHANGELOG.md +0 -38
  39. package/THIRD_PARTY_NOTICES.md +0 -37
  40. package/docs/.i18n/README.md +0 -81
  41. package/docs/.i18n/ar-navigation.json +0 -18
  42. package/docs/.i18n/de-navigation.json +0 -18
  43. package/docs/.i18n/es-navigation.json +0 -18
  44. package/docs/.i18n/fr-navigation.json +0 -18
  45. package/docs/.i18n/glossary.ar.json +0 -78
  46. package/docs/.i18n/glossary.de.json +0 -78
  47. package/docs/.i18n/glossary.es.json +0 -78
  48. package/docs/.i18n/glossary.fa.json +0 -78
  49. package/docs/.i18n/glossary.fr.json +0 -78
  50. package/docs/.i18n/glossary.id.json +0 -78
  51. package/docs/.i18n/glossary.it.json +0 -78
  52. package/docs/.i18n/glossary.ja-JP.json +0 -98
  53. package/docs/.i18n/glossary.ko.json +0 -78
  54. package/docs/.i18n/glossary.nl.json +0 -78
  55. package/docs/.i18n/glossary.pl.json +0 -78
  56. package/docs/.i18n/glossary.pt-BR.json +0 -78
  57. package/docs/.i18n/glossary.th.json +0 -78
  58. package/docs/.i18n/glossary.tr.json +0 -78
  59. package/docs/.i18n/glossary.uk.json +0 -78
  60. package/docs/.i18n/glossary.vi.json +0 -78
  61. package/docs/.i18n/glossary.zh-CN.json +0 -1122
  62. package/docs/.i18n/glossary.zh-TW.json +0 -78
  63. package/docs/.i18n/id-navigation.json +0 -18
  64. package/docs/.i18n/it-navigation.json +0 -18
  65. package/docs/.i18n/ja-navigation.json +0 -18
  66. package/docs/.i18n/ko-navigation.json +0 -18
  67. package/docs/.i18n/pl-navigation.json +0 -18
  68. package/docs/.i18n/pt-BR-navigation.json +0 -18
  69. package/docs/.i18n/tr-navigation.json +0 -18
  70. package/docs/.i18n/translation-workflow.md +0 -111
  71. package/docs/.i18n/zh-Hans-navigation.json +0 -552
  72. package/docs/AGENTS.md +0 -36
  73. package/docs/CLAUDE.md +0 -1
  74. package/docs/agent-runtime-architecture.md +0 -48
  75. package/docs/announcements/bluebubbles-imessage.md +0 -79
  76. package/docs/auth-credential-semantics.md +0 -124
  77. package/docs/automation/auth-monitoring.md +0 -11
  78. package/docs/automation/clawflow.md +0 -12
  79. package/docs/automation/cron-jobs.md +0 -534
  80. package/docs/automation/cron-vs-heartbeat.md +0 -11
  81. package/docs/automation/gmail-pubsub.md +0 -11
  82. package/docs/automation/hooks.md +0 -387
  83. package/docs/automation/index.md +0 -135
  84. package/docs/automation/poll.md +0 -12
  85. package/docs/automation/standing-orders.md +0 -250
  86. package/docs/automation/taskflow.md +0 -155
  87. package/docs/automation/tasks.md +0 -374
  88. package/docs/automation/troubleshooting.md +0 -12
  89. package/docs/automation/webhook.md +0 -12
  90. package/docs/brave-search.md +0 -11
  91. package/docs/channels/access-groups.md +0 -201
  92. package/docs/channels/ambient-room-events.md +0 -214
  93. package/docs/channels/bot-loop-protection.md +0 -131
  94. package/docs/channels/broadcast-groups.md +0 -472
  95. package/docs/channels/channel-routing.md +0 -162
  96. package/docs/channels/clickclack.md +0 -138
  97. package/docs/channels/discord.md +0 -1758
  98. package/docs/channels/feishu.md +0 -650
  99. package/docs/channels/googlechat.md +0 -284
  100. package/docs/channels/group-messages.md +0 -95
  101. package/docs/channels/groups.md +0 -524
  102. package/docs/channels/imessage-from-bluebubbles.md +0 -259
  103. package/docs/channels/imessage.md +0 -839
  104. package/docs/channels/index.md +0 -64
  105. package/docs/channels/irc.md +0 -253
  106. package/docs/channels/line.md +0 -243
  107. package/docs/channels/location.md +0 -71
  108. package/docs/channels/matrix-migration.md +0 -370
  109. package/docs/channels/matrix-presentation.md +0 -77
  110. package/docs/channels/matrix-push-rules.md +0 -150
  111. package/docs/channels/matrix.md +0 -921
  112. package/docs/channels/mattermost.md +0 -542
  113. package/docs/channels/msteams.md +0 -1096
  114. package/docs/channels/nextcloud-talk.md +0 -176
  115. package/docs/channels/nostr.md +0 -253
  116. package/docs/channels/pairing.md +0 -214
  117. package/docs/channels/qqbot.md +0 -314
  118. package/docs/channels/signal.md +0 -417
  119. package/docs/channels/slack.md +0 -1623
  120. package/docs/channels/synology-chat.md +0 -187
  121. package/docs/channels/telegram.md +0 -1124
  122. package/docs/channels/tlon.md +0 -296
  123. package/docs/channels/troubleshooting.md +0 -162
  124. package/docs/channels/twitch.md +0 -431
  125. package/docs/channels/wechat.md +0 -171
  126. package/docs/channels/whatsapp.md +0 -796
  127. package/docs/channels/yuanbao.md +0 -416
  128. package/docs/channels/zalo.md +0 -253
  129. package/docs/channels/zalouser.md +0 -217
  130. package/docs/ci.md +0 -657
  131. package/docs/clawhub/publishing.md +0 -96
  132. package/docs/cli/acp.md +0 -370
  133. package/docs/cli/agent.md +0 -109
  134. package/docs/cli/agents.md +0 -253
  135. package/docs/cli/approvals.md +0 -190
  136. package/docs/cli/backup.md +0 -98
  137. package/docs/cli/browser.md +0 -307
  138. package/docs/cli/channels.md +0 -154
  139. package/docs/cli/clawbot.md +0 -25
  140. package/docs/cli/commitments.md +0 -90
  141. package/docs/cli/completion.md +0 -39
  142. package/docs/cli/config.md +0 -504
  143. package/docs/cli/configure.md +0 -77
  144. package/docs/cli/crestodian.md +0 -337
  145. package/docs/cli/cron.md +0 -304
  146. package/docs/cli/daemon.md +0 -67
  147. package/docs/cli/dashboard.md +0 -33
  148. package/docs/cli/devices.md +0 -240
  149. package/docs/cli/directory.md +0 -68
  150. package/docs/cli/dns.md +0 -53
  151. package/docs/cli/docs.md +0 -63
  152. package/docs/cli/doctor.md +0 -241
  153. package/docs/cli/flows.md +0 -52
  154. package/docs/cli/gateway.md +0 -572
  155. package/docs/cli/health.md +0 -43
  156. package/docs/cli/hooks.md +0 -345
  157. package/docs/cli/index.md +0 -400
  158. package/docs/cli/infer.md +0 -364
  159. package/docs/cli/logs.md +0 -68
  160. package/docs/cli/mcp.md +0 -529
  161. package/docs/cli/memory.md +0 -183
  162. package/docs/cli/message.md +0 -317
  163. package/docs/cli/migrate.md +0 -334
  164. package/docs/cli/models.md +0 -239
  165. package/docs/cli/node.md +0 -177
  166. package/docs/cli/nodes.md +0 -76
  167. package/docs/cli/onboard.md +0 -250
  168. package/docs/cli/pairing.md +0 -77
  169. package/docs/cli/path.md +0 -511
  170. package/docs/cli/plugins.md +0 -459
  171. package/docs/cli/policy.md +0 -886
  172. package/docs/cli/proxy.md +0 -89
  173. package/docs/cli/qr.md +0 -56
  174. package/docs/cli/reset.md +0 -39
  175. package/docs/cli/sandbox.md +0 -208
  176. package/docs/cli/secrets.md +0 -202
  177. package/docs/cli/security.md +0 -136
  178. package/docs/cli/sessions.md +0 -164
  179. package/docs/cli/setup.md +0 -59
  180. package/docs/cli/skills.md +0 -122
  181. package/docs/cli/status.md +0 -45
  182. package/docs/cli/system.md +0 -89
  183. package/docs/cli/tasks.md +0 -111
  184. package/docs/cli/transcripts.md +0 -151
  185. package/docs/cli/tui.md +0 -91
  186. package/docs/cli/uninstall.md +0 -44
  187. package/docs/cli/update.md +0 -243
  188. package/docs/cli/voicecall.md +0 -204
  189. package/docs/cli/webhooks.md +0 -117
  190. package/docs/cli/wiki.md +0 -256
  191. package/docs/concepts/active-memory.md +0 -856
  192. package/docs/concepts/agent-loop.md +0 -185
  193. package/docs/concepts/agent-runtimes.md +0 -276
  194. package/docs/concepts/agent-workspace.md +0 -230
  195. package/docs/concepts/agent.md +0 -140
  196. package/docs/concepts/architecture.md +0 -154
  197. package/docs/concepts/channel-docking.md +0 -145
  198. package/docs/concepts/commitments.md +0 -150
  199. package/docs/concepts/compaction.md +0 -203
  200. package/docs/concepts/context-engine.md +0 -347
  201. package/docs/concepts/context.md +0 -199
  202. package/docs/concepts/delegate-architecture.md +0 -319
  203. package/docs/concepts/dreaming.md +0 -264
  204. package/docs/concepts/experimental-features.md +0 -109
  205. package/docs/concepts/features.md +0 -91
  206. package/docs/concepts/fengming-sdk.md +0 -323
  207. package/docs/concepts/mantis-slack-desktop-runbook.md +0 -231
  208. package/docs/concepts/mantis.md +0 -744
  209. package/docs/concepts/markdown-formatting.md +0 -139
  210. package/docs/concepts/memory-builtin.md +0 -148
  211. package/docs/concepts/memory-honcho.md +0 -144
  212. package/docs/concepts/memory-qmd.md +0 -271
  213. package/docs/concepts/memory-search.md +0 -167
  214. package/docs/concepts/memory.md +0 -299
  215. package/docs/concepts/message-lifecycle-refactor.md +0 -1126
  216. package/docs/concepts/messages.md +0 -214
  217. package/docs/concepts/model-failover.md +0 -384
  218. package/docs/concepts/model-providers.md +0 -719
  219. package/docs/concepts/models.md +0 -371
  220. package/docs/concepts/multi-agent.md +0 -625
  221. package/docs/concepts/oauth.md +0 -198
  222. package/docs/concepts/parallel-specialist-lanes.md +0 -127
  223. package/docs/concepts/personal-agent-benchmark-pack.md +0 -74
  224. package/docs/concepts/presence.md +0 -117
  225. package/docs/concepts/progress-drafts.md +0 -406
  226. package/docs/concepts/qa-e2e-automation.md +0 -947
  227. package/docs/concepts/qa-matrix.md +0 -139
  228. package/docs/concepts/queue-steering.md +0 -90
  229. package/docs/concepts/queue.md +0 -136
  230. package/docs/concepts/retry.md +0 -86
  231. package/docs/concepts/session-pruning.md +0 -104
  232. package/docs/concepts/session-tool.md +0 -188
  233. package/docs/concepts/session.md +0 -164
  234. package/docs/concepts/soul.md +0 -116
  235. package/docs/concepts/streaming.md +0 -257
  236. package/docs/concepts/system-prompt.md +0 -328
  237. package/docs/concepts/timezone.md +0 -47
  238. package/docs/concepts/typebox.md +0 -309
  239. package/docs/concepts/typing-indicators.md +0 -88
  240. package/docs/concepts/usage-tracking.md +0 -66
  241. package/docs/date-time.md +0 -126
  242. package/docs/debug/node-issue.md +0 -90
  243. package/docs/diagnostics/flags.md +0 -182
  244. package/docs/docs.json +0 -1862
  245. package/docs/fengming-agent-runtime.md +0 -82
  246. package/docs/gateway/authentication.md +0 -256
  247. package/docs/gateway/background-process.md +0 -147
  248. package/docs/gateway/bonjour.md +0 -303
  249. package/docs/gateway/bridge-protocol.md +0 -97
  250. package/docs/gateway/cli-backends.md +0 -439
  251. package/docs/gateway/config-agents.md +0 -1525
  252. package/docs/gateway/config-channels.md +0 -945
  253. package/docs/gateway/config-tools.md +0 -774
  254. package/docs/gateway/configuration-examples.md +0 -704
  255. package/docs/gateway/configuration-reference.md +0 -1391
  256. package/docs/gateway/configuration.md +0 -739
  257. package/docs/gateway/diagnostics.md +0 -213
  258. package/docs/gateway/discovery.md +0 -154
  259. package/docs/gateway/doctor.md +0 -575
  260. package/docs/gateway/gateway-lock.md +0 -37
  261. package/docs/gateway/health.md +0 -73
  262. package/docs/gateway/heartbeat.md +0 -498
  263. package/docs/gateway/index.md +0 -383
  264. package/docs/gateway/local-model-services.md +0 -205
  265. package/docs/gateway/local-models.md +0 -355
  266. package/docs/gateway/logging.md +0 -149
  267. package/docs/gateway/multiple-gateways.md +0 -178
  268. package/docs/gateway/network-model.md +0 -15
  269. package/docs/gateway/openai-http-api.md +0 -378
  270. package/docs/gateway/openresponses-http-api.md +0 -347
  271. package/docs/gateway/openshell.md +0 -316
  272. package/docs/gateway/opentelemetry.md +0 -433
  273. package/docs/gateway/operator-scopes.md +0 -119
  274. package/docs/gateway/pairing.md +0 -207
  275. package/docs/gateway/prometheus.md +0 -249
  276. package/docs/gateway/protocol.md +0 -826
  277. package/docs/gateway/remote-gateway-readme.md +0 -169
  278. package/docs/gateway/remote.md +0 -280
  279. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -148
  280. package/docs/gateway/sandboxing.md +0 -546
  281. package/docs/gateway/secrets-plan-contract.md +0 -159
  282. package/docs/gateway/secrets.md +0 -805
  283. package/docs/gateway/security/audit-checks.md +0 -127
  284. package/docs/gateway/security/exposure-runbook.md +0 -212
  285. package/docs/gateway/security/index.md +0 -1343
  286. package/docs/gateway/security/secure-file-operations.md +0 -76
  287. package/docs/gateway/security/shrinkwrap.md +0 -111
  288. package/docs/gateway/tailscale.md +0 -156
  289. package/docs/gateway/tools-invoke-http-api.md +0 -169
  290. package/docs/gateway/troubleshooting.md +0 -877
  291. package/docs/gateway/trusted-proxy-auth.md +0 -483
  292. package/docs/help/debugging.md +0 -341
  293. package/docs/help/environment.md +0 -233
  294. package/docs/help/faq-first-run.md +0 -870
  295. package/docs/help/faq-models.md +0 -556
  296. package/docs/help/faq.md +0 -2041
  297. package/docs/help/index.md +0 -39
  298. package/docs/help/scripts.md +0 -56
  299. package/docs/help/testing-live.md +0 -587
  300. package/docs/help/testing-updates-plugins.md +0 -299
  301. package/docs/help/testing.md +0 -977
  302. package/docs/help/troubleshooting.md +0 -449
  303. package/docs/index.md +0 -196
  304. package/docs/install/ansible.md +0 -233
  305. package/docs/install/azure.md +0 -315
  306. package/docs/install/bun.md +0 -59
  307. package/docs/install/clawdock.md +0 -112
  308. package/docs/install/development-channels.md +0 -148
  309. package/docs/install/digitalocean.md +0 -174
  310. package/docs/install/docker-vm-runtime.md +0 -154
  311. package/docs/install/docker.md +0 -564
  312. package/docs/install/exe-dev.md +0 -201
  313. package/docs/install/fly.md +0 -524
  314. package/docs/install/gcp.md +0 -418
  315. package/docs/install/hetzner.md +0 -285
  316. package/docs/install/hostinger.md +0 -98
  317. package/docs/install/index.md +0 -232
  318. package/docs/install/installer.md +0 -447
  319. package/docs/install/kubernetes.md +0 -196
  320. package/docs/install/macos-vm.md +0 -281
  321. package/docs/install/migrating-claude.md +0 -165
  322. package/docs/install/migrating-hermes.md +0 -178
  323. package/docs/install/migrating.md +0 -137
  324. package/docs/install/nix.md +0 -112
  325. package/docs/install/node.md +0 -142
  326. package/docs/install/northflank.mdx +0 -44
  327. package/docs/install/oracle.md +0 -218
  328. package/docs/install/podman.md +0 -216
  329. package/docs/install/railway.mdx +0 -92
  330. package/docs/install/raspberry-pi.md +0 -234
  331. package/docs/install/render.mdx +0 -167
  332. package/docs/install/uninstall.md +0 -131
  333. package/docs/install/updating.md +0 -284
  334. package/docs/install/upstash.md +0 -96
  335. package/docs/logging.md +0 -320
  336. package/docs/nav-tabs-underline.js +0 -100
  337. package/docs/network.md +0 -72
  338. package/docs/nodes/audio.md +0 -216
  339. package/docs/nodes/camera.md +0 -166
  340. package/docs/nodes/images.md +0 -77
  341. package/docs/nodes/index.md +0 -439
  342. package/docs/nodes/location-command.md +0 -102
  343. package/docs/nodes/media-understanding.md +0 -495
  344. package/docs/nodes/talk.md +0 -160
  345. package/docs/nodes/troubleshooting.md +0 -123
  346. package/docs/nodes/voicewake.md +0 -93
  347. package/docs/perplexity.md +0 -11
  348. package/docs/plan/codex-context-engine-harness.md +0 -624
  349. package/docs/plan/ui-channels.md +0 -284
  350. package/docs/platforms/digitalocean.md +0 -12
  351. package/docs/platforms/easyrunner.md +0 -109
  352. package/docs/platforms/index.md +0 -51
  353. package/docs/platforms/linux.md +0 -141
  354. package/docs/platforms/mac/bundled-gateway.md +0 -79
  355. package/docs/platforms/mac/canvas.md +0 -128
  356. package/docs/platforms/mac/child-process.md +0 -72
  357. package/docs/platforms/mac/dev-setup.md +0 -112
  358. package/docs/platforms/mac/health.md +0 -39
  359. package/docs/platforms/mac/icon.md +0 -36
  360. package/docs/platforms/mac/logging.md +0 -62
  361. package/docs/platforms/mac/menu-bar.md +0 -93
  362. package/docs/platforms/mac/peekaboo.md +0 -96
  363. package/docs/platforms/mac/permissions.md +0 -73
  364. package/docs/platforms/mac/remote.md +0 -123
  365. package/docs/platforms/mac/signing.md +0 -52
  366. package/docs/platforms/mac/skills.md +0 -43
  367. package/docs/platforms/mac/voice-overlay.md +0 -66
  368. package/docs/platforms/mac/voicewake.md +0 -73
  369. package/docs/platforms/mac/webchat.md +0 -54
  370. package/docs/platforms/mac/xpc.md +0 -66
  371. package/docs/platforms/oracle.md +0 -12
  372. package/docs/platforms/raspberry-pi.md +0 -13
  373. package/docs/platforms/windows.md +0 -286
  374. package/docs/plugins/adding-capabilities.md +0 -146
  375. package/docs/plugins/admin-http-rpc.md +0 -216
  376. package/docs/plugins/agent-tools.md +0 -13
  377. package/docs/plugins/architecture-internals.md +0 -1196
  378. package/docs/plugins/architecture.md +0 -483
  379. package/docs/plugins/building-extensions.md +0 -13
  380. package/docs/plugins/building-plugins.md +0 -335
  381. package/docs/plugins/bundles.md +0 -310
  382. package/docs/plugins/cli-backend-plugins.md +0 -310
  383. package/docs/plugins/codex-computer-use.md +0 -297
  384. package/docs/plugins/codex-harness-reference.md +0 -470
  385. package/docs/plugins/codex-harness-runtime.md +0 -268
  386. package/docs/plugins/codex-harness.md +0 -780
  387. package/docs/plugins/codex-native-plugins.md +0 -276
  388. package/docs/plugins/community.md +0 -77
  389. package/docs/plugins/compatibility.md +0 -167
  390. package/docs/plugins/copilot.md +0 -356
  391. package/docs/plugins/dependency-resolution.md +0 -176
  392. package/docs/plugins/google-meet.md +0 -1737
  393. package/docs/plugins/hooks.md +0 -484
  394. package/docs/plugins/install-overrides.md +0 -80
  395. package/docs/plugins/manage-plugins.md +0 -210
  396. package/docs/plugins/manifest.md +0 -1457
  397. package/docs/plugins/memory-lancedb.md +0 -385
  398. package/docs/plugins/memory-wiki.md +0 -529
  399. package/docs/plugins/message-presentation.md +0 -473
  400. package/docs/plugins/oc-path.md +0 -166
  401. package/docs/plugins/plugin-inventory.md +0 -189
  402. package/docs/plugins/plugin-permission-requests.md +0 -193
  403. package/docs/plugins/reference/acpx.md +0 -23
  404. package/docs/plugins/reference/admin-http-rpc.md +0 -23
  405. package/docs/plugins/reference/alibaba.md +0 -23
  406. package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -23
  407. package/docs/plugins/reference/amazon-bedrock.md +0 -23
  408. package/docs/plugins/reference/anthropic-vertex.md +0 -19
  409. package/docs/plugins/reference/anthropic.md +0 -23
  410. package/docs/plugins/reference/arcee.md +0 -23
  411. package/docs/plugins/reference/azure-speech.md +0 -23
  412. package/docs/plugins/reference/bonjour.md +0 -19
  413. package/docs/plugins/reference/brave.md +0 -23
  414. package/docs/plugins/reference/browser.md +0 -23
  415. package/docs/plugins/reference/byteplus.md +0 -19
  416. package/docs/plugins/reference/canvas.md +0 -19
  417. package/docs/plugins/reference/cerebras.md +0 -23
  418. package/docs/plugins/reference/chutes.md +0 -23
  419. package/docs/plugins/reference/clickclack.md +0 -23
  420. package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -23
  421. package/docs/plugins/reference/codex-supervisor.md +0 -27
  422. package/docs/plugins/reference/codex.md +0 -23
  423. package/docs/plugins/reference/comfy.md +0 -23
  424. package/docs/plugins/reference/copilot-proxy.md +0 -19
  425. package/docs/plugins/reference/copilot.md +0 -23
  426. package/docs/plugins/reference/deepgram.md +0 -23
  427. package/docs/plugins/reference/deepinfra.md +0 -23
  428. package/docs/plugins/reference/deepseek.md +0 -23
  429. package/docs/plugins/reference/diagnostics-otel.md +0 -19
  430. package/docs/plugins/reference/diagnostics-prometheus.md +0 -19
  431. package/docs/plugins/reference/diffs-language-pack.md +0 -19
  432. package/docs/plugins/reference/diffs.md +0 -19
  433. package/docs/plugins/reference/discord.md +0 -23
  434. package/docs/plugins/reference/document-extract.md +0 -23
  435. package/docs/plugins/reference/duckduckgo.md +0 -23
  436. package/docs/plugins/reference/elevenlabs.md +0 -23
  437. package/docs/plugins/reference/exa.md +0 -23
  438. package/docs/plugins/reference/fal.md +0 -23
  439. package/docs/plugins/reference/feishu.md +0 -23
  440. package/docs/plugins/reference/file-transfer.md +0 -19
  441. package/docs/plugins/reference/firecrawl.md +0 -23
  442. package/docs/plugins/reference/fireworks.md +0 -23
  443. package/docs/plugins/reference/github-copilot.md +0 -23
  444. package/docs/plugins/reference/gmi.md +0 -23
  445. package/docs/plugins/reference/google-meet.md +0 -23
  446. package/docs/plugins/reference/google.md +0 -23
  447. package/docs/plugins/reference/googlechat.md +0 -23
  448. package/docs/plugins/reference/gradium.md +0 -23
  449. package/docs/plugins/reference/groq.md +0 -23
  450. package/docs/plugins/reference/huggingface.md +0 -23
  451. package/docs/plugins/reference/imessage.md +0 -23
  452. package/docs/plugins/reference/inworld.md +0 -23
  453. package/docs/plugins/reference/irc.md +0 -23
  454. package/docs/plugins/reference/kilocode.md +0 -23
  455. package/docs/plugins/reference/kimi.md +0 -23
  456. package/docs/plugins/reference/line.md +0 -23
  457. package/docs/plugins/reference/litellm.md +0 -23
  458. package/docs/plugins/reference/llm-task.md +0 -19
  459. package/docs/plugins/reference/lmstudio.md +0 -23
  460. package/docs/plugins/reference/lobster.md +0 -19
  461. package/docs/plugins/reference/matrix.md +0 -23
  462. package/docs/plugins/reference/mattermost.md +0 -23
  463. package/docs/plugins/reference/memory-core.md +0 -19
  464. package/docs/plugins/reference/memory-lancedb.md +0 -23
  465. package/docs/plugins/reference/memory-wiki.md +0 -23
  466. package/docs/plugins/reference/microsoft-foundry.md +0 -19
  467. package/docs/plugins/reference/microsoft.md +0 -19
  468. package/docs/plugins/reference/migrate-claude.md +0 -19
  469. package/docs/plugins/reference/migrate-hermes.md +0 -19
  470. package/docs/plugins/reference/minimax.md +0 -23
  471. package/docs/plugins/reference/mistral.md +0 -23
  472. package/docs/plugins/reference/moonshot.md +0 -23
  473. package/docs/plugins/reference/msteams.md +0 -23
  474. package/docs/plugins/reference/nextcloud-talk.md +0 -23
  475. package/docs/plugins/reference/nostr.md +0 -23
  476. package/docs/plugins/reference/novita.md +0 -23
  477. package/docs/plugins/reference/nvidia.md +0 -23
  478. package/docs/plugins/reference/oc-path.md +0 -23
  479. package/docs/plugins/reference/ollama.md +0 -23
  480. package/docs/plugins/reference/open-prose.md +0 -19
  481. package/docs/plugins/reference/openai.md +0 -23
  482. package/docs/plugins/reference/opencode-go.md +0 -23
  483. package/docs/plugins/reference/opencode.md +0 -23
  484. package/docs/plugins/reference/openrouter.md +0 -23
  485. package/docs/plugins/reference/openshell.md +0 -19
  486. package/docs/plugins/reference/perplexity.md +0 -23
  487. package/docs/plugins/reference/pixverse.md +0 -23
  488. package/docs/plugins/reference/policy.md +0 -72
  489. package/docs/plugins/reference/qa-channel.md +0 -23
  490. package/docs/plugins/reference/qa-lab.md +0 -19
  491. package/docs/plugins/reference/qa-matrix.md +0 -19
  492. package/docs/plugins/reference/qianfan.md +0 -23
  493. package/docs/plugins/reference/qqbot.md +0 -23
  494. package/docs/plugins/reference/qwen.md +0 -23
  495. package/docs/plugins/reference/runway.md +0 -23
  496. package/docs/plugins/reference/searxng.md +0 -19
  497. package/docs/plugins/reference/senseaudio.md +0 -23
  498. package/docs/plugins/reference/sglang.md +0 -23
  499. package/docs/plugins/reference/signal.md +0 -23
  500. package/docs/plugins/reference/skill-workshop.md +0 -23
  501. package/docs/plugins/reference/slack.md +0 -23
  502. package/docs/plugins/reference/stepfun.md +0 -23
  503. package/docs/plugins/reference/synology-chat.md +0 -23
  504. package/docs/plugins/reference/synthetic.md +0 -23
  505. package/docs/plugins/reference/tavily.md +0 -23
  506. package/docs/plugins/reference/telegram.md +0 -23
  507. package/docs/plugins/reference/tencent.md +0 -23
  508. package/docs/plugins/reference/tlon.md +0 -23
  509. package/docs/plugins/reference/together.md +0 -23
  510. package/docs/plugins/reference/tokenjuice.md +0 -23
  511. package/docs/plugins/reference/tts-local-cli.md +0 -19
  512. package/docs/plugins/reference/twitch.md +0 -23
  513. package/docs/plugins/reference/venice.md +0 -23
  514. package/docs/plugins/reference/vercel-ai-gateway.md +0 -23
  515. package/docs/plugins/reference/vllm.md +0 -23
  516. package/docs/plugins/reference/voice-call.md +0 -23
  517. package/docs/plugins/reference/volcengine.md +0 -23
  518. package/docs/plugins/reference/voyage.md +0 -19
  519. package/docs/plugins/reference/vydra.md +0 -23
  520. package/docs/plugins/reference/web-readability.md +0 -19
  521. package/docs/plugins/reference/webhooks.md +0 -23
  522. package/docs/plugins/reference/whatsapp.md +0 -23
  523. package/docs/plugins/reference/workboard.md +0 -23
  524. package/docs/plugins/reference/xai.md +0 -23
  525. package/docs/plugins/reference/xiaomi.md +0 -23
  526. package/docs/plugins/reference/zai.md +0 -23
  527. package/docs/plugins/reference/zalo.md +0 -23
  528. package/docs/plugins/reference/zalouser.md +0 -24
  529. package/docs/plugins/reference.md +0 -145
  530. package/docs/plugins/sdk-agent-harness.md +0 -338
  531. package/docs/plugins/sdk-channel-inbound.md +0 -70
  532. package/docs/plugins/sdk-channel-ingress.md +0 -137
  533. package/docs/plugins/sdk-channel-message.md +0 -18
  534. package/docs/plugins/sdk-channel-outbound.md +0 -113
  535. package/docs/plugins/sdk-channel-plugins.md +0 -765
  536. package/docs/plugins/sdk-channel-turn.md +0 -9
  537. package/docs/plugins/sdk-entrypoints.md +0 -344
  538. package/docs/plugins/sdk-migration.md +0 -979
  539. package/docs/plugins/sdk-overview.md +0 -511
  540. package/docs/plugins/sdk-provider-plugins.md +0 -846
  541. package/docs/plugins/sdk-runtime.md +0 -676
  542. package/docs/plugins/sdk-setup.md +0 -550
  543. package/docs/plugins/sdk-subpaths.md +0 -391
  544. package/docs/plugins/sdk-testing.md +0 -403
  545. package/docs/plugins/skill-workshop.md +0 -713
  546. package/docs/plugins/tool-plugins.md +0 -411
  547. package/docs/plugins/voice-call.md +0 -942
  548. package/docs/plugins/webhooks.md +0 -192
  549. package/docs/plugins/workboard.md +0 -252
  550. package/docs/plugins/zalouser.md +0 -86
  551. package/docs/prose.md +0 -137
  552. package/docs/providers/alibaba.md +0 -158
  553. package/docs/providers/anthropic.md +0 -381
  554. package/docs/providers/arcee.md +0 -144
  555. package/docs/providers/azure-speech.md +0 -119
  556. package/docs/providers/bedrock-mantle.md +0 -211
  557. package/docs/providers/bedrock.md +0 -414
  558. package/docs/providers/cerebras.md +0 -130
  559. package/docs/providers/chutes.md +0 -153
  560. package/docs/providers/claude-max-api-proxy.md +0 -191
  561. package/docs/providers/cloudflare-ai-gateway.md +0 -119
  562. package/docs/providers/comfy.md +0 -362
  563. package/docs/providers/deepgram.md +0 -184
  564. package/docs/providers/deepinfra.md +0 -92
  565. package/docs/providers/deepseek.md +0 -146
  566. package/docs/providers/ds4.md +0 -309
  567. package/docs/providers/elevenlabs.md +0 -130
  568. package/docs/providers/fal.md +0 -240
  569. package/docs/providers/fireworks.md +0 -144
  570. package/docs/providers/github-copilot.md +0 -257
  571. package/docs/providers/gmi.md +0 -92
  572. package/docs/providers/google.md +0 -472
  573. package/docs/providers/gradium.md +0 -123
  574. package/docs/providers/groq.md +0 -171
  575. package/docs/providers/huggingface.md +0 -235
  576. package/docs/providers/index.md +0 -105
  577. package/docs/providers/inferrs.md +0 -272
  578. package/docs/providers/inworld.md +0 -120
  579. package/docs/providers/kilocode.md +0 -135
  580. package/docs/providers/litellm.md +0 -234
  581. package/docs/providers/lmstudio.md +0 -224
  582. package/docs/providers/minimax.md +0 -505
  583. package/docs/providers/mistral.md +0 -235
  584. package/docs/providers/models.md +0 -64
  585. package/docs/providers/moonshot.md +0 -413
  586. package/docs/providers/novita.md +0 -92
  587. package/docs/providers/nvidia.md +0 -158
  588. package/docs/providers/ollama-cloud.md +0 -115
  589. package/docs/providers/ollama.md +0 -1225
  590. package/docs/providers/openai.md +0 -1093
  591. package/docs/providers/opencode-go.md +0 -123
  592. package/docs/providers/opencode.md +0 -149
  593. package/docs/providers/openrouter.md +0 -349
  594. package/docs/providers/perplexity-provider.md +0 -123
  595. package/docs/providers/pixverse.md +0 -165
  596. package/docs/providers/qianfan.md +0 -132
  597. package/docs/providers/qwen-oauth.md +0 -115
  598. package/docs/providers/qwen.md +0 -364
  599. package/docs/providers/runway.md +0 -103
  600. package/docs/providers/senseaudio.md +0 -68
  601. package/docs/providers/sglang.md +0 -161
  602. package/docs/providers/stepfun.md +0 -229
  603. package/docs/providers/synthetic.md +0 -154
  604. package/docs/providers/tencent.md +0 -130
  605. package/docs/providers/together.md +0 -140
  606. package/docs/providers/venice.md +0 -312
  607. package/docs/providers/vercel-ai-gateway.md +0 -128
  608. package/docs/providers/vllm.md +0 -407
  609. package/docs/providers/volcengine.md +0 -199
  610. package/docs/providers/vydra.md +0 -180
  611. package/docs/providers/xai.md +0 -571
  612. package/docs/providers/xiaomi.md +0 -262
  613. package/docs/providers/zai.md +0 -224
  614. package/docs/refactor/access.md +0 -9
  615. package/docs/refactor/acp.md +0 -298
  616. package/docs/refactor/canvas.md +0 -131
  617. package/docs/refactor/database-first.md +0 -2256
  618. package/docs/refactor/ingress-core.md +0 -341
  619. package/docs/reference/AGENTS.default.md +0 -131
  620. package/docs/reference/RELEASING.md +0 -799
  621. package/docs/reference/api-usage-costs.md +0 -208
  622. package/docs/reference/application-modernization-plan.md +0 -208
  623. package/docs/reference/code-mode.md +0 -773
  624. package/docs/reference/credits.md +0 -33
  625. package/docs/reference/device-models.md +0 -50
  626. package/docs/reference/fengming-sdk-api-design.md +0 -390
  627. package/docs/reference/full-release-validation.md +0 -202
  628. package/docs/reference/memory-config.md +0 -604
  629. package/docs/reference/prompt-caching.md +0 -358
  630. package/docs/reference/release-performance-sweep.md +0 -360
  631. package/docs/reference/rich-output-protocol.md +0 -101
  632. package/docs/reference/rpc.md +0 -43
  633. package/docs/reference/secret-placeholder-conventions.md +0 -33
  634. package/docs/reference/secretref-credential-surface.md +0 -159
  635. package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -663
  636. package/docs/reference/session-management-compaction.md +0 -474
  637. package/docs/reference/templates/AGENTS.dev.md +0 -90
  638. package/docs/reference/templates/AGENTS.md +0 -227
  639. package/docs/reference/templates/BOOT.md +0 -16
  640. package/docs/reference/templates/BOOTSTRAP.md +0 -66
  641. package/docs/reference/templates/CLAUDE.md +0 -1
  642. package/docs/reference/templates/HEARTBEAT.md +0 -24
  643. package/docs/reference/templates/IDENTITY.dev.md +0 -52
  644. package/docs/reference/templates/IDENTITY.md +0 -34
  645. package/docs/reference/templates/SOUL.dev.md +0 -82
  646. package/docs/reference/templates/SOUL.md +0 -49
  647. package/docs/reference/templates/TOOLS.dev.md +0 -29
  648. package/docs/reference/templates/TOOLS.md +0 -51
  649. package/docs/reference/templates/USER.dev.md +0 -23
  650. package/docs/reference/templates/USER.md +0 -28
  651. package/docs/reference/test.md +0 -247
  652. package/docs/reference/token-use.md +0 -246
  653. package/docs/reference/transcript-hygiene.md +0 -214
  654. package/docs/reference/wizard.md +0 -252
  655. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -101
  656. package/docs/security/THREAT-MODEL-ATLAS.md +0 -611
  657. package/docs/security/formal-verification.md +0 -170
  658. package/docs/security/incident-response.md +0 -59
  659. package/docs/security/network-proxy.md +0 -268
  660. package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -12
  661. package/docs/snippets/plugin-publish/minimal-package.json +0 -16
  662. package/docs/specs/claw-supervisor.md +0 -247
  663. package/docs/start/bootstrapping.md +0 -49
  664. package/docs/start/docs-directory.md +0 -69
  665. package/docs/start/fengming.md +0 -252
  666. package/docs/start/getting-started.md +0 -152
  667. package/docs/start/hubs.md +0 -201
  668. package/docs/start/lore.md +0 -223
  669. package/docs/start/onboarding-overview.md +0 -72
  670. package/docs/start/onboarding.md +0 -98
  671. package/docs/start/quickstart.md +0 -25
  672. package/docs/start/setup.md +0 -178
  673. package/docs/start/showcase.md +0 -363
  674. package/docs/start/wizard-cli-automation.md +0 -232
  675. package/docs/start/wizard-cli-reference.md +0 -331
  676. package/docs/start/wizard.md +0 -141
  677. package/docs/style.css +0 -137
  678. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -316
  679. package/docs/tools/acp-agents-setup.md +0 -351
  680. package/docs/tools/acp-agents.md +0 -854
  681. package/docs/tools/agent-send.md +0 -130
  682. package/docs/tools/apply-patch.md +0 -64
  683. package/docs/tools/brave-search.md +0 -139
  684. package/docs/tools/browser-control.md +0 -391
  685. package/docs/tools/browser-linux-troubleshooting.md +0 -173
  686. package/docs/tools/browser-login.md +0 -77
  687. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -219
  688. package/docs/tools/browser.md +0 -810
  689. package/docs/tools/btw.md +0 -159
  690. package/docs/tools/capability-cookbook.md +0 -12
  691. package/docs/tools/clawhub.md +0 -5
  692. package/docs/tools/code-execution.md +0 -173
  693. package/docs/tools/creating-skills.md +0 -158
  694. package/docs/tools/diffs.md +0 -525
  695. package/docs/tools/duckduckgo-search.md +0 -109
  696. package/docs/tools/elevated.md +0 -128
  697. package/docs/tools/exa-search.md +0 -152
  698. package/docs/tools/exec-approvals-advanced.md +0 -444
  699. package/docs/tools/exec-approvals.md +0 -494
  700. package/docs/tools/exec.md +0 -285
  701. package/docs/tools/firecrawl.md +0 -155
  702. package/docs/tools/gemini-search.md +0 -114
  703. package/docs/tools/goal.md +0 -217
  704. package/docs/tools/grok-search.md +0 -129
  705. package/docs/tools/image-generation.md +0 -493
  706. package/docs/tools/index.md +0 -178
  707. package/docs/tools/kimi-search.md +0 -105
  708. package/docs/tools/llm-task.md +0 -137
  709. package/docs/tools/lobster.md +0 -365
  710. package/docs/tools/loop-detection.md +0 -154
  711. package/docs/tools/media-overview.md +0 -160
  712. package/docs/tools/minimax-search.md +0 -102
  713. package/docs/tools/multi-agent-sandbox-tools.md +0 -409
  714. package/docs/tools/music-generation.md +0 -372
  715. package/docs/tools/ollama-search.md +0 -153
  716. package/docs/tools/pdf.md +0 -213
  717. package/docs/tools/perplexity-search.md +0 -220
  718. package/docs/tools/plugin.md +0 -363
  719. package/docs/tools/reactions.md +0 -100
  720. package/docs/tools/searxng-search.md +0 -141
  721. package/docs/tools/skills-config.md +0 -195
  722. package/docs/tools/skills.md +0 -569
  723. package/docs/tools/slash-commands.md +0 -487
  724. package/docs/tools/steer.md +0 -77
  725. package/docs/tools/subagents.md +0 -651
  726. package/docs/tools/tavily.md +0 -162
  727. package/docs/tools/thinking.md +0 -142
  728. package/docs/tools/tokenjuice.md +0 -84
  729. package/docs/tools/tool-search.md +0 -269
  730. package/docs/tools/trajectory.md +0 -229
  731. package/docs/tools/tts.md +0 -1009
  732. package/docs/tools/video-generation.md +0 -555
  733. package/docs/tools/web-fetch.md +0 -210
  734. package/docs/tools/web.md +0 -461
  735. package/docs/tts.md +0 -11
  736. package/docs/vps.md +0 -139
  737. package/docs/web/control-ui.md +0 -512
  738. package/docs/web/dashboard.md +0 -107
  739. package/docs/web/index.md +0 -133
  740. package/docs/web/tui.md +0 -250
  741. package/docs/web/webchat.md +0 -102
  742. package/npm-shrinkwrap.json +0 -12861
  743. package/patches/.gitkeep +0 -0
  744. package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -41
  745. package/pnpm-workspace.yaml +0 -120
  746. package/scripts/crabbox-wrapper.mjs +0 -2004
  747. package/scripts/lib/official-external-channel-catalog.json +0 -560
  748. package/scripts/lib/official-external-plugin-catalog.json +0 -264
  749. package/scripts/lib/official-external-provider-catalog.json +0 -158
  750. package/scripts/lib/package-dist-imports.mjs +0 -171
  751. package/scripts/npm-runner.mjs +0 -91
  752. package/scripts/postinstall-bundled-plugins.mjs +0 -978
  753. package/scripts/preinstall-package-manager-warning.mjs +0 -64
  754. package/scripts/prepare-git-hooks.mjs +0 -72
  755. package/scripts/windows-cmd-helpers.mjs +0 -22
  756. package/skills/batch/SKILL.md +0 -118
  757. package/skills/code-review/SKILL.md +0 -107
  758. package/skills/debug/SKILL.md +0 -83
  759. package/skills/loop/SKILL.md +0 -118
  760. package/skills/run/SKILL.md +0 -79
  761. package/skills/run-skill-generator/SKILL.md +0 -179
  762. package/skills/verify/SKILL.md +0 -103
  763. package/src/agents/templates/HEARTBEAT.md +0 -3
@@ -1,355 +0,0 @@
1
- ---
2
- summary: "Run FengMing on local LLMs (LM Studio, vLLM, LiteLLM, custom OpenAI endpoints)"
3
- read_when:
4
- - You want to serve models from your own GPU box
5
- - You are wiring LM Studio or an OpenAI-compatible proxy
6
- - You need the safest local model guidance
7
- title: "Local models"
8
- ---
9
-
10
- Local models are doable. They also raise the bar on hardware, context size, and prompt-injection defense — small or aggressively quantized cards truncate context and leak safety. This page is the opinionated guide for higher-end local stacks and custom OpenAI-compatible local servers. For lowest-friction onboarding, start with [LM Studio](/providers/lmstudio) or [Ollama](/providers/ollama) and `fengming onboard`.
11
-
12
- For local servers that should start only when a selected model needs them, see
13
- [Local model services](/gateway/local-model-services).
14
-
15
- ## Hardware floor
16
-
17
- Aim high: **≥2 maxed-out Mac Studios or an equivalent GPU rig (~$30k+)** for a comfortable agent loop. A single **24 GB** GPU works only for lighter prompts at higher latency. Always run the **largest / full-size variant you can host**; small or heavily quantized checkpoints raise prompt-injection risk (see [Security](/gateway/security)).
18
-
19
- ## Pick a backend
20
-
21
- | Backend | Use when |
22
- | ---------------------------------------------------- | --------------------------------------------------------------------------- |
23
- | [ds4](/providers/ds4) | Local DeepSeek V4 Flash on macOS Metal with OpenAI-compatible tool calls |
24
- | [LM Studio](/providers/lmstudio) | First-time local setup, GUI loader, native Responses API |
25
- | LiteLLM / OAI-proxy / custom OpenAI-compatible proxy | You front another model API and need FengMing to treat it as OpenAI |
26
- | MLX / vLLM / SGLang | High-throughput self-hosted serving with an OpenAI-compatible HTTP endpoint |
27
- | [Ollama](/providers/ollama) | CLI workflow, model library, hands-off systemd service |
28
-
29
- Use Responses API (`api: "openai-responses"`) when the backend supports it (LM Studio does). Otherwise stick to Chat Completions (`api: "openai-completions"`).
30
-
31
- <Warning>
32
- **WSL2 + Ollama + NVIDIA/CUDA users:** The official Ollama Linux installer enables a systemd service with `Restart=always`. On WSL2 GPU setups, autostart can reload the last model during boot and pin host memory. If your WSL2 VM repeatedly restarts after enabling Ollama, see [WSL2 crash loop](/providers/ollama#wsl2-crash-loop-repeated-reboots).
33
- </Warning>
34
-
35
- ## Recommended: LM Studio + large local model (Responses API)
36
-
37
- Best current local stack. Load a large model in LM Studio (for example, a full-size Qwen, DeepSeek, or Llama build), enable the local server (default `http://127.0.0.1:1234`), and use Responses API to keep reasoning separate from final text.
38
-
39
- ```json5
40
- {
41
- agents: {
42
- defaults: {
43
- model: { primary: "lmstudio/my-local-model" },
44
- models: {
45
- "anthropic/claude-opus-4-6": { alias: "Opus" },
46
- "lmstudio/my-local-model": { alias: "Local" },
47
- },
48
- },
49
- },
50
- models: {
51
- mode: "merge",
52
- providers: {
53
- lmstudio: {
54
- baseUrl: "http://127.0.0.1:1234/v1",
55
- apiKey: "lmstudio",
56
- api: "openai-responses",
57
- models: [
58
- {
59
- id: "my-local-model",
60
- name: "Local Model",
61
- reasoning: false,
62
- input: ["text"],
63
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
64
- contextWindow: 196608,
65
- maxTokens: 8192,
66
- },
67
- ],
68
- },
69
- },
70
- },
71
- }
72
- ```
73
-
74
- **Setup checklist**
75
-
76
- - Install LM Studio: [https://lmstudio.ai](https://lmstudio.ai)
77
- - In LM Studio, download the **largest model build available** (avoid "small"/heavily quantized variants), start the server, confirm `http://127.0.0.1:1234/v1/models` lists it.
78
- - Replace `my-local-model` with the actual model ID shown in LM Studio.
79
- - Keep the model loaded; cold-load adds startup latency.
80
- - Adjust `contextWindow`/`maxTokens` if your LM Studio build differs.
81
- - For WhatsApp, stick to Responses API so only final text is sent.
82
-
83
- Keep hosted models configured even when running local; use `models.mode: "merge"` so fallbacks stay available.
84
-
85
- ### Hybrid config: hosted primary, local fallback
86
-
87
- ```json5
88
- {
89
- agents: {
90
- defaults: {
91
- model: {
92
- primary: "anthropic/claude-sonnet-4-6",
93
- fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"],
94
- },
95
- models: {
96
- "anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
97
- "lmstudio/my-local-model": { alias: "Local" },
98
- "anthropic/claude-opus-4-6": { alias: "Opus" },
99
- },
100
- },
101
- },
102
- models: {
103
- mode: "merge",
104
- providers: {
105
- lmstudio: {
106
- baseUrl: "http://127.0.0.1:1234/v1",
107
- apiKey: "lmstudio",
108
- api: "openai-responses",
109
- models: [
110
- {
111
- id: "my-local-model",
112
- name: "Local Model",
113
- reasoning: false,
114
- input: ["text"],
115
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
116
- contextWindow: 196608,
117
- maxTokens: 8192,
118
- },
119
- ],
120
- },
121
- },
122
- },
123
- }
124
- ```
125
-
126
- ### Local-first with hosted safety net
127
-
128
- Swap the primary and fallback order; keep the same providers block and `models.mode: "merge"` so you can fall back to Sonnet or Opus when the local box is down.
129
-
130
- ### Regional hosting / data routing
131
-
132
- - Hosted MiniMax/Kimi/GLM variants also exist on OpenRouter with region-pinned endpoints (e.g., US-hosted). Pick the regional variant there to keep traffic in your chosen jurisdiction while still using `models.mode: "merge"` for Anthropic/OpenAI fallbacks.
133
- - Local-only remains the strongest privacy path; hosted regional routing is the middle ground when you need provider features but want control over data flow.
134
-
135
- ## Other OpenAI-compatible local proxies
136
-
137
- MLX (`mlx_lm.server`), vLLM, SGLang, LiteLLM, OAI-proxy, or custom
138
- gateways work if they expose an OpenAI-style `/v1/chat/completions`
139
- endpoint. Use the Chat Completions adapter unless the backend explicitly
140
- documents `/v1/responses` support. Replace the provider block above with your
141
- endpoint and model ID:
142
-
143
- ```json5
144
- {
145
- agents: {
146
- defaults: {
147
- model: { primary: "local/my-local-model" },
148
- },
149
- },
150
- models: {
151
- mode: "merge",
152
- providers: {
153
- local: {
154
- baseUrl: "http://127.0.0.1:8000/v1",
155
- apiKey: "sk-local",
156
- api: "openai-completions",
157
- timeoutSeconds: 300,
158
- models: [
159
- {
160
- id: "my-local-model",
161
- name: "Local Model",
162
- reasoning: false,
163
- input: ["text"],
164
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
165
- contextWindow: 120000,
166
- maxTokens: 8192,
167
- },
168
- ],
169
- },
170
- },
171
- },
172
- }
173
- ```
174
-
175
- If `api` is omitted on a custom provider with a `baseUrl`, FengMing defaults to
176
- `openai-completions`. Custom/local provider entries trust their exact configured
177
- `baseUrl` origin for guarded model requests, including loopback, LAN, tailnet,
178
- and private DNS hosts. Requests to other private origins still need
179
- `request.allowPrivateNetwork: true`; metadata/link-local origins remain blocked
180
- without explicit opt-in. Set it to `false` to opt out of exact-origin trust.
181
-
182
- The `models.providers.<id>.models[].id` value is provider-local. Do not
183
- include the provider prefix there. For example, an MLX server started with
184
- `mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit` should use this
185
- catalog id and model ref:
186
-
187
- - `models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"`
188
- - `agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"`
189
-
190
- Set `input: ["text", "image"]` on local or proxied vision models so image
191
- attachments are injected into agent turns. Interactive custom-provider
192
- onboarding infers common vision model IDs and asks only for unknown names.
193
- Non-interactive onboarding uses the same inference; use `--custom-image-input`
194
- for unknown vision IDs or `--custom-text-input` when a known-looking model is
195
- text-only behind your endpoint.
196
-
197
- Keep `models.mode: "merge"` so hosted models stay available as fallbacks.
198
- Use `models.providers.<id>.timeoutSeconds` for slow local or remote model
199
- servers before raising `agents.defaults.timeoutSeconds`. The provider timeout
200
- applies only to model HTTP requests, including connect, headers, body streaming,
201
- and the total guarded-fetch abort. If the agent or run timeout is lower, raise
202
- that ceiling too because provider timeouts cannot extend the whole agent run.
203
-
204
- <Note>
205
- For custom OpenAI-compatible providers, persisting a non-secret local marker such as `apiKey: "ollama-local"` is accepted when `baseUrl` resolves to loopback, a private LAN, `.local`, or a bare hostname. FengMing treats it as a valid local credential instead of reporting a missing key. Use a real value for any provider that accepts a public hostname.
206
- </Note>
207
-
208
- Behavior note for local/proxied `/v1` backends:
209
-
210
- - FengMing treats these as proxy-style OpenAI-compatible routes, not native
211
- OpenAI endpoints
212
- - native OpenAI-only request shaping does not apply here: no
213
- `service_tier`, no Responses `store`, no OpenAI reasoning-compat payload
214
- shaping, and no prompt-cache hints
215
- - hidden FengMing attribution headers (`originator`, `version`, `User-Agent`)
216
- are not injected on these custom proxy URLs
217
-
218
- Compatibility notes for stricter OpenAI-compatible backends:
219
-
220
- - Some servers accept only string `messages[].content` on Chat Completions, not
221
- structured content-part arrays. Set
222
- `models.providers.<provider>.models[].compat.requiresStringContent: true` for
223
- those endpoints.
224
- - Some local models emit standalone bracketed tool requests as text, such as
225
- `[tool_name]` followed by JSON and `[END_TOOL_REQUEST]`. FengMing promotes
226
- those into real tool calls only when the name exactly matches a registered
227
- tool for the turn; otherwise the block is treated as unsupported text and is
228
- hidden from user-visible replies.
229
- - If a model emits JSON, XML, or ReAct-style text that looks like a tool call
230
- but the provider did not emit a structured invocation, FengMing leaves it as
231
- text and logs a warning with the run id, provider/model, detected pattern, and
232
- tool name when available. Treat that as provider/model tool-call
233
- incompatibility, not a completed tool run.
234
- - If tools appear as assistant text instead of running, for example raw JSON,
235
- XML, ReAct syntax, or an empty `tool_calls` array in the provider response,
236
- first verify the server is using a tool-call-capable chat template/parser. For
237
- OpenAI-compatible Chat Completions backends whose parser works only when tool
238
- use is forced, set a per-model request override instead of relying on text
239
- parsing:
240
-
241
- ```json5
242
- {
243
- agents: {
244
- defaults: {
245
- models: {
246
- "local/my-local-model": {
247
- params: {
248
- extra_body: {
249
- tool_choice: "required",
250
- },
251
- },
252
- },
253
- },
254
- },
255
- },
256
- }
257
- ```
258
-
259
- Use this only for models/sessions where every normal turn should call a tool.
260
- It overrides FengMing's default proxy value of `tool_choice: "auto"`.
261
- Replace `local/my-local-model` with the exact provider/model ref shown by
262
- `fengming models list`.
263
-
264
- ```bash
265
- fengming config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge
266
- ```
267
-
268
- - If a custom OpenAI-compatible model accepts OpenAI reasoning efforts beyond
269
- the built-in profile, declare them on the model compat block. Adding `"xhigh"`
270
- here makes `/think xhigh`, session pickers, Gateway validation, and `llm-task`
271
- validation expose the level for that configured provider/model ref:
272
-
273
- ```json5
274
- {
275
- models: {
276
- providers: {
277
- local: {
278
- baseUrl: "http://127.0.0.1:8000/v1",
279
- apiKey: "sk-local",
280
- api: "openai-responses",
281
- models: [
282
- {
283
- id: "gpt-5.4",
284
- name: "GPT 5.4 via local proxy",
285
- reasoning: true,
286
- input: ["text"],
287
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
288
- contextWindow: 196608,
289
- maxTokens: 8192,
290
- compat: {
291
- supportedReasoningEfforts: ["low", "medium", "high", "xhigh"],
292
- reasoningEffortMap: { xhigh: "xhigh" },
293
- },
294
- },
295
- ],
296
- },
297
- },
298
- },
299
- }
300
- ```
301
-
302
- ## Smaller or stricter backends
303
-
304
- If the model loads cleanly but full agent turns misbehave, work top-down — confirm transport first, then narrow the surface.
305
-
306
- 1. **Confirm the local model itself responds.** No tools, no agent context:
307
-
308
- ```bash
309
- fengming infer model run --local --model <provider/model> --prompt "Reply with exactly: pong" --json
310
- ```
311
-
312
- 2. **Confirm Gateway routing.** Sends only the supplied prompt — skips transcript, AGENTS bootstrap, context-engine assembly, tools, and bundled MCP servers, but still exercises Gateway routing, auth, and provider selection:
313
-
314
- ```bash
315
- fengming infer model run --gateway --model <provider/model> --prompt "Reply with exactly: pong" --json
316
- ```
317
-
318
- 3. **Try lean mode.** If both probes pass but real agent turns fail with malformed tool calls or oversized prompts, enable `agents.defaults.experimental.localModelLean: true`. It drops the three heaviest default tools (`browser`, `cron`, `message`) so the prompt shape is smaller and less brittle. See [Experimental Features → Local model lean mode](/concepts/experimental-features#local-model-lean-mode) for the full explanation, when to use it, and how to confirm it is on.
319
-
320
- 4. **Disable tools entirely as a last resort.** If lean mode is not enough, set `models.providers.<provider>.models[].compat.supportsTools: false` for that model entry. The agent will then operate without tool calls on that model.
321
-
322
- 5. **Past that, the bottleneck is upstream.** If the backend still fails only on larger FengMing runs after lean mode and `supportsTools: false`, the remaining issue is usually upstream model or server capacity — context window, GPU memory, kv-cache eviction, or a backend bug. It is not FengMing's transport layer at that point.
323
-
324
- ## Troubleshooting
325
-
326
- - Gateway can reach the proxy? `curl http://127.0.0.1:1234/v1/models`.
327
- - LM Studio model unloaded? Reload; cold start is a common "hanging" cause.
328
- - Local server says `terminated`, `ECONNRESET`, or closes the stream mid-turn?
329
- FengMing records a low-cardinality `model.call.error.failureKind` plus the
330
- FengMing process RSS/heap snapshot in diagnostics. For LM Studio/Ollama
331
- memory pressure, match that timestamp against the server log or macOS crash /
332
- jetsam log to confirm whether the model server was killed.
333
- - FengMing derives context-window preflight thresholds from the detected model window, or from the uncapped model window when `agents.defaults.contextTokens` lowers the effective window. It warns below 20% with an **8k** floor. Hard blocks use the 10% threshold with a **4k** floor, capped to the effective context window so oversized model metadata cannot reject an otherwise valid user cap. If you hit that preflight, raise the server/model context limit or choose a larger model.
334
- - Context errors? Lower `contextWindow` or raise your server limit.
335
- - OpenAI-compatible server returns `messages[].content ... expected a string`?
336
- Add `compat.requiresStringContent: true` on that model entry.
337
- - OpenAI-compatible server returns `validation.keys` or says message entries only allow `role` and `content`?
338
- Add `compat.strictMessageKeys: true` on that model entry.
339
- - Direct tiny `/v1/chat/completions` calls work, but `fengming infer model run --local`
340
- fails on Gemma or another local model? Check the provider URL, model ref, auth
341
- marker, and server logs first; local `model run` does not include agent tools.
342
- If local `model run` succeeds but larger agent turns fail, reduce the agent
343
- tool surface with `localModelLean` or `compat.supportsTools: false`.
344
- - Tool calls show up as raw JSON/XML/ReAct text, or the provider returns an
345
- empty `tool_calls` array? Do not add a proxy that blindly converts assistant
346
- text into tool execution. Fix the server chat template/parser first. If the
347
- model only works when tool use is forced, add the per-model
348
- `params.extra_body.tool_choice: "required"` override above and use that model
349
- entry only for sessions where a tool call is expected on every turn.
350
- - Safety: local models skip provider-side filters; keep agents narrow and compaction on to limit prompt injection blast radius.
351
-
352
- ## Related
353
-
354
- - [Configuration reference](/gateway/configuration-reference)
355
- - [Model failover](/concepts/model-failover)
@@ -1,149 +0,0 @@
1
- ---
2
- summary: "Logging surfaces, file logs, WS log styles, and console formatting"
3
- read_when:
4
- - Changing logging output or formats
5
- - Debugging CLI or gateway output
6
- title: "Gateway logging"
7
- ---
8
-
9
- # Logging
10
-
11
- For a user-facing overview (CLI + Control UI + config), see [/logging](/logging).
12
-
13
- FengMing has two log "surfaces":
14
-
15
- - **Console output** (what you see in the terminal / Debug UI).
16
- - **File logs** (JSON lines) written by the gateway logger.
17
-
18
- At startup, the Gateway logs the resolved default agent model together with the
19
- mode defaults that affect new sessions, for example:
20
-
21
- ```text
22
- agent model: openai/gpt-5.5 (thinking=medium, fast=on)
23
- ```
24
-
25
- `thinking` comes from the default agent, model params, or global agent default;
26
- when it is unset, the startup summary shows `medium`. `fast` comes from the
27
- default agent or model `fastMode` params.
28
-
29
- ## File-based logger
30
-
31
- - Default rolling log file is under `/tmp/fengming/` (one file per day): `fengming-YYYY-MM-DD.log`
32
- - Date uses the gateway host's local timezone.
33
- - Active log files rotate at `logging.maxFileBytes` (default: 100 MB), keeping
34
- up to five numbered archives and continuing to write a fresh active file.
35
- - The log file path and level can be configured via `~/.fengming/fengming.json`:
36
- - `logging.file`
37
- - `logging.level`
38
-
39
- The file format is one JSON object per line.
40
-
41
- Talk, realtime voice, and managed-room code paths use the shared file logger for
42
- bounded lifecycle records. These records are intended for operational debugging
43
- and OTLP log export; transcript text, audio payloads, turn ids, call ids, and
44
- provider item ids are not copied into the log record.
45
-
46
- The Control UI Logs tab tails this file via the gateway (`logs.tail`).
47
- CLI can do the same:
48
-
49
- ```bash
50
- fengming logs --follow
51
- ```
52
-
53
- **Verbose vs. log levels**
54
-
55
- - **File logs** are controlled exclusively by `logging.level`.
56
- - `--verbose` only affects **console verbosity** (and WS log style); it does **not**
57
- raise the file log level.
58
- - To capture verbose-only details in file logs, set `logging.level` to `debug` or
59
- `trace`.
60
- - Trace logging also includes diagnostic timing summaries for selected hot paths,
61
- such as plugin tool factory preparation. See
62
- [/tools/plugin#slow-plugin-tool-setup](/tools/plugin#slow-plugin-tool-setup).
63
-
64
- ## Console capture
65
-
66
- The CLI captures `console.log/info/warn/error/debug/trace` and writes them to file logs,
67
- while still printing to stdout/stderr.
68
-
69
- You can tune console verbosity independently via:
70
-
71
- - `logging.consoleLevel` (default `info`)
72
- - `logging.consoleStyle` (`pretty` | `compact` | `json`)
73
-
74
- ## Redaction
75
-
76
- FengMing can mask sensitive tokens before log or transcript output leaves the
77
- process. This logging redaction policy is applied at console, file-log, OTLP
78
- log-record, and session transcript text sinks, so matching secret values are
79
- masked before JSONL lines or messages are written to disk.
80
-
81
- - `logging.redactSensitive`: `off` | `tools` (default: `tools`)
82
- - `logging.redactPatterns`: array of regex strings (overrides defaults)
83
- - Use raw regex strings (auto `gi`), or `/pattern/flags` if you need custom flags.
84
- - Matches are masked by keeping the first 6 + last 4 chars (length >= 18), otherwise `***`.
85
- - Defaults cover common key assignments, CLI flags, JSON fields, bearer headers, PEM blocks, popular token prefixes, and payment credential field names such as card number, CVC/CVV, shared payment token, and payment credential.
86
-
87
- Some safety boundaries always redact regardless of `logging.redactSensitive`.
88
- That includes Control UI tool-call events, `sessions_history` tool output,
89
- diagnostics support exports, provider error observations, exec approval command
90
- display, and Gateway WebSocket protocol logs. These surfaces may still use
91
- `logging.redactPatterns` as additional patterns, but `redactSensitive: "off"`
92
- does not make them emit raw secrets.
93
-
94
- ## Gateway WebSocket logs
95
-
96
- The gateway prints WebSocket protocol logs in two modes:
97
-
98
- - **Normal mode (no `--verbose`)**: only "interesting" RPC results are printed:
99
- - errors (`ok=false`)
100
- - slow calls (default threshold: `>= 50ms`)
101
- - parse errors
102
- - **Verbose mode (`--verbose`)**: prints all WS request/response traffic.
103
-
104
- ### WS log style
105
-
106
- `fengming gateway` supports a per-gateway style switch:
107
-
108
- - `--ws-log auto` (default): normal mode is optimized; verbose mode uses compact output
109
- - `--ws-log compact`: compact output (paired request/response) when verbose
110
- - `--ws-log full`: full per-frame output when verbose
111
- - `--compact`: alias for `--ws-log compact`
112
-
113
- Examples:
114
-
115
- ```bash
116
- # optimized (only errors/slow)
117
- fengming gateway
118
-
119
- # show all WS traffic (paired)
120
- fengming gateway --verbose --ws-log compact
121
-
122
- # show all WS traffic (full meta)
123
- fengming gateway --verbose --ws-log full
124
- ```
125
-
126
- ## Console formatting (subsystem logging)
127
-
128
- The console formatter is **TTY-aware** and prints consistent, prefixed lines.
129
- Subsystem loggers keep output grouped and scannable.
130
-
131
- Behavior:
132
-
133
- - **Subsystem prefixes** on every line (e.g. `[gateway]`, `[canvas]`, `[tailscale]`)
134
- - **Subsystem colors** (stable per subsystem) plus level coloring
135
- - **Color when output is a TTY or the environment looks like a rich terminal** (`TERM`/`COLORTERM`/`TERM_PROGRAM`), respects `NO_COLOR`
136
- - **Shortened subsystem prefixes**: drops leading `gateway/` + `channels/`, keeps last 2 segments (e.g. `whatsapp/outbound`)
137
- - **Sub-loggers by subsystem** (auto prefix + structured field `{ subsystem }`)
138
- - **`logRaw()`** for QR/UX output (no prefix, no formatting)
139
- - **Console styles** (e.g. `pretty | compact | json`)
140
- - **Console log level** separate from file log level (file keeps full detail when `logging.level` is set to `debug`/`trace`)
141
- - **WhatsApp message bodies** are logged at `debug` (use `--verbose` to see them)
142
-
143
- This keeps existing file logs stable while making interactive output scannable.
144
-
145
- ## Related
146
-
147
- - [Logging](/logging)
148
- - [OpenTelemetry export](/gateway/opentelemetry)
149
- - [Diagnostics export](/gateway/diagnostics)
@@ -1,178 +0,0 @@
1
- ---
2
- summary: "Run multiple FengMing Gateways on one host (isolation, ports, and profiles)"
3
- read_when:
4
- - Running more than one Gateway on the same machine
5
- - You need isolated config/state/ports per Gateway
6
- title: "Multiple gateways"
7
- ---
8
-
9
- Most setups should use one Gateway because a single Gateway can handle multiple messaging connections and agents. If you need stronger isolation or redundancy (e.g., a rescue bot), run separate Gateways with isolated profiles/ports.
10
-
11
- ## Best recommended setup
12
-
13
- For most users, the simplest rescue-bot setup is:
14
-
15
- - keep the main bot on the default profile
16
- - run the rescue bot on `--profile rescue`
17
- - use a completely separate Telegram bot for the rescue account
18
- - keep the rescue bot on a different base port such as `19789`
19
-
20
- This keeps the rescue bot isolated from the main bot so it can debug or apply
21
- config changes if the primary bot is down. Leave at least 20 ports between
22
- base ports so the derived browser/canvas/CDP ports never collide.
23
-
24
- ## Rescue-Bot Quickstart
25
-
26
- Use this as the default path unless you have a strong reason to do something
27
- else:
28
-
29
- ```bash
30
- # Rescue bot (separate Telegram bot, separate profile, port 19789)
31
- fengming --profile rescue onboard
32
- fengming --profile rescue gateway install --port 19789
33
- ```
34
-
35
- If your main bot is already running, that is usually all you need.
36
-
37
- During `fengming --profile rescue onboard`:
38
-
39
- - use the separate Telegram bot token
40
- - keep the `rescue` profile
41
- - use a base port at least 20 higher than the main bot
42
- - accept the default rescue workspace unless you already manage one yourself
43
-
44
- If onboarding already installed the rescue service for you, the final
45
- `gateway install` is not needed.
46
-
47
- ## Why this works
48
-
49
- The rescue bot stays independent because it has its own:
50
-
51
- - profile/config
52
- - state directory
53
- - workspace
54
- - base port (plus derived ports)
55
- - Telegram bot token
56
-
57
- For most setups, use a completely separate Telegram bot for the rescue profile:
58
-
59
- - easy to keep operator-only
60
- - separate bot token and identity
61
- - independent from the main bot's channel/app install
62
- - simple DM-based recovery path when the main bot is broken
63
-
64
- ## What `--profile rescue onboard` Changes
65
-
66
- `fengming --profile rescue onboard` uses the normal onboarding flow, but it
67
- writes everything into a separate profile.
68
-
69
- In practice, that means the rescue bot gets its own:
70
-
71
- - config file
72
- - state directory
73
- - workspace (by default `~/.fengming/workspace-rescue`)
74
- - managed service name
75
-
76
- The prompts are otherwise the same as normal onboarding.
77
-
78
- ## General multi-gateway setup
79
-
80
- The rescue-bot layout above is the easiest default, but the same isolation
81
- pattern works for any pair or group of Gateways on one host.
82
-
83
- For a more general setup, give each extra Gateway its own named profile and its
84
- own base port:
85
-
86
- ```bash
87
- # main (default profile)
88
- fengming setup
89
- fengming gateway --port 18789
90
-
91
- # extra gateway
92
- fengming --profile ops setup
93
- fengming --profile ops gateway --port 19789
94
- ```
95
-
96
- If you want both Gateways to use named profiles, that also works:
97
-
98
- ```bash
99
- fengming --profile main setup
100
- fengming --profile main gateway --port 18789
101
-
102
- fengming --profile ops setup
103
- fengming --profile ops gateway --port 19789
104
- ```
105
-
106
- Services follow the same pattern:
107
-
108
- ```bash
109
- fengming gateway install
110
- fengming --profile ops gateway install --port 19789
111
- ```
112
-
113
- Use the rescue-bot quickstart when you want a fallback operator lane. Use the
114
- general profile pattern when you want multiple long-lived Gateways for
115
- different channels, tenants, workspaces, or operational roles.
116
-
117
- ## Isolation checklist
118
-
119
- Keep these unique per Gateway instance:
120
-
121
- - `FENGMING_CONFIG_PATH` — per-instance config file
122
- - `FENGMING_STATE_DIR` — per-instance sessions, creds, caches
123
- - `agents.defaults.workspace` — per-instance workspace root
124
- - `gateway.port` (or `--port`) — unique per instance
125
- - derived browser/canvas/CDP ports
126
-
127
- If these are shared, you will hit config races and port conflicts.
128
-
129
- ## Port mapping (derived)
130
-
131
- Base port = `gateway.port` (or `FENGMING_GATEWAY_PORT` / `--port`).
132
-
133
- - browser control service port = base + 2 (loopback only)
134
- - canvas host is served on the Gateway HTTP server (same port as `gateway.port`)
135
- - Browser profile CDP ports auto-allocate from `browser.controlPort + 9 .. + 108`
136
-
137
- If you override any of these in config or env, you must keep them unique per instance.
138
-
139
- ## Browser/CDP notes (common footgun)
140
-
141
- - Do **not** pin `browser.cdpUrl` to the same values on multiple instances.
142
- - Each instance needs its own browser control port and CDP range (derived from its gateway port).
143
- - If you need explicit CDP ports, set `browser.profiles.<name>.cdpPort` per instance.
144
- - Remote Chrome: use `browser.profiles.<name>.cdpUrl` (per profile, per instance).
145
-
146
- ## Manual env example
147
-
148
- ```bash
149
- FENGMING_CONFIG_PATH=~/.fengming/main.json \
150
- FENGMING_STATE_DIR=~/.fengming \
151
- fengming gateway --port 18789
152
-
153
- FENGMING_CONFIG_PATH=~/.fengming/rescue.json \
154
- FENGMING_STATE_DIR=~/.fengming-rescue \
155
- fengming gateway --port 19789
156
- ```
157
-
158
- ## Quick checks
159
-
160
- ```bash
161
- fengming gateway status --deep
162
- fengming --profile rescue gateway status --deep
163
- fengming --profile rescue gateway probe
164
- fengming status
165
- fengming --profile rescue status
166
- fengming --profile rescue browser status
167
- ```
168
-
169
- Interpretation:
170
-
171
- - `gateway status --deep` helps catch stale launchd/systemd/schtasks services from older installs.
172
- - `gateway probe` warning text such as `multiple reachable gateways detected` is expected only when you intentionally run more than one isolated gateway.
173
-
174
- ## Related
175
-
176
- - [Gateway runbook](/gateway)
177
- - [Gateway lock](/gateway/gateway-lock)
178
- - [Configuration](/gateway/configuration)