pi-cloudflare 0.1.0

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 (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,192 @@
1
+ # Tunnel Patterns
2
+
3
+ ## Docker Deployment
4
+
5
+ ### Token-Based (Recommended)
6
+ ```yaml
7
+ services:
8
+ cloudflared:
9
+ image: cloudflare/cloudflared:latest
10
+ command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
11
+ restart: unless-stopped
12
+ ```
13
+
14
+ ### Local Config
15
+ ```yaml
16
+ services:
17
+ cloudflared:
18
+ image: cloudflare/cloudflared:latest
19
+ volumes:
20
+ - ./config.yml:/etc/cloudflared/config.yml:ro
21
+ - ./credentials.json:/etc/cloudflared/credentials.json:ro
22
+ command: tunnel run
23
+ ```
24
+
25
+ ## Kubernetes Deployment
26
+
27
+ ```yaml
28
+ apiVersion: apps/v1
29
+ kind: Deployment
30
+ metadata:
31
+ name: cloudflared
32
+ spec:
33
+ replicas: 2
34
+ selector:
35
+ matchLabels:
36
+ app: cloudflared
37
+ template:
38
+ metadata:
39
+ labels:
40
+ app: cloudflared
41
+ spec:
42
+ containers:
43
+ - name: cloudflared
44
+ image: cloudflare/cloudflared:latest
45
+ args:
46
+ - tunnel
47
+ - --no-autoupdate
48
+ - run
49
+ - --token
50
+ - $(TUNNEL_TOKEN)
51
+ env:
52
+ - name: TUNNEL_TOKEN
53
+ valueFrom:
54
+ secretKeyRef:
55
+ name: tunnel-credentials
56
+ key: token
57
+ ```
58
+
59
+ ## High Availability
60
+
61
+ ```yaml
62
+ # Same config on multiple servers
63
+ tunnel: <UUID>
64
+ credentials-file: /path/to/creds.json
65
+
66
+ ingress:
67
+ - hostname: app.example.com
68
+ service: http://localhost:8000
69
+ - service: http_status:404
70
+ ```
71
+
72
+ Run same config on multiple machines. Cloudflare automatically load balances. Long-lived connections (WebSocket, SSH) may drop during updates.
73
+
74
+ ## Use Cases
75
+
76
+ ### Web Application
77
+ ```yaml
78
+ ingress:
79
+ - hostname: myapp.example.com
80
+ service: http://localhost:3000
81
+ - service: http_status:404
82
+ ```
83
+
84
+ ### SSH Access
85
+ ```yaml
86
+ ingress:
87
+ - hostname: ssh.example.com
88
+ service: ssh://localhost:22
89
+ - service: http_status:404
90
+ ```
91
+
92
+ Client: `cloudflared access ssh --hostname ssh.example.com`
93
+
94
+ ### gRPC Service
95
+ ```yaml
96
+ ingress:
97
+ - hostname: grpc.example.com
98
+ service: http://localhost:50051
99
+ originRequest:
100
+ http2Origin: true
101
+ - service: http_status:404
102
+ ```
103
+
104
+ ## Infrastructure as Code
105
+
106
+ ### Terraform
107
+
108
+ ```hcl
109
+ resource "random_id" "tunnel_secret" {
110
+ byte_length = 32
111
+ }
112
+
113
+ resource "cloudflare_tunnel" "app" {
114
+ account_id = var.cloudflare_account_id
115
+ name = "app-tunnel"
116
+ secret = random_id.tunnel_secret.b64_std
117
+ }
118
+
119
+ resource "cloudflare_tunnel_config" "app" {
120
+ account_id = var.cloudflare_account_id
121
+ tunnel_id = cloudflare_tunnel.app.id
122
+ config {
123
+ ingress_rule {
124
+ hostname = "app.example.com"
125
+ service = "http://localhost:8000"
126
+ }
127
+ ingress_rule { service = "http_status:404" }
128
+ }
129
+ }
130
+
131
+ resource "cloudflare_record" "app" {
132
+ zone_id = var.cloudflare_zone_id
133
+ name = "app"
134
+ value = cloudflare_tunnel.app.cname
135
+ type = "CNAME"
136
+ proxied = true
137
+ }
138
+
139
+ output "tunnel_token" {
140
+ value = cloudflare_tunnel.app.tunnel_token
141
+ sensitive = true
142
+ }
143
+ ```
144
+
145
+ ### Pulumi
146
+
147
+ ```typescript
148
+ import * as cloudflare from "@pulumi/cloudflare";
149
+ import * as random from "@pulumi/random";
150
+
151
+ const secret = new random.RandomId("secret", { byteLength: 32 });
152
+
153
+ const tunnel = new cloudflare.ZeroTrustTunnelCloudflared("tunnel", {
154
+ accountId: accountId,
155
+ name: "app-tunnel",
156
+ secret: secret.b64Std,
157
+ });
158
+
159
+ const config = new cloudflare.ZeroTrustTunnelCloudflaredConfig("config", {
160
+ accountId: accountId,
161
+ tunnelId: tunnel.id,
162
+ config: {
163
+ ingressRules: [
164
+ { hostname: "app.example.com", service: "http://localhost:8000" },
165
+ { service: "http_status:404" },
166
+ ],
167
+ },
168
+ });
169
+
170
+ new cloudflare.Record("dns", {
171
+ zoneId: zoneId,
172
+ name: "app",
173
+ value: tunnel.cname,
174
+ type: "CNAME",
175
+ proxied: true,
176
+ });
177
+ ```
178
+
179
+ ## Service Installation
180
+
181
+ ### Linux systemd
182
+ ```bash
183
+ cloudflared service install
184
+ systemctl start cloudflared && systemctl enable cloudflared
185
+ journalctl -u cloudflared -f # Logs
186
+ ```
187
+
188
+ ### macOS launchd
189
+ ```bash
190
+ sudo cloudflared service install
191
+ sudo launchctl start com.cloudflare.cloudflared
192
+ ```
@@ -0,0 +1,82 @@
1
+ # Cloudflare TURN Service
2
+
3
+ Expert guidance for implementing Cloudflare TURN Service in WebRTC applications.
4
+
5
+ ## Overview
6
+
7
+ Cloudflare TURN (Traversal Using Relays around NAT) Service is a managed relay service for WebRTC applications. TURN acts as a relay point for traffic between WebRTC clients and SFUs, particularly when direct peer-to-peer communication is obstructed by NATs or firewalls. The service runs on Cloudflare's global anycast network across 310+ cities.
8
+
9
+ ## Key Characteristics
10
+
11
+ - **Anycast Architecture**: Automatically connects clients to the closest Cloudflare location
12
+ - **Global Network**: Available across Cloudflare's entire network (excluding China Network)
13
+ - **Zero Configuration**: No need to manually select regions or servers
14
+ - **Protocol Support**: STUN/TURN over UDP, TCP, and TLS
15
+ - **Free Tier**: Free when used with Cloudflare Calls SFU, otherwise $0.05/GB outbound
16
+
17
+ ## In This Reference
18
+
19
+ | File | Purpose |
20
+ |------|---------|
21
+ | [api.md](./api.md) | Credentials API, TURN key management, types, constraints |
22
+ | [configuration.md](./configuration.md) | Worker setup, wrangler.jsonc, env vars, IP allowlisting |
23
+ | [patterns.md](./patterns.md) | Implementation patterns, use cases, integration examples |
24
+ | [gotchas.md](./gotchas.md) | Troubleshooting, limits, security, common mistakes |
25
+
26
+ ## Reading Order
27
+
28
+ | Task | Files to Read | Est. Tokens |
29
+ |------|---------------|-------------|
30
+ | Quick start | README only | ~500 |
31
+ | Generate credentials | README → api | ~1300 |
32
+ | Worker integration | README → configuration → patterns | ~2000 |
33
+ | Debug connection | gotchas | ~700 |
34
+ | Security review | api → gotchas | ~1500 |
35
+ | Enterprise firewall | configuration | ~600 |
36
+
37
+ ## Service Addresses and Ports
38
+
39
+ ### STUN over UDP
40
+ - **Primary**: `stun.cloudflare.com:3478/udp`
41
+ - **Alternate**: `stun.cloudflare.com:53/udp` (blocked by browsers, not recommended)
42
+
43
+ ### TURN over UDP
44
+ - **Primary**: `turn.cloudflare.com:3478/udp`
45
+ - **Alternate**: `turn.cloudflare.com:53/udp` (blocked by browsers)
46
+
47
+ ### TURN over TCP
48
+ - **Primary**: `turn.cloudflare.com:3478/tcp`
49
+ - **Alternate**: `turn.cloudflare.com:80/tcp`
50
+
51
+ ### TURN over TLS
52
+ - **Primary**: `turn.cloudflare.com:5349/tcp`
53
+ - **Alternate**: `turn.cloudflare.com:443/tcp`
54
+
55
+ ## Quick Start
56
+
57
+ 1. **Create TURN key via API**: see [api.md#create-turn-key](./api.md#create-turn-key)
58
+ 2. **Generate credentials**: see [api.md#generate-temporary-credentials](./api.md#generate-temporary-credentials)
59
+ 3. **Configure Worker**: see [configuration.md#cloudflare-worker-integration](./configuration.md#cloudflare-worker-integration)
60
+ 4. **Implement client**: see [patterns.md#basic-turn-configuration-browser](./patterns.md#basic-turn-configuration-browser)
61
+
62
+ ## When to Use TURN
63
+
64
+ - **Restrictive NATs**: Symmetric NATs that block direct connections
65
+ - **Corporate firewalls**: Environments blocking WebRTC ports
66
+ - **Mobile networks**: Carrier-grade NAT scenarios
67
+ - **Predictable connectivity**: When reliability > efficiency
68
+
69
+ ## Related Cloudflare Services
70
+
71
+ - **Cloudflare Calls SFU**: Managed Selective Forwarding Unit (TURN free when used with SFU)
72
+ - **Cloudflare Stream**: Video streaming with WHIP/WHEP support
73
+ - **Cloudflare Workers**: Backend for credential generation
74
+ - **Cloudflare KV**: Credential caching
75
+ - **Cloudflare Durable Objects**: Session state management
76
+
77
+ ## Additional Resources
78
+
79
+ - [Cloudflare Calls Documentation](https://developers.cloudflare.com/calls/)
80
+ - [Cloudflare TURN Service Docs](https://developers.cloudflare.com/realtime/turn/)
81
+ - [Cloudflare API Reference](https://developers.cloudflare.com/api/resources/calls/subresources/turn/)
82
+ - [Orange Meets (Open Source Example)](https://github.com/cloudflare/orange)
@@ -0,0 +1,239 @@
1
+ # TURN API Reference
2
+
3
+ Complete API documentation for Cloudflare TURN service credentials and key management.
4
+
5
+ ## Authentication
6
+
7
+ All endpoints require Cloudflare API token with "Calls Write" permission.
8
+
9
+ Base URL: `https://api.cloudflare.com/client/v4`
10
+
11
+ ## TURN Key Management
12
+
13
+ ### List TURN Keys
14
+
15
+ ```
16
+ GET /accounts/{account_id}/calls/turn_keys
17
+ ```
18
+
19
+ ### Get TURN Key Details
20
+
21
+ ```
22
+ GET /accounts/{account_id}/calls/turn_keys/{key_id}
23
+ ```
24
+
25
+ ### Create TURN Key
26
+
27
+ ```
28
+ POST /accounts/{account_id}/calls/turn_keys
29
+ Content-Type: application/json
30
+
31
+ {
32
+ "name": "my-turn-key"
33
+ }
34
+ ```
35
+
36
+ **Response includes**:
37
+ - `uid`: Key identifier
38
+ - `key`: The actual secret key (only returned on creation—save immediately)
39
+ - `name`: Human-readable name
40
+ - `created`: ISO 8601 timestamp
41
+ - `modified`: ISO 8601 timestamp
42
+
43
+ ### Update TURN Key
44
+
45
+ ```
46
+ PUT /accounts/{account_id}/calls/turn_keys/{key_id}
47
+ Content-Type: application/json
48
+
49
+ {
50
+ "name": "updated-name"
51
+ }
52
+ ```
53
+
54
+ ### Delete TURN Key
55
+
56
+ ```
57
+ DELETE /accounts/{account_id}/calls/turn_keys/{key_id}
58
+ ```
59
+
60
+ ## Generate Temporary Credentials
61
+
62
+ ```
63
+ POST https://rtc.live.cloudflare.com/v1/turn/keys/{key_id}/credentials/generate
64
+ Authorization: Bearer {key_secret}
65
+ Content-Type: application/json
66
+
67
+ {
68
+ "ttl": 86400
69
+ }
70
+ ```
71
+
72
+ ### Credential Constraints
73
+
74
+ | Parameter | Min | Max | Default | Notes |
75
+ |-----------|-----|-----|---------|-------|
76
+ | ttl | 1 | 172800 (48hrs) | varies | API rejects values >172800 |
77
+
78
+ **CRITICAL**: Maximum TTL is 48 hours (172800 seconds). API will reject requests exceeding this limit.
79
+
80
+ ### Response Schema
81
+
82
+ ```json
83
+ {
84
+ "iceServers": {
85
+ "urls": [
86
+ "stun:stun.cloudflare.com:3478",
87
+ "turn:turn.cloudflare.com:3478?transport=udp",
88
+ "turn:turn.cloudflare.com:3478?transport=tcp",
89
+ "turn:turn.cloudflare.com:53?transport=udp",
90
+ "turn:turn.cloudflare.com:80?transport=tcp",
91
+ "turns:turn.cloudflare.com:5349?transport=tcp",
92
+ "turns:turn.cloudflare.com:443?transport=tcp"
93
+ ],
94
+ "username": "1738035200:user123",
95
+ "credential": "base64encodedhmac=="
96
+ }
97
+ }
98
+ ```
99
+
100
+ **Port 53 Warning**: Filter port 53 URLs for browser clients—blocked by Chrome/Firefox. See [gotchas.md](./gotchas.md#using-port-53-in-browsers).
101
+
102
+ ## Revoke Credentials
103
+
104
+ ```
105
+ POST https://rtc.live.cloudflare.com/v1/turn/keys/{key_id}/credentials/revoke
106
+ Authorization: Bearer {key_secret}
107
+ Content-Type: application/json
108
+
109
+ {
110
+ "username": "1738035200:user123"
111
+ }
112
+ ```
113
+
114
+ **Response**: 204 No Content
115
+
116
+ Billing stops immediately. Active connection drops after short delay (~seconds).
117
+
118
+ ## TypeScript Types
119
+
120
+ ```typescript
121
+ interface CloudflareTURNConfig {
122
+ keyId: string;
123
+ keySecret: string;
124
+ ttl?: number; // Max 172800 (48 hours)
125
+ }
126
+
127
+ interface TURNCredentialsRequest {
128
+ ttl?: number; // Max 172800 seconds
129
+ }
130
+
131
+ interface TURNCredentialsResponse {
132
+ iceServers: {
133
+ urls: string[];
134
+ username: string;
135
+ credential: string;
136
+ };
137
+ }
138
+
139
+ interface RTCIceServer {
140
+ urls: string | string[];
141
+ username?: string;
142
+ credential?: string;
143
+ credentialType?: "password";
144
+ }
145
+
146
+ interface TURNKeyResponse {
147
+ uid: string;
148
+ key: string; // Only present on creation
149
+ name: string;
150
+ created: string;
151
+ modified: string;
152
+ }
153
+ ```
154
+
155
+ ## Validation Function
156
+
157
+ ```typescript
158
+ function validateRTCIceServer(obj: unknown): obj is RTCIceServer {
159
+ if (!obj || typeof obj !== 'object') {
160
+ return false;
161
+ }
162
+
163
+ const server = obj as Record<string, unknown>;
164
+
165
+ if (typeof server.urls !== 'string' && !Array.isArray(server.urls)) {
166
+ return false;
167
+ }
168
+
169
+ if (server.username && typeof server.username !== 'string') {
170
+ return false;
171
+ }
172
+
173
+ if (server.credential && typeof server.credential !== 'string') {
174
+ return false;
175
+ }
176
+
177
+ return true;
178
+ }
179
+ ```
180
+
181
+ ## Type-Safe Credential Generation
182
+
183
+ ```typescript
184
+ async function fetchTURNServers(
185
+ config: CloudflareTURNConfig
186
+ ): Promise<RTCIceServer[]> {
187
+ // Validate TTL constraint
188
+ const ttl = config.ttl ?? 3600;
189
+ if (ttl > 172800) {
190
+ throw new Error('TTL cannot exceed 172800 seconds (48 hours)');
191
+ }
192
+
193
+ const response = await fetch(
194
+ `https://rtc.live.cloudflare.com/v1/turn/keys/${config.keyId}/credentials/generate`,
195
+ {
196
+ method: 'POST',
197
+ headers: {
198
+ 'Authorization': `Bearer ${config.keySecret}`,
199
+ 'Content-Type': 'application/json'
200
+ },
201
+ body: JSON.stringify({ ttl })
202
+ }
203
+ );
204
+
205
+ if (!response.ok) {
206
+ throw new Error(`TURN credential generation failed: ${response.status}`);
207
+ }
208
+
209
+ const data = await response.json();
210
+
211
+ // Filter port 53 for browser clients
212
+ const filteredUrls = data.iceServers.urls.filter(
213
+ (url: string) => !url.includes(':53')
214
+ );
215
+
216
+ const iceServers = [
217
+ { urls: 'stun:stun.cloudflare.com:3478' },
218
+ {
219
+ urls: filteredUrls,
220
+ username: data.iceServers.username,
221
+ credential: data.iceServers.credential,
222
+ credentialType: 'password' as const
223
+ }
224
+ ];
225
+
226
+ // Validate before returning
227
+ if (!iceServers.every(validateRTCIceServer)) {
228
+ throw new Error('Invalid ICE server configuration received');
229
+ }
230
+
231
+ return iceServers;
232
+ }
233
+ ```
234
+
235
+ ## See Also
236
+
237
+ - [configuration.md](./configuration.md) - Worker setup, environment variables
238
+ - [patterns.md](./patterns.md) - Implementation examples using these APIs
239
+ - [gotchas.md](./gotchas.md) - Security best practices, common mistakes
@@ -0,0 +1,179 @@
1
+ # TURN Configuration
2
+
3
+ Setup and configuration for Cloudflare TURN service in Workers and applications.
4
+
5
+ ## Environment Variables
6
+
7
+ ```bash
8
+ # .env
9
+ CLOUDFLARE_ACCOUNT_ID=your_account_id
10
+ CLOUDFLARE_API_TOKEN=your_api_token
11
+ TURN_KEY_ID=your_turn_key_id
12
+ TURN_KEY_SECRET=your_turn_key_secret
13
+ ```
14
+
15
+ Validate with zod:
16
+
17
+ ```typescript
18
+ import { z } from 'zod';
19
+
20
+ const envSchema = z.object({
21
+ CLOUDFLARE_ACCOUNT_ID: z.string().min(1),
22
+ CLOUDFLARE_API_TOKEN: z.string().min(1),
23
+ TURN_KEY_ID: z.string().min(1),
24
+ TURN_KEY_SECRET: z.string().min(1)
25
+ });
26
+
27
+ export const config = envSchema.parse(process.env);
28
+ ```
29
+
30
+ ## wrangler.jsonc
31
+
32
+ ```jsonc
33
+ {
34
+ "name": "turn-credentials-api",
35
+ "main": "src/index.ts",
36
+ "compatibility_date": "2025-01-01",
37
+ "vars": {
38
+ "TURN_KEY_ID": "your-turn-key-id" // Non-sensitive, can be in vars
39
+ },
40
+ "env": {
41
+ "production": {
42
+ "kv_namespaces": [
43
+ {
44
+ "binding": "CREDENTIALS_CACHE",
45
+ "id": "your-kv-namespace-id"
46
+ }
47
+ ]
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ **Store secrets separately**:
54
+ ```bash
55
+ wrangler secret put TURN_KEY_SECRET
56
+ ```
57
+
58
+ ## Cloudflare Worker Integration
59
+
60
+ ### Worker Binding Types
61
+
62
+ ```typescript
63
+ interface Env {
64
+ TURN_KEY_ID: string;
65
+ TURN_KEY_SECRET: string;
66
+ CREDENTIALS_CACHE?: KVNamespace;
67
+ }
68
+
69
+ export default {
70
+ async fetch(request: Request, env: Env): Promise<Response> {
71
+ // See patterns.md for implementation
72
+ }
73
+ }
74
+ ```
75
+
76
+ ### Basic Worker Example
77
+
78
+ ```typescript
79
+ export default {
80
+ async fetch(request: Request, env: Env): Promise<Response> {
81
+ if (request.url.endsWith('/turn-credentials')) {
82
+ // Validate client auth
83
+ const authHeader = request.headers.get('Authorization');
84
+ if (!authHeader) {
85
+ return new Response('Unauthorized', { status: 401 });
86
+ }
87
+
88
+ const response = await fetch(
89
+ `https://rtc.live.cloudflare.com/v1/turn/keys/${env.TURN_KEY_ID}/credentials/generate`,
90
+ {
91
+ method: 'POST',
92
+ headers: {
93
+ 'Authorization': `Bearer ${env.TURN_KEY_SECRET}`,
94
+ 'Content-Type': 'application/json'
95
+ },
96
+ body: JSON.stringify({ ttl: 3600 })
97
+ }
98
+ );
99
+
100
+ if (!response.ok) {
101
+ return new Response('Failed to generate credentials', { status: 500 });
102
+ }
103
+
104
+ const data = await response.json();
105
+
106
+ // Filter port 53 for browser clients
107
+ const filteredUrls = data.iceServers.urls.filter(
108
+ (url: string) => !url.includes(':53')
109
+ );
110
+
111
+ return Response.json({
112
+ iceServers: [
113
+ { urls: 'stun:stun.cloudflare.com:3478' },
114
+ {
115
+ urls: filteredUrls,
116
+ username: data.iceServers.username,
117
+ credential: data.iceServers.credential
118
+ }
119
+ ]
120
+ });
121
+ }
122
+
123
+ return new Response('Not found', { status: 404 });
124
+ }
125
+ };
126
+ ```
127
+
128
+ ## IP Allowlisting (Enterprise/Firewall)
129
+
130
+ For strict firewalls, allowlist these IPs for `turn.cloudflare.com`:
131
+
132
+ | Type | Address | Protocol |
133
+ |------|---------|----------|
134
+ | IPv4 | 141.101.90.1/32 | All |
135
+ | IPv4 | 162.159.207.1/32 | All |
136
+ | IPv6 | 2a06:98c1:3200::1/128 | All |
137
+ | IPv6 | 2606:4700:48::1/128 | All |
138
+
139
+ **IMPORTANT**: These IPs may change with 14-day notice. Monitor DNS:
140
+
141
+ ```bash
142
+ # Check A and AAAA records
143
+ dig turn.cloudflare.com A
144
+ dig turn.cloudflare.com AAAA
145
+ ```
146
+
147
+ Set up automated monitoring to detect IP changes and update allowlists within 14 days.
148
+
149
+ ## IPv6 Support
150
+
151
+ - **Client-to-TURN**: Both IPv4 and IPv6 supported
152
+ - **Relay addresses**: IPv4 only (no RFC 6156 support)
153
+ - **TCP relaying**: Not supported (RFC 6062)
154
+
155
+ Clients can connect via IPv6, but relayed traffic uses IPv4 addresses.
156
+
157
+ ## TLS Configuration
158
+
159
+ ### Supported TLS Versions
160
+ - TLS 1.1
161
+ - TLS 1.2
162
+ - TLS 1.3
163
+
164
+ ### Recommended Ciphers (TLS 1.3)
165
+ - AEAD-AES128-GCM-SHA256
166
+ - AEAD-AES256-GCM-SHA384
167
+ - AEAD-CHACHA20-POLY1305-SHA256
168
+
169
+ ### Recommended Ciphers (TLS 1.2)
170
+ - ECDHE-ECDSA-AES128-GCM-SHA256
171
+ - ECDHE-RSA-AES128-GCM-SHA256
172
+ - ECDHE-RSA-AES128-SHA (also TLS 1.1)
173
+ - AES128-GCM-SHA256
174
+
175
+ ## See Also
176
+
177
+ - [api.md](./api.md) - TURN key creation, credential generation API
178
+ - [patterns.md](./patterns.md) - Full Worker implementation patterns
179
+ - [gotchas.md](./gotchas.md) - Security best practices, troubleshooting