@cursor/bdk 0.2.22 → 0.2.24

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 (306) hide show
  1. package/dist/artifacts.d.ts +1 -1
  2. package/dist/artifacts.js +1 -1
  3. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  4. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +1 -1
  6. package/dist/channels/github/github-channel.js +1 -1
  7. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  8. package/dist/channels/issues/issues-channel.js +1 -1
  9. package/dist/channels/origin/origin-channel.js +1 -1
  10. package/dist/channels/runs/runs-channel.js +1 -1
  11. package/dist/channels/slack/manifest.d.ts.map +1 -1
  12. package/dist/channels/slack/manifest.js +10 -5
  13. package/dist/channels/slack/tool-approval-events.js +5 -5
  14. package/dist/channels/slack/types.d.ts +7 -0
  15. package/dist/channels/slack/types.d.ts.map +1 -1
  16. package/dist/channels.d.ts +8 -1
  17. package/dist/channels.d.ts.map +1 -1
  18. package/dist/channels.js +33 -6
  19. package/dist/docs/404.html +3 -3
  20. package/dist/docs/assets/{app.BD1yvHJK.js → app.DTIg0uKK.js} +4 -4
  21. package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +1 -0
  22. package/dist/docs/assets/chunks/{VPLocalSearchBox.D25E8cn2.js → VPLocalSearchBox.BpJoSaxi.js} +2 -2
  23. package/dist/docs/assets/chunks/{arc.1hKM2X5X.js → arc.ylgNvRNq.js} +1 -1
  24. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.B1jE4xrG.js → architectureDiagram-Q4EWVU46.BMrNJqYk.js} +1 -1
  25. package/dist/docs/assets/chunks/{baseUniq.BwPi_maB.js → baseUniq.BBWUEqf9.js} +1 -1
  26. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.Cpy78QaZ.js → blockDiagram-DXYQGD6D.DFMu-Vza.js} +1 -1
  27. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DkCQNehT.js → c4Diagram-AHTNJAMY.8nkAAxWv.js} +1 -1
  28. package/dist/docs/assets/chunks/channel.BOebySCN.js +1 -0
  29. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BuR2bNxe.js → chunk-4BX2VUAB.sO-z2Bag.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C24IlKyd.js → chunk-4TB4RGXK.BMROzTMq.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-55IACEB6.CRD5fIjA.js → chunk-55IACEB6.X81urwg7.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.gKhxQpy2.js → chunk-EDXVE4YY.eaZVFLZM.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DPlyJIaG.js → chunk-FMBD7UC4.CmZhzstR.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.DfDSVvIq.js → chunk-OYMX7WX6.CTezt9Lc.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CsA80Wio.js → chunk-QZHKN3VN.s-T8zukB.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.BtXaaMC_.js → chunk-YZCP3GAM.DN4Nhy-D.js} +1 -1
  37. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +1 -0
  38. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +1 -0
  39. package/dist/docs/assets/chunks/clone.D06pA7ML.js +1 -0
  40. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Bw9v-Pfp.js → cose-bilkent-S5V4N54A.Cqyp4BUH.js} +1 -1
  41. package/dist/docs/assets/chunks/{dagre-KV5264BT.Wc53s510.js → dagre-KV5264BT.BIECOiqR.js} +1 -1
  42. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DxJJrlh5.js → diagram-5BDNPKRD.1tLyWoTg.js} +1 -1
  43. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Ldxa4MKP.js → diagram-G4DWMVQ6.BVY_6VMO.js} +1 -1
  44. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.D30RWuU-.js → diagram-MMDJMWI5.BSZ7xiBB.js} +1 -1
  45. package/dist/docs/assets/chunks/{diagram-TYMM5635.BuJ0aD65.js → diagram-TYMM5635.Bho6GmLh.js} +1 -1
  46. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.2N-5dVK2.js → erDiagram-SMLLAGMA.A0yVIANn.js} +1 -1
  47. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.B_te6Lre.js → flowDiagram-DWJPFMVM.ZMgbllH6.js} +1 -1
  48. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CuNbn0Wd.js → ganttDiagram-T4ZO3ILL.BCCPBhXo.js} +1 -1
  49. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.C1uOicx6.js → gitGraphDiagram-UUTBAWPF.BOkL0BbA.js} +1 -1
  50. package/dist/docs/assets/chunks/{graph.lSlSs4kh.js → graph.DMyZPu86.js} +1 -1
  51. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Cw_LmsnD.js → infoDiagram-42DDH7IO.CjG1IiEw.js} +1 -1
  52. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DikoN3ai.js → ishikawaDiagram-UXIWVN3A.UCe-kq9g.js} +1 -1
  53. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.buwzIgeY.js → journeyDiagram-VCZTEJTY.3WyOK_eY.js} +1 -1
  54. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.yacNqa4l.js → kanban-definition-6JOO6SKY.WoRG2qY1.js} +1 -1
  55. package/dist/docs/assets/chunks/{layout.CPlTUhtI.js → layout.DV07xDd5.js} +1 -1
  56. package/dist/docs/assets/chunks/{linear.BpHFbx_2.js → linear.CTO8mN6o.js} +1 -1
  57. package/dist/docs/assets/chunks/{min.B_dSxH85.js → min.SvTtcKuZ.js} +1 -1
  58. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BO5-vmxy.js → mindmap-definition-QFDTVHPH.DMGgQ-HB.js} +1 -1
  59. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Bwj1Zq54.js → pieDiagram-DEJITSTG.B7851apI.js} +1 -1
  60. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D5dcUqJC.js → quadrantDiagram-34T5L4WZ.CEqyypIX.js} +1 -1
  61. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CCP5yuT4.js → requirementDiagram-MS252O5E.C3Mwsw-H.js} +1 -1
  62. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BWAu-_Jq.js → sankeyDiagram-XADWPNL6.DyYK0XxY.js} +1 -1
  63. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.w545hYyz.js → sequenceDiagram-FGHM5R23.SiQPH-XM.js} +1 -1
  64. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CxcpDNk2.js → stateDiagram-FHFEXIEX.CTJMsP4p.js} +1 -1
  65. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +1 -0
  66. package/dist/docs/assets/chunks/{theme.DSJaK7i1.js → theme.DJo4my9R.js} +2 -2
  67. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.2WxkfxRf.js → timeline-definition-GMOUNBTQ.CxSNRlQ6.js} +1 -1
  68. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BGZwcK-Z.js → vennDiagram-DHZGUBPP.BdoJskyD.js} +1 -1
  69. package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +162 -0
  70. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.oryRmynQ.js → wardleyDiagram-NUSXRM2D.IjIbFn_F.js} +1 -1
  71. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bq7gMvIU.js → xychartDiagram-5P7HB3ND.CPUxDZLH.js} +1 -1
  72. package/dist/docs/assets/{deployment.md.CtSJ6sF9.js → deployment.md.3MMWuPeV.js} +5 -5
  73. package/dist/docs/assets/{deployment.md.CtSJ6sF9.lean.js → deployment.md.3MMWuPeV.lean.js} +1 -1
  74. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.js → guides_cloud-agents.md.BzbzcOyj.js} +2 -2
  75. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.lean.js → guides_cloud-agents.md.BzbzcOyj.lean.js} +1 -1
  76. package/dist/docs/assets/guides_migrate.md.CQlGaBKX.js +7 -0
  77. package/dist/docs/assets/{guides_migrate.md.DZBL7dqT.lean.js → guides_migrate.md.CQlGaBKX.lean.js} +1 -1
  78. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.js → guides_opentelemetry.md.Ck1o2frw.js} +11 -3
  79. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.lean.js → guides_opentelemetry.md.Ck1o2frw.lean.js} +1 -1
  80. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.js → reference_agent-config.md.IplwL25I.js} +1 -2
  81. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.lean.js → reference_agent-config.md.IplwL25I.lean.js} +1 -1
  82. package/dist/docs/assets/{reference_cli.md.Bkrsce22.js → reference_cli.md.DB7Llw3T.js} +3 -3
  83. package/dist/docs/assets/{reference_cli.md.Bkrsce22.lean.js → reference_cli.md.DB7Llw3T.lean.js} +1 -1
  84. package/dist/docs/assets/{reference_extensions.md.OUacPetl.js → reference_extensions.md.DKxTuCIw.js} +11 -8
  85. package/dist/docs/assets/{reference_extensions.md.OUacPetl.lean.js → reference_extensions.md.DKxTuCIw.lean.js} +1 -1
  86. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.js → reference_instructions.md.BYMVxAkw.js} +4 -4
  87. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.lean.js → reference_instructions.md.BYMVxAkw.lean.js} +1 -1
  88. package/dist/docs/assets/{style.Dwls12uf.css → style.nMsabY-V.css} +1 -1
  89. package/dist/docs/assets/templates_agentic-owners.md.CTEnR0jp.js +13 -0
  90. package/dist/docs/assets/{templates_agentic-owners.md.CvmABtia.lean.js → templates_agentic-owners.md.CTEnR0jp.lean.js} +1 -1
  91. package/dist/docs/building-with-agents.html +37 -37
  92. package/dist/docs/deployment.html +42 -42
  93. package/dist/docs/deployment.md +9 -4
  94. package/dist/docs/evals.html +37 -37
  95. package/dist/docs/guides/agent-to-agent.html +37 -37
  96. package/dist/docs/guides/bitbucket.html +37 -37
  97. package/dist/docs/guides/cloud-agents.html +38 -38
  98. package/dist/docs/guides/cloud-agents.md +1 -0
  99. package/dist/docs/guides/convert-automation.html +37 -37
  100. package/dist/docs/guides/export-grokbot.html +37 -37
  101. package/dist/docs/guides/github.html +37 -37
  102. package/dist/docs/guides/gitlab.html +37 -37
  103. package/dist/docs/guides/grokbot-agents.html +37 -37
  104. package/dist/docs/guides/hooks.html +37 -37
  105. package/dist/docs/guides/improve.html +37 -37
  106. package/dist/docs/guides/jev.html +37 -37
  107. package/dist/docs/guides/mcp-oauth.html +37 -37
  108. package/dist/docs/guides/migrate.html +39 -39
  109. package/dist/docs/guides/migrate.md +46 -4
  110. package/dist/docs/guides/opentelemetry.html +47 -39
  111. package/dist/docs/guides/opentelemetry.md +48 -2
  112. package/dist/docs/guides/slack.html +37 -37
  113. package/dist/docs/guides/webhooks.html +37 -37
  114. package/dist/docs/hashmap.json +1 -1
  115. package/dist/docs/hillclimbing.html +37 -37
  116. package/dist/docs/index.html +37 -37
  117. package/dist/docs/llms-full.txt +195 -49
  118. package/dist/docs/quickstart.html +37 -37
  119. package/dist/docs/reference/agent-config.html +38 -39
  120. package/dist/docs/reference/agent-config.md +0 -1
  121. package/dist/docs/reference/artifacts.html +37 -37
  122. package/dist/docs/reference/channels.html +37 -37
  123. package/dist/docs/reference/cli.html +40 -40
  124. package/dist/docs/reference/cli.md +16 -5
  125. package/dist/docs/reference/connections.html +37 -37
  126. package/dist/docs/reference/evals.html +37 -37
  127. package/dist/docs/reference/extensions.html +47 -44
  128. package/dist/docs/reference/extensions.md +15 -9
  129. package/dist/docs/reference/hooks.html +37 -37
  130. package/dist/docs/reference/http-api.html +37 -37
  131. package/dist/docs/reference/instructions.html +40 -40
  132. package/dist/docs/reference/instructions.md +5 -1
  133. package/dist/docs/reference/memory.html +37 -37
  134. package/dist/docs/reference/playground.html +36 -36
  135. package/dist/docs/reference/project-layout.html +37 -37
  136. package/dist/docs/reference/prompt.html +37 -37
  137. package/dist/docs/reference/schedules.html +37 -37
  138. package/dist/docs/reference/sessions.html +36 -36
  139. package/dist/docs/reference/skills.html +37 -37
  140. package/dist/docs/reference/subagents.html +37 -37
  141. package/dist/docs/reference/tools.html +37 -37
  142. package/dist/docs/templates/agentic-owners.html +42 -43
  143. package/dist/docs/templates/agentic-owners.md +55 -23
  144. package/dist/docs/templates/grokbot-agents.html +37 -37
  145. package/dist/docs/templates/security-reviewer.html +37 -37
  146. package/dist/docs/templates/thermo-quality-review.html +37 -37
  147. package/dist/docs/templates/thermo-review.html +37 -37
  148. package/dist/docs/templates/triage.html +37 -37
  149. package/dist/docs/troubleshooting.html +36 -36
  150. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  151. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  152. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  153. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +1 -0
  154. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  155. package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -1
  156. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  157. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  158. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  159. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  160. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  161. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  162. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  163. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  164. package/dist/extensions/cursor-grokbot-agents/extension.js +1 -1
  165. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  166. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  167. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  168. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  169. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  170. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  171. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  172. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  173. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  174. package/dist/extensions/improve/extension.js +1 -1
  175. package/dist/extensions/jev/extension.js +1 -1
  176. package/dist/extensions/jev/tools/evaluate.js +1 -1
  177. package/dist/extensions/slack-communication/extension.js +1 -1
  178. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  179. package/dist/extensions/slack-communication/tools/edit-message.js +1 -1
  180. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  181. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  182. package/dist/extensions/slack-communication/tools/post-update.js +1 -1
  183. package/dist/extensions/slack-communication/tools/react.js +1 -1
  184. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  185. package/dist/extensions.d.ts +1 -1
  186. package/dist/extensions.js +1 -1
  187. package/dist/internal/builtin-tools/artifacts.js +1 -1
  188. package/dist/internal/builtin-tools/reminders.js +1 -1
  189. package/dist/internal/cli-deploy.d.ts +3 -3
  190. package/dist/internal/cli-deploy.d.ts.map +1 -1
  191. package/dist/internal/cli-deploy.js +63 -21
  192. package/dist/internal/cli-migrate.d.ts.map +1 -1
  193. package/dist/internal/cli-migrate.js +227 -12
  194. package/dist/internal/cli-slack.d.ts.map +1 -1
  195. package/dist/internal/cli-slack.js +56 -3
  196. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  197. package/dist/internal/convert-grokbot/answers.js +1 -1
  198. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  199. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  200. package/dist/internal/convert-grokbot/recipe.js +1 -1
  201. package/dist/internal/cursor/backend-client.d.ts +1 -1
  202. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  203. package/dist/internal/cursor/backend-client.js +1 -1
  204. package/dist/internal/cursor/credentials.d.ts +1 -1
  205. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  206. package/dist/internal/cursor/credentials.js +1 -1
  207. package/dist/internal/deploy-client.d.ts +7 -0
  208. package/dist/internal/deploy-client.d.ts.map +1 -1
  209. package/dist/internal/deploy-client.js +16 -2
  210. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  211. package/dist/internal/deploy-manifest.js +2 -1
  212. package/dist/internal/discovery/cursor-plugin.js +1 -1
  213. package/dist/internal/factory-resource-channel.d.ts +1 -1
  214. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  215. package/dist/internal/filesystem/sdk-schemas.d.ts +1 -1
  216. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
  217. package/dist/internal/filesystem/sdk-schemas.js +1 -1
  218. package/dist/internal/filesystem/tools.js +1 -1
  219. package/dist/internal/host-otel.d.ts +2 -1
  220. package/dist/internal/host-otel.d.ts.map +1 -1
  221. package/dist/internal/host-otel.js +20 -6
  222. package/dist/internal/hosted-delivery-protocol.d.ts +4 -0
  223. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  224. package/dist/internal/hosted-delivery.d.ts +7 -0
  225. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  226. package/dist/internal/hosted-delivery.js +19 -17
  227. package/dist/internal/hosting.d.ts +6 -0
  228. package/dist/internal/hosting.d.ts.map +1 -1
  229. package/dist/internal/hosting.js +9 -0
  230. package/dist/internal/init-scaffold.js +1 -1
  231. package/dist/internal/interview/agent-questions.d.ts +1 -1
  232. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  233. package/dist/internal/interview/agent-questions.js +1 -1
  234. package/dist/internal/interview/question.d.ts +1 -1
  235. package/dist/internal/interview/question.d.ts.map +1 -1
  236. package/dist/internal/interview/question.js +1 -1
  237. package/dist/internal/json-schema.d.ts +1 -1
  238. package/dist/internal/json-schema.d.ts.map +1 -1
  239. package/dist/internal/json-schema.js +1 -1
  240. package/dist/internal/mcp-endpoint.js +1 -1
  241. package/dist/internal/otel/collector.d.ts.map +1 -1
  242. package/dist/internal/otel/collector.js +47 -18
  243. package/dist/internal/otel/config.d.ts +4 -0
  244. package/dist/internal/otel/config.d.ts.map +1 -1
  245. package/dist/internal/otel/config.js +20 -9
  246. package/dist/internal/otel/http.d.ts +1 -1
  247. package/dist/internal/otel/http.d.ts.map +1 -1
  248. package/dist/internal/otel/http.js +1 -1
  249. package/dist/internal/otel/runtime.d.ts +17 -14
  250. package/dist/internal/otel/runtime.d.ts.map +1 -1
  251. package/dist/internal/otel/runtime.js +181 -238
  252. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  253. package/dist/internal/package-inline-stdio.js +1 -0
  254. package/dist/internal/process-memory-telemetry.d.ts +1 -1
  255. package/dist/internal/process-memory-telemetry.d.ts.map +1 -1
  256. package/dist/internal/process-memory-telemetry.js +1 -1
  257. package/dist/internal/sdk-runner.d.ts.map +1 -1
  258. package/dist/internal/sdk-runner.js +22 -2
  259. package/dist/internal/server.d.ts.map +1 -1
  260. package/dist/internal/server.js +25 -13
  261. package/dist/internal/session-engine.d.ts +9 -1
  262. package/dist/internal/session-engine.d.ts.map +1 -1
  263. package/dist/internal/session-engine.js +31 -2
  264. package/dist/internal/slack-provision-client.d.ts +1 -0
  265. package/dist/internal/slack-provision-client.d.ts.map +1 -1
  266. package/dist/internal/slack-provision-client.js +1 -1
  267. package/dist/internal/store-api-protocol.d.ts +1 -1
  268. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  269. package/dist/internal/store-api-protocol.js +1 -1
  270. package/dist/internal/update-check.d.ts +1 -1
  271. package/dist/internal/update-check.d.ts.map +1 -1
  272. package/dist/internal/update-check.js +1 -1
  273. package/dist/otel.d.ts +1 -2
  274. package/dist/otel.d.ts.map +1 -1
  275. package/dist/otel.js +0 -1
  276. package/dist/playground/assets/index-DKKdkF29.js +62 -0
  277. package/dist/playground/assets/index-DpKinTMs.css +1 -0
  278. package/dist/playground/index.html +2 -2
  279. package/dist/tools.d.ts +2 -2
  280. package/dist/tools.d.ts.map +1 -1
  281. package/dist/tools.js +1 -1
  282. package/dist/types.d.ts +1 -1
  283. package/dist/types.d.ts.map +1 -1
  284. package/docs/deployment.md +9 -4
  285. package/docs/guides/cloud-agents.md +1 -0
  286. package/docs/guides/migrate.md +46 -4
  287. package/docs/guides/opentelemetry.md +48 -2
  288. package/docs/reference/agent-config.md +0 -1
  289. package/docs/reference/cli.md +16 -5
  290. package/docs/reference/extensions.md +15 -9
  291. package/docs/reference/instructions.md +5 -1
  292. package/docs/templates/agentic-owners.md +55 -23
  293. package/package.json +17 -19
  294. package/skills/migrate-v2/SKILL.md +140 -11
  295. package/skills/otel/SKILL.md +17 -4
  296. package/dist/docs/assets/chunks/@localSearchIndexroot.DLNj_nNf.js +0 -1
  297. package/dist/docs/assets/chunks/channel.DRdmGkBC.js +0 -1
  298. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CAGM3Q8f.js +0 -1
  299. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CAGM3Q8f.js +0 -1
  300. package/dist/docs/assets/chunks/clone.DjA1k4gh.js +0 -1
  301. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CjwS--3R.js +0 -1
  302. package/dist/docs/assets/chunks/wardley-RL74JXVD.BtotXz_c.js +0 -162
  303. package/dist/docs/assets/guides_migrate.md.DZBL7dqT.js +0 -7
  304. package/dist/docs/assets/templates_agentic-owners.md.CvmABtia.js +0 -14
  305. package/dist/playground/assets/index-CzV_Cybi.css +0 -1
  306. package/dist/playground/assets/index-XXYKgdQn.js +0 -71
@@ -6,54 +6,54 @@
6
6
  <title>Deployment | Bot Development Kit (BDK)</title>
7
7
  <meta name="description" content="Deploy a BDK project from Git with Cursor-managed hosting, or run one secure process on your own infrastructure.">
8
8
  <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/docs/assets/style.Dwls12uf.css" as="style">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.nMsabY-V.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.BD1yvHJK.js"></script>
12
+ <script type="module" src="/docs/assets/app.DTIg0uKK.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
14
  <link rel="modulepreload" href="/docs/assets/chunks/framework.BNw1pucY.js">
15
- <link rel="modulepreload" href="/docs/assets/chunks/theme.DSJaK7i1.js">
15
+ <link rel="modulepreload" href="/docs/assets/chunks/theme.DJo4my9R.js">
16
16
  <link rel="modulepreload" href="/docs/assets/chunks/katex.DkKDou_j.js">
17
- <link rel="modulepreload" href="/docs/assets/chunks/dagre-KV5264BT.Wc53s510.js">
18
- <link rel="modulepreload" href="/docs/assets/chunks/cose-bilkent-S5V4N54A.Bw9v-Pfp.js">
19
- <link rel="modulepreload" href="/docs/assets/chunks/c4Diagram-AHTNJAMY.DkCQNehT.js">
20
- <link rel="modulepreload" href="/docs/assets/chunks/flowDiagram-DWJPFMVM.B_te6Lre.js">
21
- <link rel="modulepreload" href="/docs/assets/chunks/erDiagram-SMLLAGMA.2N-5dVK2.js">
22
- <link rel="modulepreload" href="/docs/assets/chunks/gitGraphDiagram-UUTBAWPF.C1uOicx6.js">
23
- <link rel="modulepreload" href="/docs/assets/chunks/ganttDiagram-T4ZO3ILL.CuNbn0Wd.js">
24
- <link rel="modulepreload" href="/docs/assets/chunks/infoDiagram-42DDH7IO.Cw_LmsnD.js">
25
- <link rel="modulepreload" href="/docs/assets/chunks/pieDiagram-DEJITSTG.Bwj1Zq54.js">
26
- <link rel="modulepreload" href="/docs/assets/chunks/quadrantDiagram-34T5L4WZ.D5dcUqJC.js">
27
- <link rel="modulepreload" href="/docs/assets/chunks/xychartDiagram-5P7HB3ND.Bq7gMvIU.js">
28
- <link rel="modulepreload" href="/docs/assets/chunks/requirementDiagram-MS252O5E.CCP5yuT4.js">
29
- <link rel="modulepreload" href="/docs/assets/chunks/sequenceDiagram-FGHM5R23.w545hYyz.js">
30
- <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-6PBFFD2Q.CAGM3Q8f.js">
31
- <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CAGM3Q8f.js">
32
- <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-FHFEXIEX.CxcpDNk2.js">
33
- <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CjwS--3R.js">
34
- <link rel="modulepreload" href="/docs/assets/chunks/journeyDiagram-VCZTEJTY.buwzIgeY.js">
35
- <link rel="modulepreload" href="/docs/assets/chunks/timeline-definition-GMOUNBTQ.2WxkfxRf.js">
36
- <link rel="modulepreload" href="/docs/assets/chunks/mindmap-definition-QFDTVHPH.BO5-vmxy.js">
37
- <link rel="modulepreload" href="/docs/assets/chunks/kanban-definition-6JOO6SKY.yacNqa4l.js">
38
- <link rel="modulepreload" href="/docs/assets/chunks/sankeyDiagram-XADWPNL6.BWAu-_Jq.js">
39
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-TYMM5635.BuJ0aD65.js">
40
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-MMDJMWI5.D30RWuU-.js">
41
- <link rel="modulepreload" href="/docs/assets/chunks/blockDiagram-DXYQGD6D.Cpy78QaZ.js">
42
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-5BDNPKRD.DxJJrlh5.js">
43
- <link rel="modulepreload" href="/docs/assets/chunks/architectureDiagram-Q4EWVU46.B1jE4xrG.js">
44
- <link rel="modulepreload" href="/docs/assets/chunks/ishikawaDiagram-UXIWVN3A.DikoN3ai.js">
45
- <link rel="modulepreload" href="/docs/assets/chunks/vennDiagram-DHZGUBPP.BGZwcK-Z.js">
46
- <link rel="modulepreload" href="/docs/assets/chunks/diagram-G4DWMVQ6.Ldxa4MKP.js">
47
- <link rel="modulepreload" href="/docs/assets/chunks/wardleyDiagram-NUSXRM2D.oryRmynQ.js">
17
+ <link rel="modulepreload" href="/docs/assets/chunks/dagre-KV5264BT.BIECOiqR.js">
18
+ <link rel="modulepreload" href="/docs/assets/chunks/cose-bilkent-S5V4N54A.Cqyp4BUH.js">
19
+ <link rel="modulepreload" href="/docs/assets/chunks/c4Diagram-AHTNJAMY.8nkAAxWv.js">
20
+ <link rel="modulepreload" href="/docs/assets/chunks/flowDiagram-DWJPFMVM.ZMgbllH6.js">
21
+ <link rel="modulepreload" href="/docs/assets/chunks/erDiagram-SMLLAGMA.A0yVIANn.js">
22
+ <link rel="modulepreload" href="/docs/assets/chunks/gitGraphDiagram-UUTBAWPF.BOkL0BbA.js">
23
+ <link rel="modulepreload" href="/docs/assets/chunks/ganttDiagram-T4ZO3ILL.BCCPBhXo.js">
24
+ <link rel="modulepreload" href="/docs/assets/chunks/infoDiagram-42DDH7IO.CjG1IiEw.js">
25
+ <link rel="modulepreload" href="/docs/assets/chunks/pieDiagram-DEJITSTG.B7851apI.js">
26
+ <link rel="modulepreload" href="/docs/assets/chunks/quadrantDiagram-34T5L4WZ.CEqyypIX.js">
27
+ <link rel="modulepreload" href="/docs/assets/chunks/xychartDiagram-5P7HB3ND.CPUxDZLH.js">
28
+ <link rel="modulepreload" href="/docs/assets/chunks/requirementDiagram-MS252O5E.C3Mwsw-H.js">
29
+ <link rel="modulepreload" href="/docs/assets/chunks/sequenceDiagram-FGHM5R23.SiQPH-XM.js">
30
+ <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js">
31
+ <link rel="modulepreload" href="/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js">
32
+ <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-FHFEXIEX.CTJMsP4p.js">
33
+ <link rel="modulepreload" href="/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js">
34
+ <link rel="modulepreload" href="/docs/assets/chunks/journeyDiagram-VCZTEJTY.3WyOK_eY.js">
35
+ <link rel="modulepreload" href="/docs/assets/chunks/timeline-definition-GMOUNBTQ.CxSNRlQ6.js">
36
+ <link rel="modulepreload" href="/docs/assets/chunks/mindmap-definition-QFDTVHPH.DMGgQ-HB.js">
37
+ <link rel="modulepreload" href="/docs/assets/chunks/kanban-definition-6JOO6SKY.WoRG2qY1.js">
38
+ <link rel="modulepreload" href="/docs/assets/chunks/sankeyDiagram-XADWPNL6.DyYK0XxY.js">
39
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-TYMM5635.Bho6GmLh.js">
40
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-MMDJMWI5.BSZ7xiBB.js">
41
+ <link rel="modulepreload" href="/docs/assets/chunks/blockDiagram-DXYQGD6D.DFMu-Vza.js">
42
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-5BDNPKRD.1tLyWoTg.js">
43
+ <link rel="modulepreload" href="/docs/assets/chunks/architectureDiagram-Q4EWVU46.BMrNJqYk.js">
44
+ <link rel="modulepreload" href="/docs/assets/chunks/ishikawaDiagram-UXIWVN3A.UCe-kq9g.js">
45
+ <link rel="modulepreload" href="/docs/assets/chunks/vennDiagram-DHZGUBPP.BdoJskyD.js">
46
+ <link rel="modulepreload" href="/docs/assets/chunks/diagram-G4DWMVQ6.BVY_6VMO.js">
47
+ <link rel="modulepreload" href="/docs/assets/chunks/wardleyDiagram-NUSXRM2D.IjIbFn_F.js">
48
48
  <link rel="modulepreload" href="/docs/assets/chunks/virtual_mermaid-config.DDnGl6nM.js">
49
- <link rel="modulepreload" href="/docs/assets/deployment.md.CtSJ6sF9.lean.js">
49
+ <link rel="modulepreload" href="/docs/assets/deployment.md.3MMWuPeV.lean.js">
50
50
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
51
51
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
52
52
  <link rel="alternate" type="text/plain" href="/docs/llms.txt">
53
53
  <link rel="alternate" type="text/markdown" href="/docs/deployment.md">
54
54
  </head>
55
55
  <body>
56
- <div id="app"><div class="Layout" data-v-5ebc75e4><!--[--><!--]--><!--[--><span tabindex="-1" data-v-7de63af3></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-7de63af3>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5ebc75e4 data-v-e8579816><div class="VPNavBar" data-v-e8579816 data-v-bbf4446f><div class="wrapper" data-v-bbf4446f><div class="container" data-v-bbf4446f><div class="title" data-v-bbf4446f><div class="VPNavBarTitle has-sidebar" data-v-bbf4446f data-v-ebd5f04e><a class="title" href="/docs/" data-v-ebd5f04e><!--[--><!--]--><!----><span data-v-ebd5f04e>Bot Development Kit (BDK)</span><!--[--><!--[--><!--[--><!--[--><span class="bdk-version" title="BDK 0.2.22 (@cursor/bdk package)" data-v-d89e5038>0.2.22</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-bbf4446f><div class="content-body" data-v-bbf4446f><!--[--><!--]--><div class="VPNavBarSearch search" data-v-bbf4446f><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-bbf4446f data-v-7fa90d1c><span id="main-nav-aria-label" class="visually-hidden" data-v-7fa90d1c> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7fa90d1c data-v-8d7ed182><!--[--><span data-v-8d7ed182>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/mcp-oauth.html" tabindex="0" data-v-7fa90d1c data-v-8d7ed182><!--[--><span data-v-8d7ed182>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/github.html" tabindex="0" data-v-7fa90d1c data-v-8d7ed182><!--[--><span data-v-8d7ed182>Integrations</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/security-reviewer.html" tabindex="0" data-v-7fa90d1c data-v-8d7ed182><!--[--><span data-v-8d7ed182>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7fa90d1c data-v-8d7ed182><!--[--><span data-v-8d7ed182>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-bbf4446f data-v-6a44a4fa><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6a44a4fa data-v-b541f24b data-v-a48af969><span class="check" data-v-a48af969><span class="icon" data-v-a48af969><!--[--><span class="vpi-sun sun" data-v-b541f24b></span><span class="vpi-moon moon" data-v-b541f24b></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-bbf4446f data-v-8d21ceac data-v-269c0ea1><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-269c0ea1><span class="vpi-more-horizontal icon" data-v-269c0ea1></span></button><div class="menu" data-v-269c0ea1><div class="VPMenu" data-v-269c0ea1 data-v-ab92b832><!----><!--[--><!--[--><!----><div class="group" data-v-8d21ceac><div class="item appearance" data-v-8d21ceac><p class="label" data-v-8d21ceac>Appearance</p><div class="appearance-action" data-v-8d21ceac><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-8d21ceac data-v-b541f24b data-v-a48af969><span class="check" data-v-a48af969><span class="icon" data-v-a48af969><!--[--><span class="vpi-sun sun" data-v-b541f24b></span><span class="vpi-moon moon" data-v-b541f24b></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-bbf4446f data-v-efff335d><span class="container" data-v-efff335d><span class="top" data-v-efff335d></span><span class="middle" data-v-efff335d></span><span class="bottom" data-v-efff335d></span></span></button></div></div></div></div><div class="divider" data-v-bbf4446f><div class="divider-line" data-v-bbf4446f></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5ebc75e4 data-v-636a9279><div class="container" data-v-636a9279><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-636a9279><span class="vpi-align-left menu-icon" data-v-636a9279></span><span class="menu-text" data-v-636a9279>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-636a9279 data-v-ae38d8b4><button data-v-ae38d8b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5ebc75e4 data-v-f102723c><div class="curtain" data-v-f102723c></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-f102723c><span class="visually-hidden" id="sidebar-aria-label" data-v-f102723c> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Getting started</h2><!----></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Building your first agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0 collapsible" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Integrations</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-8ccd545c><span class="vpi-chevron-right caret-icon" data-v-8ccd545c></span></div></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Webhooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Cursor Automations</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>OpenTelemetry</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/gitlab.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>GitLab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/bitbucket.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Bitbucket</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0 collapsible" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Extensions</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-8ccd545c><span class="vpi-chevron-right caret-icon" data-v-8ccd545c></span></div></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/improve.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Self-improvement</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/jev.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Jev</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0 collapsible has-active" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Guides</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-8ccd545c><span class="vpi-chevron-right caret-icon" data-v-8ccd545c></span></div></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/hooks.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Peer agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/deployment.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/export-grokbot.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Export a Grok Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/guides/migrate.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Early-alpha migration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/evals.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Hillclimbing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Build with a coding agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0 collapsible" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Templates</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-8ccd545c><span class="vpi-chevron-right caret-icon" data-v-8ccd545c></span></div></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/thermo-review.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Thermo review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/thermo-quality-review.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Thermo quality review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Agentic Approver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-9c447dd5><section class="VPSidebarItem level-0 collapsible" data-v-9c447dd5 data-v-8ccd545c><div class="item" role="button" tabindex="0" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><h2 class="text" data-v-8ccd545c>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-8ccd545c><span class="vpi-chevron-right caret-icon" data-v-8ccd545c></span></div></div><div class="items" data-v-8ccd545c><!--[--><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/memory.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/evals.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-8ccd545c><div class="item" data-v-8ccd545c><div class="indicator" data-v-8ccd545c></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-8ccd545c><!--[--><p class="text" data-v-8ccd545c>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5ebc75e4 data-v-4ab733be><div class="VPDoc has-sidebar has-aside" data-v-4ab733be data-v-4e7466dc><!--[--><!--]--><div class="container" data-v-4e7466dc><div class="aside" data-v-4e7466dc><div class="aside-curtain" data-v-4e7466dc></div><div class="aside-container" data-v-4e7466dc><div class="aside-content" data-v-4e7466dc><div class="VPDocAside" data-v-4e7466dc data-v-4f3f9a30><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-4f3f9a30 data-v-aacbb3fc><div class="content" data-v-aacbb3fc><div class="outline-marker" data-v-aacbb3fc></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-aacbb3fc>On this page</div><ul class="VPDocOutlineItem root" data-v-aacbb3fc data-v-0ffefe2a><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-4f3f9a30></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-4e7466dc><div class="content-container" data-v-4e7466dc><!--[--><!--]--><main class="main" data-v-4e7466dc><div style="position:relative;" class="vp-doc _docs_deployment" data-v-4e7466dc><div><h1 id="deploy-a-bdk-project" tabindex="-1">Deploy a BDK project <a class="header-anchor" href="#deploy-a-bdk-project" aria-label="Permalink to &quot;Deploy a BDK project&quot;">​</a></h1><p>Deploying a Bot Development Kit (BDK) project from a pushed Git ref creates a stable service. Cursor-managed hosting builds the selected ref and operates the runtime; self-hosting gives you control of the network, process, and filesystem.</p><h2 id="choose-managed-hosting-or-self-hosting" tabindex="-1">Choose managed hosting or self-hosting <a class="header-anchor" href="#choose-managed-hosting-or-self-hosting" aria-label="Permalink to &quot;Choose managed hosting or self-hosting&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Option</th><th>Use it when</th><th>You manage</th></tr></thead><tbody><tr><td>Cursor-managed hosting</td><td>You want the shortest path from Git to a running agent</td><td>Source, declared egress, secrets, and agent behavior</td></tr><tr><td>Self-hosting</td><td>You need your own network, proxy, filesystem, or process controls</td><td>The Node process, TLS, auth, secrets, state, monitoring, and upgrades</td></tr></tbody></table><p>The rest of this guide starts with managed hosting. The <a href="#self-host-securely">self-host recipe</a> uses the same project and HTTP API.</p><h2 id="deploy-from-git" tabindex="-1">Deploy from Git <a class="header-anchor" href="#deploy-from-git" aria-label="Permalink to &quot;Deploy from Git&quot;">​</a></h2><p>Commit and push the exact ref you want to run, then sign in, validate, and deploy. The preferred CLI is <code>bdk</code>.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>cd my-agent</span></span>
56
+ <div id="app"><div class="Layout" data-v-f430d453><!--[--><!--]--><!--[--><span tabindex="-1" data-v-680db83d></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-680db83d>Skip to content</a><!--]--><!----><header class="VPNav" data-v-f430d453 data-v-ac9780a6><div class="VPNavBar" data-v-ac9780a6 data-v-dabff950><div class="wrapper" data-v-dabff950><div class="container" data-v-dabff950><div class="title" data-v-dabff950><div class="VPNavBarTitle has-sidebar" data-v-dabff950 data-v-1fdc3e33><a class="title" href="/docs/" data-v-1fdc3e33><!--[--><!--]--><!----><span data-v-1fdc3e33>Bot Development Kit (BDK)</span><!--[--><!--[--><!--[--><!--[--><span class="bdk-version" title="BDK 0.2.24 (@cursor/bdk package)" data-v-d89e5038>0.2.24</span><!--]--><!--]--><!--]--><!--]--></a></div></div><div class="content" data-v-dabff950><div class="content-body" data-v-dabff950><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dabff950><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dabff950 data-v-eea646b1><span id="main-nav-aria-label" class="visually-hidden" data-v-eea646b1> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/mcp-oauth.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/github.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Integrations</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/templates/security-reviewer.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Templates</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-eea646b1 data-v-356b6b19><!--[--><span data-v-356b6b19>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dabff950 data-v-bc95e225><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bc95e225 data-v-d980e0ed data-v-18f4a150><span class="check" data-v-18f4a150><span class="icon" data-v-18f4a150><!--[--><span class="vpi-sun sun" data-v-d980e0ed></span><span class="vpi-moon moon" data-v-d980e0ed></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dabff950 data-v-f342cad0 data-v-c62f596b><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-c62f596b><span class="vpi-more-horizontal icon" data-v-c62f596b></span></button><div class="menu" data-v-c62f596b><div class="VPMenu" data-v-c62f596b data-v-9eccc516><!----><!--[--><!--[--><!----><div class="group" data-v-f342cad0><div class="item appearance" data-v-f342cad0><p class="label" data-v-f342cad0>Appearance</p><div class="appearance-action" data-v-f342cad0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f342cad0 data-v-d980e0ed data-v-18f4a150><span class="check" data-v-18f4a150><span class="icon" data-v-18f4a150><!--[--><span class="vpi-sun sun" data-v-d980e0ed></span><span class="vpi-moon moon" data-v-d980e0ed></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dabff950 data-v-06592ead><span class="container" data-v-06592ead><span class="top" data-v-06592ead></span><span class="middle" data-v-06592ead></span><span class="bottom" data-v-06592ead></span></span></button></div></div></div></div><div class="divider" data-v-dabff950><div class="divider-line" data-v-dabff950></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-f430d453 data-v-2bfb3d4b><div class="container" data-v-2bfb3d4b><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2bfb3d4b><span class="vpi-align-left menu-icon" data-v-2bfb3d4b></span><span class="menu-text" data-v-2bfb3d4b>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2bfb3d4b data-v-993d5022><button data-v-993d5022>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-f430d453 data-v-4d843d7b><div class="curtain" data-v-4d843d7b></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4d843d7b><span class="visually-hidden" id="sidebar-aria-label" data-v-4d843d7b> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Getting started</h2><!----></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Building your first agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Integrations</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Webhooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/convert-automation.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Cursor Automations</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/opentelemetry.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>OpenTelemetry</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/gitlab.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>GitLab</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/bitbucket.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Bitbucket</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Extensions</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/extensions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/cloud-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Cloud agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/grokbot-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/improve.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Self-improvement</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/jev.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Jev</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible has-active" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Guides</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/mcp-oauth.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>MCP</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/hooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Peer agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/deployment.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/export-grokbot.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Export a Grok Bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/guides/migrate.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Early-alpha migration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/evals.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hillclimbing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Build with a coding agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Troubleshooting</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Templates</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/grokbot-agents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Grok Bot agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/security-reviewer.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Security reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/thermo-review.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Thermo review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/thermo-quality-review.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Thermo quality review</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/agentic-owners.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Agentic Approver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/templates/triage.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Triage agent</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-1c552b11><section class="VPSidebarItem level-0 collapsible" data-v-1c552b11 data-v-1cdea42a><div class="item" role="button" tabindex="0" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><h2 class="text" data-v-1cdea42a>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-1cdea42a><span class="vpi-chevron-right caret-icon" data-v-1cdea42a></span></div></div><div class="items" data-v-1cdea42a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/prompt.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>prompt</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/memory.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Memory</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/evals.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/artifacts.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Artifacts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-1cdea42a><div class="item" data-v-1cdea42a><div class="indicator" data-v-1cdea42a></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-1cdea42a><!--[--><p class="text" data-v-1cdea42a>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-f430d453 data-v-44f169b4><div class="VPDoc has-sidebar has-aside" data-v-44f169b4 data-v-2c214b72><!--[--><!--]--><div class="container" data-v-2c214b72><div class="aside" data-v-2c214b72><div class="aside-curtain" data-v-2c214b72></div><div class="aside-container" data-v-2c214b72><div class="aside-content" data-v-2c214b72><div class="VPDocAside" data-v-2c214b72 data-v-b6955c51><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-b6955c51 data-v-46e03482><div class="content" data-v-46e03482><div class="outline-marker" data-v-46e03482></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-46e03482>On this page</div><ul class="VPDocOutlineItem root" data-v-46e03482 data-v-1b25c5bc><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-b6955c51></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-2c214b72><div class="content-container" data-v-2c214b72><!--[--><!--]--><main class="main" data-v-2c214b72><div style="position:relative;" class="vp-doc _docs_deployment" data-v-2c214b72><div><h1 id="deploy-a-bdk-project" tabindex="-1">Deploy a BDK project <a class="header-anchor" href="#deploy-a-bdk-project" aria-label="Permalink to &quot;Deploy a BDK project&quot;">​</a></h1><p>Deploying a Bot Development Kit (BDK) project from a pushed Git ref creates a stable service. Cursor-managed hosting builds the selected ref and operates the runtime; self-hosting gives you control of the network, process, and filesystem.</p><h2 id="choose-managed-hosting-or-self-hosting" tabindex="-1">Choose managed hosting or self-hosting <a class="header-anchor" href="#choose-managed-hosting-or-self-hosting" aria-label="Permalink to &quot;Choose managed hosting or self-hosting&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Option</th><th>Use it when</th><th>You manage</th></tr></thead><tbody><tr><td>Cursor-managed hosting</td><td>You want the shortest path from Git to a running agent</td><td>Source, declared egress, secrets, and agent behavior</td></tr><tr><td>Self-hosting</td><td>You need your own network, proxy, filesystem, or process controls</td><td>The Node process, TLS, auth, secrets, state, monitoring, and upgrades</td></tr></tbody></table><p>The rest of this guide starts with managed hosting. The <a href="#self-host-securely">self-host recipe</a> uses the same project and HTTP API.</p><h2 id="deploy-from-git" tabindex="-1">Deploy from Git <a class="header-anchor" href="#deploy-from-git" aria-label="Permalink to &quot;Deploy from Git&quot;">​</a></h2><p>Commit and push the exact ref you want to run, then sign in, validate, and deploy. The preferred CLI is <code>bdk</code>.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>cd my-agent</span></span>
57
57
  <span class="line"><span>bdk login</span></span>
58
58
  <span class="line"><span>bdk whoami</span></span>
59
59
  <span class="line"><span>bdk validate</span></span>
@@ -61,7 +61,7 @@
61
61
  <span class="line"><span> --repo https://github.com/acme/agents \</span></span>
62
62
  <span class="line"><span> --ref main \</span></span>
63
63
  <span class="line"><span> --path agents/weather \</span></span>
64
- <span class="line"><span> --slug weather-agent</span></span></code></pre></div><p>The source repository must be available through the team&#39;s repository integration, and a nested <code>--path</code> must contain an installable BDK project.</p><h3 id="connect-deployed-peers" tabindex="-1">Connect deployed peers <a class="header-anchor" href="#connect-deployed-peers" aria-label="Permalink to &quot;Connect deployed peers&quot;">​</a></h3><p>A team-owned deployment can call another agent deployed by the same team with <code>defineConnection({ agent: &quot;weather-agent&quot; })</code>. Deploy the specialist and the caller; Cursor-managed hosting resolves the slug and authenticates the call, so you don&#39;t configure a peer URL, header, or secret.</p><p>Redeploy the caller after adding or changing a peer connection. An agent last deployed before hosted peer connections became available also needs one redeploy. See <a href="./guides/agent-to-agent.html">Peer agents</a> for delegation, session affinity, and local development.</p><h3 id="privacy-mode" tabindex="-1">Privacy Mode <a class="header-anchor" href="#privacy-mode" aria-label="Permalink to &quot;Privacy Mode&quot;">​</a></h3><p>A hosted deployment stores a snapshot of its source repository, along with the sessions, KV, files, and logs the agent creates for your team. Whether managed hosting is available depends on the privacy setting that applies to you, which is your team&#39;s setting when the team enforces one:</p><table tabindex="0"><thead><tr><th>Privacy setting</th><th>Managed hosting</th></tr></thead><tbody><tr><td>Privacy Mode</td><td>Available. Cursor stores deployment data the same way it does without Privacy Mode, and the agent&#39;s model requests get the same Privacy Mode handling as your other Cursor requests.</td></tr><tr><td>Privacy Mode (Legacy)</td><td>Not available. <code>deploy</code>, a hosted session, and an eval run all refuse.</td></tr></tbody></table><p><code>deploy</code> refuses because a deployment stores a snapshot of your repository. A hosted session refuses, and Cursor does not store the message. An eval run refuses because it stores prompts and replies. Switch to Privacy Mode, or ask a team admin when your team enforces this setting.</p><p>The stored data includes the <a href="./reference/memory.html">memory</a> journal, which <code>bdk init</code> turns on. The journal holds user messages and the agent&#39;s replies. With Privacy Mode, Cursor stores it only to run your agent and doesn&#39;t train on it.</p><h2 id="add-egress-and-secrets" tabindex="-1">Add egress and secrets <a class="header-anchor" href="#add-egress-and-secrets" aria-label="Permalink to &quot;Add egress and secrets&quot;">​</a></h2><p>Declare the external hosts and secret names the agent needs. Mounted extensions add the ones they declare, so list only what your own code calls; <code>bdk info --dir .</code> shows the combined list and what each mount adds. After the deployment exists, set each value at the hidden prompt and follow the CLI or dashboard instruction to redeploy.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/agent.ts</span></span>
64
+ <span class="line"><span> --slug weather-agent</span></span></code></pre></div><p>The source repository must be available through the team&#39;s repository integration, and a nested <code>--path</code> must contain an installable BDK project.</p><h3 id="connect-deployed-peers" tabindex="-1">Connect deployed peers <a class="header-anchor" href="#connect-deployed-peers" aria-label="Permalink to &quot;Connect deployed peers&quot;">​</a></h3><p>A team-owned deployment can call another agent deployed by the same team with <code>defineConnection({ agent: &quot;weather-agent&quot; })</code>. Deploy the specialist and the caller; Cursor-managed hosting resolves the slug and authenticates the call, so you don&#39;t configure a peer URL, header, or secret.</p><p>Redeploy the caller after adding or changing a peer connection. An agent last deployed before hosted peer connections became available also needs one redeploy. See <a href="./guides/agent-to-agent.html">Peer agents</a> for delegation, session affinity, and local development.</p><h3 id="privacy-mode" tabindex="-1">Privacy Mode <a class="header-anchor" href="#privacy-mode" aria-label="Permalink to &quot;Privacy Mode&quot;">​</a></h3><p>A hosted deployment stores a snapshot of its source repository, along with the sessions, KV, files, and logs the agent creates for your team. Whether managed hosting is available depends on the privacy setting that applies to you, which is your team&#39;s setting when the team enforces one:</p><table tabindex="0"><thead><tr><th>Privacy setting</th><th>Managed hosting</th></tr></thead><tbody><tr><td>Privacy Mode</td><td>Available. Cursor stores deployment data the same way it does without Privacy Mode, and the agent&#39;s model requests get the same Privacy Mode handling as your other Cursor requests.</td></tr><tr><td>Privacy Mode (Legacy)</td><td>Not available. <code>deploy</code>, a hosted session, and an eval run all refuse.</td></tr></tbody></table><p><code>deploy</code> refuses because a deployment stores a snapshot of your repository. A hosted session refuses, and Cursor does not store the message. An eval run refuses because it stores prompts and replies. Switch to Privacy Mode, or ask a team admin when your team enforces this setting.</p><p>The stored data includes the <a href="./reference/memory.html">memory</a> journal, which <code>bdk init</code> turns on. The journal holds user messages and the agent&#39;s replies. With Privacy Mode, Cursor stores it only to run your agent and doesn&#39;t train on it.</p><h2 id="add-egress-and-secrets" tabindex="-1">Add egress and secrets <a class="header-anchor" href="#add-egress-and-secrets" aria-label="Permalink to &quot;Add egress and secrets&quot;">​</a></h2><p>Declare the external hosts and secret names the agent needs. Mounted extensions add the ones they declare, so list only what your own code calls; <code>bdk info --dir .</code> shows the combined list and what each mount adds. Deploy the agent, then set each value at the hidden prompt. The next task uses the new value. You do not deploy again to apply that value.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// bot/agent.ts</span></span>
65
65
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { defineAgent } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;@cursor/bdk&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
66
66
  <span class="line"></span>
67
67
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> defineAgent</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
@@ -69,9 +69,9 @@
69
69
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> egressDomains: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;api.weather.example.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span>
70
70
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> secretNames: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;WEATHER_API_KEY&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">],</span></span>
71
71
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
72
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk secrets set weather-agent WEATHER_API_KEY</span></span>
73
- <span class="line"><span>bdk secrets list weather-agent</span></span>
74
- <span class="line"><span>bdk deploy --dir . --slug weather-agent</span></span></code></pre></div><p>Commit secret names, never values. <code>secrets set</code> accepts names and reads values without echoing them; <code>secrets list</code> returns names and creation times only. Do not pass <code>NAME=VALUE</code>, print a secret to verify it, or put names beginning with reserved <code>CURSOR_</code> in <code>secretNames</code>.</p><p>A hosted deployment receives its secrets per request, after its modules are loaded, so code that reads <code>process.env</code> while a module is still loading sees nothing. Read a secret inside the handler, tool, or callback that needs it, and give an MCP connection its credential as a <code>${NAME}</code> template, which resolves when the connection opens. See <a href="./reference/connections.html#credentials-in-headers-and-env">credentials in headers and env</a>. SCM webhook channels go one step further and name their secrets in the channel definition, as <code>{ secretName: &quot;GITHUB_WEBHOOK_SECRET&quot; }</code>, so the platform can verify each delivery&#39;s signature before any compute starts. <code>validate</code> rejects a literal or getter there. The <a href="./guides/github.html#other-hosts">GitHub guide</a> shows the named form.</p><p>Enter egress hosts without schemes or paths. An HTTPS host needs no port; add one, as <code>clickhouse.example.com:9440</code>, only for a protocol the proxy reads no hostname from. The <a href="./guides/mcp-oauth.html">Host MCP OAuth guide</a> covers OAuth-backed MCP servers on a hosted agent.</p><h2 id="use-the-hosted-agent" tabindex="-1">Use the hosted agent <a class="header-anchor" href="#use-the-hosted-agent" aria-label="Permalink to &quot;Use the hosted agent&quot;">​</a></h2><h3 id="verify-a-hosted-turn" tabindex="-1">Verify a hosted turn <a class="header-anchor" href="#verify-a-hosted-turn" aria-label="Permalink to &quot;Verify a hosted turn&quot;">​</a></h3><p>After <code>deploy</code> reports <code>running</code>, message the deployment from the CLI:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --prod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --slug</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> weather-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
72
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk deploy --dir . --slug weather-agent</span></span>
73
+ <span class="line"><span>bdk secrets set weather-agent WEATHER_API_KEY</span></span>
74
+ <span class="line"><span>bdk secrets list weather-agent</span></span></code></pre></div><p>Commit secret names, never values. <code>secrets set</code> accepts names and reads values without echoing them; <code>secrets list</code> returns names and creation times only. Do not pass <code>NAME=VALUE</code>, print a secret to verify it, or put names beginning with reserved <code>CURSOR_</code> in <code>secretNames</code>.</p><p>A hosted deployment receives its secrets per request, after its modules are loaded, so code that reads <code>process.env</code> while a module is still loading sees nothing. Read a secret inside the handler, tool, or callback that needs it, and give an MCP connection its credential as a <code>${NAME}</code> template, which resolves when the connection opens. See <a href="./reference/connections.html#credentials-in-headers-and-env">credentials in headers and env</a>.</p><p><code>bdk deploy</code> runs the top-level code in your files one time to build the snapshot. No secrets exist at that time. The snapshot keeps those values.</p><p>SCM webhook channels go one step further and name their secrets in the channel definition, as <code>{ secretName: &quot;GITHUB_WEBHOOK_SECRET&quot; }</code>, so the platform can verify each delivery&#39;s signature before any compute starts. <code>validate</code> rejects a literal or getter there. The <a href="./guides/github.html#other-hosts">GitHub guide</a> shows the named form.</p><p>Enter egress hosts without schemes or paths. An HTTPS host needs no port; add one, as <code>clickhouse.example.com:9440</code>, only for a protocol the proxy reads no hostname from. The <a href="./guides/mcp-oauth.html">Host MCP OAuth guide</a> covers OAuth-backed MCP servers on a hosted agent.</p><h2 id="use-the-hosted-agent" tabindex="-1">Use the hosted agent <a class="header-anchor" href="#use-the-hosted-agent" aria-label="Permalink to &quot;Use the hosted agent&quot;">​</a></h2><h3 id="verify-a-hosted-turn" tabindex="-1">Verify a hosted turn <a class="header-anchor" href="#verify-a-hosted-turn" aria-label="Permalink to &quot;Verify a hosted turn&quot;">​</a></h3><p>After <code>deploy</code> reports <code>running</code>, message the deployment from the CLI:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --prod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --slug</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> weather-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
75
75
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --message</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;Forecast for Paris&quot;</span></span></code></pre></div><p>The command returns as soon as the deployment accepts the turn, so its output has a <code>deliveryId</code> and <code>workflowId</code> but no <code>sessionId</code> yet; the session is created when the turn starts. Add <code>--dry-run</code> to check a deployment without side effects: read tools run and write tools are stubbed.</p><p>Find the new session in the deployment&#39;s recent output, which prints a <code>==&gt; ses_... (http) &lt;==</code> header for each session, or open the deployment from <strong>Deployed Agents</strong> in the <a href="https://cursor.com/dashboard" target="_blank" rel="noreferrer">dashboard</a> and select <strong>Sessions</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> logs</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --prod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --once</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --slug</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> weather-agent</span></span></code></pre></div><p>Then follow the turn:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bdk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> session</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ses_...</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --prod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --slug</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> weather-agent</span></span></code></pre></div><p>The command lists each hosted run with its status and log lines. While the turn is still working, it reports how many events have arrived and prints <code>Turn running; runs may lag behind events.</code> Rerun it until the latest run shows a final status such as <code>finished</code>. A high-effort turn can take several minutes, and its run can show no logs until it ends, so a growing event count is the progress signal.</p><p>To continue the same conversation, pass <code>--session ses_...</code> to <code>run --prod</code>. <code>bdk playground --prod --slug weather-agent --session ses_...</code> opens the session in the dashboard playground. Hosted deployments don&#39;t support <code>bdk chat</code>, <code>call</code>, <code>sessions</code>, <code>cost</code>, or <code>mcp</code>; use <code>run --prod</code>, <code>logs --prod</code>, and <code>session --prod</code> instead.</p><h3 id="send-work-to-the-deployment" tabindex="-1">Send work to the deployment <a class="header-anchor" href="#send-work-to-the-deployment" aria-label="Permalink to &quot;Send work to the deployment&quot;">​</a></h3><p>A hosted agent wakes from its channels: Slack mentions and DMs, SCM events, and custom channel routes. External HTTP clients call a custom route on the stable alias URL and send the alias token on every request:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POST</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$AGENT_ALIAS_URL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/v1/channels/tickets/ticket&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
76
76
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;X-Agent-Alias-Token: </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$AGENT_ALIAS_TOKEN</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
77
77
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;content-type: application/json&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
@@ -83,8 +83,8 @@
83
83
  <span class="line"><span> --host 127.0.0.1 \</span></span>
84
84
  <span class="line"><span> --port 3000 \</span></span>
85
85
  <span class="line"><span> --state-root /var/lib/bdk \</span></span>
86
- <span class="line"><span> --bearer-token &quot;$BDK_BEARER_TOKEN&quot;</span></span></code></pre></div><p>Before exposing the host:</p><ul><li><p>Put TLS or an authenticating proxy in front of the loopback server.</p></li><li><p>Keep <code>--bearer-token</code> on shared hosts. Use <code>--allow-anonymous</code> only behind a proxy that authenticates every caller.</p></li><li><p>Mount <code>--state-root</code> on a persistent volume outside the agent repository and back it up.</p></li><li><p>Inject credentials at startup instead of baking them into an image.</p></li><li><p>Run the process under a supervisor and enable schedules on exactly one serving process per project.</p></li></ul><p>Containers use the same command with <code>--host 0.0.0.0</code>, a mounted state volume, and an authenticating network boundary. The <a href="./reference/channels.html#auth-policies">Channels reference</a> covers per-caller and channel-specific auth.</p><h2 id="observability" tabindex="-1">Observability <a class="header-anchor" href="#observability" aria-label="Permalink to &quot;Observability&quot;">​</a></h2><p>Use <code>bdk logs --prod</code> and <code>bdk session &lt;sessionId&gt; --prod</code> for a hosted session&#39;s runs and logs, <a href="./guides/opentelemetry.html">OpenTelemetry</a> for traces and metrics, and <a href="./reference/sessions.html#inspect-a-saved-event-stream">session traces</a> for a local conversation.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./guides/migrate.html">Early-alpha migration</a>: move a hosted architecture v1 project to v2 through a reviewed pull request</li><li><a href="./reference/cli.html#deploy">CLI reference</a>: inspect, update, stop, delete, and rotate deployments</li><li><a href="./guides/github.html">GitHub</a>: Cursor-event repositories and direct webhook delivery</li><li><a href="./guides/slack.html">Slack</a>: provision a dedicated hosted Slack app</li><li><a href="./guides/mcp-oauth.html">Host MCP OAuth</a>: reach OAuth-backed MCP servers from a hosted agent</li><li><a href="./troubleshooting.html">Troubleshooting</a>: diagnose failed or stale deployments</li></ul></div></div></main><footer class="VPDocFooter" data-v-4e7466dc data-v-5e6607d6><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-5e6607d6><span class="visually-hidden" id="doc-footer-aria-label" data-v-5e6607d6>Pager</span><div class="pager" data-v-5e6607d6><a class="VPLink link pager-link prev" href="/docs/guides/agent-to-agent.html" data-v-5e6607d6><!--[--><span class="desc" data-v-5e6607d6>Previous page</span><span class="title" data-v-5e6607d6>Peer agents</span><!--]--></a></div><div class="pager" data-v-5e6607d6><a class="VPLink link pager-link next" href="/docs/guides/export-grokbot.html" data-v-5e6607d6><!--[--><span class="desc" data-v-5e6607d6>Next page</span><span class="title" data-v-5e6607d6>Export a Grok Bot</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
87
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"deployment.md\":\"CtSJ6sF9\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"CBK7W0-O\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"Bfj0pK91\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"BM_eFC0L\",\"guides_migrate.md\":\"DZBL7dqT\",\"guides_opentelemetry.md\":\"ByW1Fs7b\",\"guides_slack.md\":\"Bn-WupSE\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"DYA6ge6t\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"DYg0CLud\",\"reference_cli.md\":\"Bkrsce22\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"OUacPetl\",\"reference_hooks.md\":\"B1jq3oGl\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"DrcHZXig\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"03Ryy9ca\",\"reference_sessions.md\":\"C8FXuGwk\",\"reference_skills.md\":\"C2GWh7g8\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"08XR7lIl\",\"templates_agentic-owners.md\":\"CvmABtia\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.22\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
86
+ <span class="line"><span> --bearer-token &quot;$BDK_BEARER_TOKEN&quot;</span></span></code></pre></div><p>Before exposing the host:</p><ul><li><p>Put TLS or an authenticating proxy in front of the loopback server.</p></li><li><p>Keep <code>--bearer-token</code> on shared hosts. Use <code>--allow-anonymous</code> only behind a proxy that authenticates every caller.</p></li><li><p>Mount <code>--state-root</code> on a persistent volume outside the agent repository and back it up.</p></li><li><p>Inject credentials at startup instead of baking them into an image.</p></li><li><p>Run the process under a supervisor and enable schedules on exactly one serving process per project.</p></li></ul><p>Containers use the same command with <code>--host 0.0.0.0</code>, a mounted state volume, and an authenticating network boundary. The <a href="./reference/channels.html#auth-policies">Channels reference</a> covers per-caller and channel-specific auth.</p><h2 id="observability" tabindex="-1">Observability <a class="header-anchor" href="#observability" aria-label="Permalink to &quot;Observability&quot;">​</a></h2><p>Use <code>bdk logs --prod</code> and <code>bdk session &lt;sessionId&gt; --prod</code> for a hosted session&#39;s runs and logs, <a href="./guides/opentelemetry.html">OpenTelemetry</a> for traces and metrics, and <a href="./reference/sessions.html#inspect-a-saved-event-stream">session traces</a> for a local conversation.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./guides/migrate.html">Early-alpha migration</a>: move a hosted architecture v1 project to v2 through a reviewed pull request</li><li><a href="./reference/cli.html#deploy">CLI reference</a>: inspect, update, stop, delete, and rotate deployments</li><li><a href="./guides/github.html">GitHub</a>: Cursor-event repositories and direct webhook delivery</li><li><a href="./guides/slack.html">Slack</a>: provision a dedicated hosted Slack app</li><li><a href="./guides/mcp-oauth.html">Host MCP OAuth</a>: reach OAuth-backed MCP servers from a hosted agent</li><li><a href="./troubleshooting.html">Troubleshooting</a>: diagnose failed or stale deployments</li></ul></div></div></main><footer class="VPDocFooter" data-v-2c214b72 data-v-a3a61b15><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-a3a61b15><span class="visually-hidden" id="doc-footer-aria-label" data-v-a3a61b15>Pager</span><div class="pager" data-v-a3a61b15><a class="VPLink link pager-link prev" href="/docs/guides/agent-to-agent.html" data-v-a3a61b15><!--[--><span class="desc" data-v-a3a61b15>Previous page</span><span class="title" data-v-a3a61b15>Peer agents</span><!--]--></a></div><div class="pager" data-v-a3a61b15><a class="VPLink link pager-link next" href="/docs/guides/export-grokbot.html" data-v-a3a61b15><!--[--><span class="desc" data-v-a3a61b15>Next page</span><span class="title" data-v-a3a61b15>Export a Grok Bot</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
87
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"deployment.md\":\"3MMWuPeV\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"BzbzcOyj\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"Bfj0pK91\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"BM_eFC0L\",\"guides_migrate.md\":\"CQlGaBKX\",\"guides_opentelemetry.md\":\"Ck1o2frw\",\"guides_slack.md\":\"Bn-WupSE\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"IplwL25I\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"DYg0CLud\",\"reference_cli.md\":\"DB7Llw3T\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"DKxTuCIw\",\"reference_hooks.md\":\"B1jq3oGl\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"BYMVxAkw\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"03Ryy9ca\",\"reference_sessions.md\":\"C8FXuGwk\",\"reference_skills.md\":\"C2GWh7g8\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"08XR7lIl\",\"templates_agentic-owners.md\":\"CTEnR0jp\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.24\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
88
88
 
89
89
  </body>
90
90
  </html>
@@ -88,9 +88,9 @@ agent and doesn't train on it.
88
88
  Declare the external hosts and secret names the agent needs. Mounted
89
89
  extensions add the ones they declare, so list only what your own code
90
90
  calls; `bdk info --dir .` shows the combined list and what each mount
91
- adds. After the
92
- deployment exists, set each value at the hidden prompt and follow the
93
- CLI or dashboard instruction to redeploy.
91
+ adds. Deploy the agent, then set each value at the hidden prompt.
92
+ The next task uses the new value. You do not deploy again to apply
93
+ that value.
94
94
 
95
95
  ```ts
96
96
  // bot/agent.ts
@@ -105,9 +105,9 @@ export default defineAgent({
105
105
  ```
106
106
 
107
107
  ```text
108
+ bdk deploy --dir . --slug weather-agent
108
109
  bdk secrets set weather-agent WEATHER_API_KEY
109
110
  bdk secrets list weather-agent
110
- bdk deploy --dir . --slug weather-agent
111
111
  ```
112
112
 
113
113
  Commit secret names, never values. `secrets set` accepts names and reads
@@ -121,6 +121,11 @@ loading sees nothing. Read a secret inside the handler, tool, or callback
121
121
  that needs it, and give an MCP connection its credential as a `${NAME}`
122
122
  template, which resolves when the connection opens. See
123
123
  [credentials in headers and env](/docs/reference/connections.md#credentials-in-headers-and-env).
124
+
125
+ `bdk deploy` runs the top-level code in your files one time to build
126
+ the snapshot. No secrets exist at that time. The snapshot keeps those
127
+ values.
128
+
124
129
  SCM webhook channels go one step further and name their secrets in the
125
130
  channel definition, as `{ secretName: "GITHUB_WEBHOOK_SECRET" }`, so the
126
131
  platform can verify each delivery's signature before any compute starts.