@wenathlan/saddle 1.8.17 → 2.0.2

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 (1005) hide show
  1. package/Dockerfile +1339 -0
  2. package/README.md +68 -22
  3. package/alternatives.ts +1218 -0
  4. package/biome.json +153 -0
  5. package/boards.json +1517 -0
  6. package/compute.ts +3144 -0
  7. package/cores.json +1801 -0
  8. package/dist/acquisition.d.ts +359 -0
  9. package/dist/acquisition.d.ts.map +1 -0
  10. package/dist/acquisition.js +629 -0
  11. package/dist/acquisition.js.map +1 -0
  12. package/dist/alternatives.d.ts +509 -0
  13. package/dist/alternatives.d.ts.map +1 -0
  14. package/dist/alternatives.js +951 -0
  15. package/dist/alternatives.js.map +1 -0
  16. package/dist/automation.d.ts +426 -0
  17. package/dist/automation.d.ts.map +1 -0
  18. package/dist/automation.js +561 -0
  19. package/dist/automation.js.map +1 -0
  20. package/dist/browser.d.ts +562 -0
  21. package/dist/browser.d.ts.map +1 -0
  22. package/dist/browser.js +1057 -0
  23. package/dist/browser.js.map +1 -0
  24. package/dist/capacitor.config.d.ts +13 -0
  25. package/dist/capacitor.config.d.ts.map +1 -0
  26. package/dist/capacitor.config.js +26 -0
  27. package/dist/capacitor.config.js.map +1 -0
  28. package/dist/cli.d.ts +17 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +111 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/communication.d.ts +192 -0
  33. package/dist/communication.d.ts.map +1 -0
  34. package/dist/communication.js +418 -0
  35. package/dist/communication.js.map +1 -0
  36. package/dist/compute.d.ts +1161 -0
  37. package/dist/compute.d.ts.map +1 -0
  38. package/dist/compute.js +2273 -0
  39. package/dist/compute.js.map +1 -0
  40. package/dist/distribution.d.ts +529 -0
  41. package/dist/distribution.d.ts.map +1 -0
  42. package/dist/distribution.js +811 -0
  43. package/dist/distribution.js.map +1 -0
  44. package/dist/execution.d.ts +530 -0
  45. package/dist/execution.d.ts.map +1 -0
  46. package/dist/execution.js +761 -0
  47. package/dist/execution.js.map +1 -0
  48. package/dist/format.d.ts +19 -0
  49. package/dist/format.d.ts.map +1 -0
  50. package/dist/format.js +60 -0
  51. package/dist/format.js.map +1 -0
  52. package/dist/foundation.d.ts +176 -0
  53. package/dist/foundation.d.ts.map +1 -0
  54. package/dist/foundation.js +309 -0
  55. package/dist/foundation.js.map +1 -0
  56. package/dist/index.d.ts +733 -122
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1018 -122
  59. package/dist/index.js.map +1 -1
  60. package/dist/integration.d.ts +236 -0
  61. package/dist/integration.d.ts.map +1 -0
  62. package/dist/integration.js +236 -0
  63. package/dist/integration.js.map +1 -0
  64. package/dist/intelligence.d.ts +94 -0
  65. package/dist/intelligence.d.ts.map +1 -0
  66. package/dist/intelligence.js +145 -0
  67. package/dist/intelligence.js.map +1 -0
  68. package/dist/isolation.d.ts +129 -0
  69. package/dist/isolation.d.ts.map +1 -0
  70. package/dist/isolation.js +96 -0
  71. package/dist/isolation.js.map +1 -0
  72. package/dist/media.d.ts +344 -0
  73. package/dist/media.d.ts.map +1 -0
  74. package/dist/media.js +986 -0
  75. package/dist/media.js.map +1 -0
  76. package/dist/modes.d.ts +359 -0
  77. package/dist/modes.d.ts.map +1 -0
  78. package/dist/modes.js +134 -0
  79. package/dist/modes.js.map +1 -0
  80. package/dist/{library/public.d.ts → operations.d.ts} +15 -1
  81. package/dist/operations.d.ts.map +1 -0
  82. package/dist/{library/public.js → operations.js} +18 -7
  83. package/dist/operations.js.map +1 -0
  84. package/dist/orchestrator.d.ts +1339 -0
  85. package/dist/orchestrator.d.ts.map +1 -0
  86. package/dist/orchestrator.js +4308 -0
  87. package/dist/orchestrator.js.map +1 -0
  88. package/dist/performance.d.ts +416 -0
  89. package/dist/performance.d.ts.map +1 -0
  90. package/dist/performance.js +827 -0
  91. package/dist/performance.js.map +1 -0
  92. package/dist/quantum.d.ts +810 -0
  93. package/dist/quantum.d.ts.map +1 -0
  94. package/dist/quantum.js +2073 -0
  95. package/dist/quantum.js.map +1 -0
  96. package/dist/render.d.ts +381 -0
  97. package/dist/render.d.ts.map +1 -0
  98. package/dist/render.js +1073 -0
  99. package/dist/render.js.map +1 -0
  100. package/dist/scheduler.d.ts +596 -0
  101. package/dist/scheduler.d.ts.map +1 -0
  102. package/dist/scheduler.js +1259 -0
  103. package/dist/scheduler.js.map +1 -0
  104. package/dist/security.d.ts +501 -0
  105. package/dist/security.d.ts.map +1 -0
  106. package/dist/security.js +1170 -0
  107. package/dist/security.js.map +1 -0
  108. package/dist/server.d.ts +21 -0
  109. package/dist/server.d.ts.map +1 -0
  110. package/dist/{server/node.js → server.js} +16 -2
  111. package/dist/server.js.map +1 -0
  112. package/dist/tiers.d.ts +1002 -0
  113. package/dist/tiers.d.ts.map +1 -0
  114. package/dist/tiers.js +2165 -0
  115. package/dist/tiers.js.map +1 -0
  116. package/dist/virtual.d.ts +641 -0
  117. package/dist/virtual.d.ts.map +1 -0
  118. package/dist/virtual.js +1285 -0
  119. package/dist/virtual.js.map +1 -0
  120. package/dist/virtualcpu.d.ts +316 -0
  121. package/dist/virtualcpu.d.ts.map +1 -0
  122. package/dist/virtualcpu.js +1180 -0
  123. package/dist/virtualcpu.js.map +1 -0
  124. package/dist/virtualgpu.d.ts +345 -0
  125. package/dist/virtualgpu.d.ts.map +1 -0
  126. package/dist/virtualgpu.js +1000 -0
  127. package/dist/virtualgpu.js.map +1 -0
  128. package/dist/virtualization.d.ts +607 -0
  129. package/dist/virtualization.d.ts.map +1 -0
  130. package/dist/virtualization.js +1187 -0
  131. package/dist/virtualization.js.map +1 -0
  132. package/dist/virtualmemory.d.ts +818 -0
  133. package/dist/virtualmemory.d.ts.map +1 -0
  134. package/dist/virtualmemory.js +1796 -0
  135. package/dist/virtualmemory.js.map +1 -0
  136. package/dist/webscrape.d.ts +720 -0
  137. package/dist/webscrape.d.ts.map +1 -0
  138. package/dist/webscrape.js +2697 -0
  139. package/dist/webscrape.js.map +1 -0
  140. package/docker.config +769 -0
  141. package/docs/CONVERSA.txt +1523 -0
  142. package/docs/alternatives.md +499 -0
  143. package/docs/architecture-1.8.19.md +76 -0
  144. package/docs/architecture-1.8.19.mmd +33 -0
  145. package/docs/architecture-1.8.19.png +0 -0
  146. package/docs/architecture.md +355 -0
  147. package/docs/artifactavailability.md +6 -0
  148. package/docs/brancharchive-2026-08-18.md +18 -0
  149. package/docs/browser.md +7 -0
  150. package/docs/consolidation.md +70 -0
  151. package/docs/e2ugh-engine.md +528 -0
  152. package/{dist/examples/localjob.js → docs/example-localjob.ts} +3 -3
  153. package/{dist/examples/publicapi.js → docs/example-publicapi.ts} +2 -2
  154. package/docs/hardware.md +342 -0
  155. package/docs/optimization.md +126 -0
  156. package/docs/performance.md +499 -0
  157. package/docs/planning.1.8.18.md +94 -0
  158. package/docs/planning.1.8.19.md +49 -0
  159. package/docs/releasenotes-1.8.17.md +6 -0
  160. package/docs/releasenotes-1.8.18.md +32 -0
  161. package/docs/releasenotes-1.8.19.md +35 -0
  162. package/docs/research-1.8.18-isolation.md +43 -0
  163. package/docs/research-1.8.19-virtual-browser.md +27 -0
  164. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  165. package/docs/security.md +454 -0
  166. package/docs/todo-1.8.16.md +56 -1
  167. package/docs/todo-1.8.18.md +164 -0
  168. package/docs/todo-1.8.19.md +241 -0
  169. package/docs/viability.md +777 -0
  170. package/docs/virtualization.md +335 -0
  171. package/docs/web-duplicatecleanup.md +9 -0
  172. package/docs/web-ideas.md +106 -0
  173. package/docs/workflowimprovements-2026-08-19.md +70 -0
  174. package/gpumonitor.cpp +1543 -0
  175. package/gpus.json +2408 -0
  176. package/index.ts +1478 -0
  177. package/media.ts +1337 -0
  178. package/mttg.config +1549 -0
  179. package/orchestrator.ts +5462 -0
  180. package/package.json +304 -55
  181. package/passage.config +1331 -0
  182. package/performance.ts +1049 -0
  183. package/processors.json +2217 -0
  184. package/qemu.config +1062 -0
  185. package/qemubridge.py +1340 -0
  186. package/quantum.ts +2393 -0
  187. package/render.ts +1325 -0
  188. package/scheduler.ts +1600 -0
  189. package/security.ts +1449 -0
  190. package/tiers.ts +2871 -0
  191. package/tsconfig.json +29 -0
  192. package/virtualcpu.ts +1273 -0
  193. package/virtualgpu.ts +1181 -0
  194. package/virtualhardware.c +1011 -0
  195. package/virtualhardware.json +739 -0
  196. package/virtualization.ts +1628 -0
  197. package/virtualizationcore.cpp +4635 -0
  198. package/virtualmemory.ts +2303 -0
  199. package/vm.config.json +1910 -0
  200. package/{extension → web/extension}/manifest.json +1 -1
  201. package/web/readme.md +382 -0
  202. package/web/tsconfig.json +25 -0
  203. package/dist/adapters/forge.d.ts +0 -17
  204. package/dist/adapters/forge.d.ts.map +0 -1
  205. package/dist/adapters/forge.js +0 -19
  206. package/dist/adapters/forge.js.map +0 -1
  207. package/dist/adapters/forgejo.d.ts +0 -49
  208. package/dist/adapters/forgejo.d.ts.map +0 -1
  209. package/dist/adapters/forgejo.js +0 -8
  210. package/dist/adapters/forgejo.js.map +0 -1
  211. package/dist/adapters/github.d.ts +0 -12
  212. package/dist/adapters/github.d.ts.map +0 -1
  213. package/dist/adapters/github.js +0 -20
  214. package/dist/adapters/github.js.map +0 -1
  215. package/dist/adapters/gitlab.d.ts +0 -17
  216. package/dist/adapters/gitlab.d.ts.map +0 -1
  217. package/dist/adapters/gitlab.js +0 -10
  218. package/dist/adapters/gitlab.js.map +0 -1
  219. package/dist/adapters/huggingface.d.ts +0 -17
  220. package/dist/adapters/huggingface.d.ts.map +0 -1
  221. package/dist/adapters/huggingface.js +0 -6
  222. package/dist/adapters/huggingface.js.map +0 -1
  223. package/dist/adapters/socket.d.ts +0 -11
  224. package/dist/adapters/socket.d.ts.map +0 -1
  225. package/dist/adapters/socket.js +0 -17
  226. package/dist/adapters/socket.js.map +0 -1
  227. package/dist/adapters/transport.d.ts +0 -7
  228. package/dist/adapters/transport.d.ts.map +0 -1
  229. package/dist/adapters/transport.js +0 -36
  230. package/dist/adapters/transport.js.map +0 -1
  231. package/dist/ai/chunk.d.ts +0 -2
  232. package/dist/ai/chunk.d.ts.map +0 -1
  233. package/dist/ai/chunk.js +0 -36
  234. package/dist/ai/chunk.js.map +0 -1
  235. package/dist/ai/llmstxt.d.ts +0 -6
  236. package/dist/ai/llmstxt.d.ts.map +0 -1
  237. package/dist/ai/llmstxt.js +0 -12
  238. package/dist/ai/llmstxt.js.map +0 -1
  239. package/dist/ai/provenance.d.ts +0 -22
  240. package/dist/ai/provenance.d.ts.map +0 -1
  241. package/dist/ai/provenance.js +0 -25
  242. package/dist/ai/provenance.js.map +0 -1
  243. package/dist/ai/rag.d.ts +0 -26
  244. package/dist/ai/rag.d.ts.map +0 -1
  245. package/dist/ai/rag.js +0 -22
  246. package/dist/ai/rag.js.map +0 -1
  247. package/dist/ai/tokens.d.ts +0 -15
  248. package/dist/ai/tokens.d.ts.map +0 -1
  249. package/dist/ai/tokens.js +0 -9
  250. package/dist/ai/tokens.js.map +0 -1
  251. package/dist/api/auth.d.ts +0 -16
  252. package/dist/api/auth.d.ts.map +0 -1
  253. package/dist/api/auth.js +0 -19
  254. package/dist/api/auth.js.map +0 -1
  255. package/dist/api/contracts.d.ts +0 -28
  256. package/dist/api/contracts.d.ts.map +0 -1
  257. package/dist/api/contracts.js +0 -14
  258. package/dist/api/contracts.js.map +0 -1
  259. package/dist/api/control.d.ts +0 -10
  260. package/dist/api/control.d.ts.map +0 -1
  261. package/dist/api/control.js +0 -35
  262. package/dist/api/control.js.map +0 -1
  263. package/dist/api/http.d.ts +0 -7
  264. package/dist/api/http.d.ts.map +0 -1
  265. package/dist/api/http.js +0 -12
  266. package/dist/api/http.js.map +0 -1
  267. package/dist/api/rate.d.ts +0 -28
  268. package/dist/api/rate.d.ts.map +0 -1
  269. package/dist/api/rate.js +0 -36
  270. package/dist/api/rate.js.map +0 -1
  271. package/dist/api/security.d.ts +0 -12
  272. package/dist/api/security.d.ts.map +0 -1
  273. package/dist/api/security.js +0 -56
  274. package/dist/api/security.js.map +0 -1
  275. package/dist/api/service.d.ts +0 -5
  276. package/dist/api/service.d.ts.map +0 -1
  277. package/dist/api/service.js +0 -70
  278. package/dist/api/service.js.map +0 -1
  279. package/dist/apps/registry.d.ts +0 -33
  280. package/dist/apps/registry.d.ts.map +0 -1
  281. package/dist/apps/registry.js +0 -24
  282. package/dist/apps/registry.js.map +0 -1
  283. package/dist/binary/archive.d.ts +0 -27
  284. package/dist/binary/archive.d.ts.map +0 -1
  285. package/dist/binary/archive.js +0 -46
  286. package/dist/binary/archive.js.map +0 -1
  287. package/dist/binary/build.d.ts +0 -29
  288. package/dist/binary/build.d.ts.map +0 -1
  289. package/dist/binary/build.js +0 -17
  290. package/dist/binary/build.js.map +0 -1
  291. package/dist/binary/transform.d.ts +0 -70
  292. package/dist/binary/transform.d.ts.map +0 -1
  293. package/dist/binary/transform.js +0 -105
  294. package/dist/binary/transform.js.map +0 -1
  295. package/dist/bot/adapter.d.ts +0 -5
  296. package/dist/bot/adapter.d.ts.map +0 -1
  297. package/dist/bot/adapter.js +0 -11
  298. package/dist/bot/adapter.js.map +0 -1
  299. package/dist/bot/bot.d.ts +0 -28
  300. package/dist/bot/bot.d.ts.map +0 -1
  301. package/dist/bot/bot.js +0 -52
  302. package/dist/bot/bot.js.map +0 -1
  303. package/dist/bot/commands.d.ts +0 -8
  304. package/dist/bot/commands.d.ts.map +0 -1
  305. package/dist/bot/commands.js +0 -19
  306. package/dist/bot/commands.js.map +0 -1
  307. package/dist/bot/permissions.d.ts +0 -13
  308. package/dist/bot/permissions.d.ts.map +0 -1
  309. package/dist/bot/permissions.js +0 -16
  310. package/dist/bot/permissions.js.map +0 -1
  311. package/dist/browser/actions.d.ts +0 -33
  312. package/dist/browser/actions.d.ts.map +0 -1
  313. package/dist/browser/actions.js +0 -44
  314. package/dist/browser/actions.js.map +0 -1
  315. package/dist/browser/agent.d.ts +0 -21
  316. package/dist/browser/agent.d.ts.map +0 -1
  317. package/dist/browser/agent.js +0 -13
  318. package/dist/browser/agent.js.map +0 -1
  319. package/dist/browser/context.d.ts +0 -43
  320. package/dist/browser/context.d.ts.map +0 -1
  321. package/dist/browser/context.js +0 -54
  322. package/dist/browser/context.js.map +0 -1
  323. package/dist/browser/fingerprint.d.ts +0 -4
  324. package/dist/browser/fingerprint.d.ts.map +0 -1
  325. package/dist/browser/fingerprint.js +0 -12
  326. package/dist/browser/fingerprint.js.map +0 -1
  327. package/dist/browser/index.d.ts +0 -11
  328. package/dist/browser/index.d.ts.map +0 -1
  329. package/dist/browser/index.js +0 -11
  330. package/dist/browser/index.js.map +0 -1
  331. package/dist/browser/playwright.d.ts +0 -11
  332. package/dist/browser/playwright.d.ts.map +0 -1
  333. package/dist/browser/playwright.js +0 -24
  334. package/dist/browser/playwright.js.map +0 -1
  335. package/dist/browser/recorder.d.ts +0 -21
  336. package/dist/browser/recorder.d.ts.map +0 -1
  337. package/dist/browser/recorder.js +0 -58
  338. package/dist/browser/recorder.js.map +0 -1
  339. package/dist/browser/session.d.ts +0 -14
  340. package/dist/browser/session.d.ts.map +0 -1
  341. package/dist/browser/session.js +0 -21
  342. package/dist/browser/session.js.map +0 -1
  343. package/dist/browser/snapshot.d.ts +0 -69
  344. package/dist/browser/snapshot.d.ts.map +0 -1
  345. package/dist/browser/snapshot.js +0 -133
  346. package/dist/browser/snapshot.js.map +0 -1
  347. package/dist/captcha/contract.d.ts +0 -35
  348. package/dist/captcha/contract.d.ts.map +0 -1
  349. package/dist/captcha/contract.js +0 -17
  350. package/dist/captcha/contract.js.map +0 -1
  351. package/dist/captcha/evidence.d.ts +0 -10
  352. package/dist/captcha/evidence.d.ts.map +0 -1
  353. package/dist/captcha/evidence.js +0 -9
  354. package/dist/captcha/evidence.js.map +0 -1
  355. package/dist/captcha/guard.d.ts +0 -23
  356. package/dist/captcha/guard.d.ts.map +0 -1
  357. package/dist/captcha/guard.js +0 -12
  358. package/dist/captcha/guard.js.map +0 -1
  359. package/dist/cli/main.d.ts +0 -4
  360. package/dist/cli/main.d.ts.map +0 -1
  361. package/dist/cli/main.js +0 -46
  362. package/dist/cli/main.js.map +0 -1
  363. package/dist/core/errors.d.ts +0 -84
  364. package/dist/core/errors.d.ts.map +0 -1
  365. package/dist/core/errors.js +0 -54
  366. package/dist/core/errors.js.map +0 -1
  367. package/dist/core/events.d.ts +0 -9
  368. package/dist/core/events.d.ts.map +0 -1
  369. package/dist/core/events.js +0 -21
  370. package/dist/core/events.js.map +0 -1
  371. package/dist/core/hash.d.ts +0 -10
  372. package/dist/core/hash.d.ts.map +0 -1
  373. package/dist/core/hash.js +0 -82
  374. package/dist/core/hash.js.map +0 -1
  375. package/dist/core/ids.d.ts +0 -10
  376. package/dist/core/ids.d.ts.map +0 -1
  377. package/dist/core/ids.js +0 -15
  378. package/dist/core/ids.js.map +0 -1
  379. package/dist/delivery/manifest.d.ts +0 -35
  380. package/dist/delivery/manifest.d.ts.map +0 -1
  381. package/dist/delivery/manifest.js +0 -68
  382. package/dist/delivery/manifest.js.map +0 -1
  383. package/dist/deploy/index.d.ts +0 -6
  384. package/dist/deploy/index.d.ts.map +0 -1
  385. package/dist/deploy/index.js +0 -6
  386. package/dist/deploy/index.js.map +0 -1
  387. package/dist/dispatch/resumable.d.ts +0 -102
  388. package/dist/dispatch/resumable.d.ts.map +0 -1
  389. package/dist/dispatch/resumable.js +0 -64
  390. package/dist/dispatch/resumable.js.map +0 -1
  391. package/dist/dispatch/workflow.d.ts +0 -6
  392. package/dist/dispatch/workflow.d.ts.map +0 -1
  393. package/dist/dispatch/workflow.js +0 -37
  394. package/dist/dispatch/workflow.js.map +0 -1
  395. package/dist/domain/artifacts.d.ts +0 -12
  396. package/dist/domain/artifacts.d.ts.map +0 -1
  397. package/dist/domain/artifacts.js +0 -14
  398. package/dist/domain/artifacts.js.map +0 -1
  399. package/dist/domain/jobs.d.ts +0 -12
  400. package/dist/domain/jobs.d.ts.map +0 -1
  401. package/dist/domain/jobs.js +0 -20
  402. package/dist/domain/jobs.js.map +0 -1
  403. package/dist/domain/providers.d.ts +0 -10
  404. package/dist/domain/providers.d.ts.map +0 -1
  405. package/dist/domain/providers.js +0 -8
  406. package/dist/domain/providers.js.map +0 -1
  407. package/dist/domain/runtime.d.ts +0 -14
  408. package/dist/domain/runtime.d.ts.map +0 -1
  409. package/dist/domain/runtime.js +0 -10
  410. package/dist/domain/runtime.js.map +0 -1
  411. package/dist/domain/sessions.d.ts +0 -12
  412. package/dist/domain/sessions.d.ts.map +0 -1
  413. package/dist/domain/sessions.js +0 -57
  414. package/dist/domain/sessions.js.map +0 -1
  415. package/dist/examples/localjob.d.ts +0 -2
  416. package/dist/examples/localjob.d.ts.map +0 -1
  417. package/dist/examples/localjob.js.map +0 -1
  418. package/dist/examples/publicapi.d.ts +0 -2
  419. package/dist/examples/publicapi.d.ts.map +0 -1
  420. package/dist/examples/publicapi.js.map +0 -1
  421. package/dist/extension/build.d.ts +0 -9
  422. package/dist/extension/build.d.ts.map +0 -1
  423. package/dist/extension/build.js +0 -85
  424. package/dist/extension/build.js.map +0 -1
  425. package/dist/extension/content.d.ts +0 -6
  426. package/dist/extension/content.d.ts.map +0 -1
  427. package/dist/extension/content.js +0 -135
  428. package/dist/extension/content.js.map +0 -1
  429. package/dist/extension/index.d.ts +0 -7
  430. package/dist/extension/index.d.ts.map +0 -1
  431. package/dist/extension/index.js +0 -7
  432. package/dist/extension/index.js.map +0 -1
  433. package/dist/extension/pagebridge.d.ts +0 -6
  434. package/dist/extension/pagebridge.d.ts.map +0 -1
  435. package/dist/extension/pagebridge.js +0 -42
  436. package/dist/extension/pagebridge.js.map +0 -1
  437. package/dist/extension/permissions.d.ts +0 -26
  438. package/dist/extension/permissions.d.ts.map +0 -1
  439. package/dist/extension/permissions.js +0 -28
  440. package/dist/extension/permissions.js.map +0 -1
  441. package/dist/extension/popup.d.ts +0 -5
  442. package/dist/extension/popup.d.ts.map +0 -1
  443. package/dist/extension/popup.js +0 -26
  444. package/dist/extension/popup.js.map +0 -1
  445. package/dist/extension/protocol.d.ts +0 -58
  446. package/dist/extension/protocol.d.ts.map +0 -1
  447. package/dist/extension/protocol.js +0 -101
  448. package/dist/extension/protocol.js.map +0 -1
  449. package/dist/extension/serviceworker.d.ts +0 -25
  450. package/dist/extension/serviceworker.d.ts.map +0 -1
  451. package/dist/extension/serviceworker.js +0 -102
  452. package/dist/extension/serviceworker.js.map +0 -1
  453. package/dist/extension/worker.d.ts +0 -28
  454. package/dist/extension/worker.d.ts.map +0 -1
  455. package/dist/extension/worker.js +0 -22
  456. package/dist/extension/worker.js.map +0 -1
  457. package/dist/format/check.d.ts +0 -8
  458. package/dist/format/check.d.ts.map +0 -1
  459. package/dist/format/check.js +0 -38
  460. package/dist/format/check.js.map +0 -1
  461. package/dist/library/public.d.ts.map +0 -1
  462. package/dist/library/public.js.map +0 -1
  463. package/dist/mcp/browser.d.ts +0 -9
  464. package/dist/mcp/browser.d.ts.map +0 -1
  465. package/dist/mcp/browser.js +0 -13
  466. package/dist/mcp/browser.js.map +0 -1
  467. package/dist/mcp/server.d.ts +0 -35
  468. package/dist/mcp/server.d.ts.map +0 -1
  469. package/dist/mcp/server.js +0 -40
  470. package/dist/mcp/server.js.map +0 -1
  471. package/dist/mcp/transport.d.ts +0 -7
  472. package/dist/mcp/transport.d.ts.map +0 -1
  473. package/dist/mcp/transport.js +0 -17
  474. package/dist/mcp/transport.js.map +0 -1
  475. package/dist/memory/bridge.d.ts +0 -14
  476. package/dist/memory/bridge.d.ts.map +0 -1
  477. package/dist/memory/bridge.js +0 -16
  478. package/dist/memory/bridge.js.map +0 -1
  479. package/dist/memory/engine.d.ts +0 -38
  480. package/dist/memory/engine.d.ts.map +0 -1
  481. package/dist/memory/engine.js +0 -109
  482. package/dist/memory/engine.js.map +0 -1
  483. package/dist/memory/modes.d.ts +0 -43
  484. package/dist/memory/modes.d.ts.map +0 -1
  485. package/dist/memory/modes.js +0 -66
  486. package/dist/memory/modes.js.map +0 -1
  487. package/dist/memory/objects.d.ts +0 -21
  488. package/dist/memory/objects.d.ts.map +0 -1
  489. package/dist/memory/objects.js +0 -20
  490. package/dist/memory/objects.js.map +0 -1
  491. package/dist/memory/planner.d.ts +0 -66
  492. package/dist/memory/planner.d.ts.map +0 -1
  493. package/dist/memory/planner.js +0 -108
  494. package/dist/memory/planner.js.map +0 -1
  495. package/dist/memory/targets.d.ts +0 -78
  496. package/dist/memory/targets.d.ts.map +0 -1
  497. package/dist/memory/targets.js +0 -29
  498. package/dist/memory/targets.js.map +0 -1
  499. package/dist/memory/transforms.d.ts +0 -19
  500. package/dist/memory/transforms.d.ts.map +0 -1
  501. package/dist/memory/transforms.js +0 -14
  502. package/dist/memory/transforms.js.map +0 -1
  503. package/dist/modes/matrix.d.ts +0 -23
  504. package/dist/modes/matrix.d.ts.map +0 -1
  505. package/dist/modes/matrix.js +0 -18
  506. package/dist/modes/matrix.js.map +0 -1
  507. package/dist/modes/modes.d.ts +0 -33
  508. package/dist/modes/modes.d.ts.map +0 -1
  509. package/dist/modes/modes.js +0 -15
  510. package/dist/modes/modes.js.map +0 -1
  511. package/dist/modes/resolve.d.ts +0 -96
  512. package/dist/modes/resolve.d.ts.map +0 -1
  513. package/dist/modes/resolve.js +0 -48
  514. package/dist/modes/resolve.js.map +0 -1
  515. package/dist/observability/metrics.d.ts +0 -14
  516. package/dist/observability/metrics.d.ts.map +0 -1
  517. package/dist/observability/metrics.js +0 -18
  518. package/dist/observability/metrics.js.map +0 -1
  519. package/dist/packager/manifest.d.ts +0 -66
  520. package/dist/packager/manifest.d.ts.map +0 -1
  521. package/dist/packager/manifest.js +0 -94
  522. package/dist/packager/manifest.js.map +0 -1
  523. package/dist/packager/publish.d.ts +0 -51
  524. package/dist/packager/publish.d.ts.map +0 -1
  525. package/dist/packager/publish.js +0 -18
  526. package/dist/packager/publish.js.map +0 -1
  527. package/dist/packager/targetcli.d.ts +0 -7
  528. package/dist/packager/targetcli.d.ts.map +0 -1
  529. package/dist/packager/targetcli.js +0 -22
  530. package/dist/packager/targetcli.js.map +0 -1
  531. package/dist/persistence/adapter.d.ts +0 -5
  532. package/dist/persistence/adapter.d.ts.map +0 -1
  533. package/dist/persistence/adapter.js +0 -11
  534. package/dist/persistence/adapter.js.map +0 -1
  535. package/dist/persistence/drizzle.d.ts +0 -2
  536. package/dist/persistence/drizzle.d.ts.map +0 -1
  537. package/dist/persistence/drizzle.js +0 -12
  538. package/dist/persistence/drizzle.js.map +0 -1
  539. package/dist/persistence/memory.d.ts +0 -2
  540. package/dist/persistence/memory.d.ts.map +0 -1
  541. package/dist/persistence/memory.js +0 -27
  542. package/dist/persistence/memory.js.map +0 -1
  543. package/dist/persistence/migrations.d.ts +0 -19
  544. package/dist/persistence/migrations.d.ts.map +0 -1
  545. package/dist/persistence/migrations.js +0 -13
  546. package/dist/persistence/migrations.js.map +0 -1
  547. package/dist/persistence/prisma.d.ts +0 -2
  548. package/dist/persistence/prisma.d.ts.map +0 -1
  549. package/dist/persistence/prisma.js +0 -25
  550. package/dist/persistence/prisma.js.map +0 -1
  551. package/dist/persistence/schema.d.ts +0 -63
  552. package/dist/persistence/schema.d.ts.map +0 -1
  553. package/dist/persistence/schema.js +0 -28
  554. package/dist/persistence/schema.js.map +0 -1
  555. package/dist/persistence/sql.d.ts +0 -3
  556. package/dist/persistence/sql.d.ts.map +0 -1
  557. package/dist/persistence/sql.js +0 -37
  558. package/dist/persistence/sql.js.map +0 -1
  559. package/dist/protocol/blocks.d.ts +0 -10
  560. package/dist/protocol/blocks.d.ts.map +0 -1
  561. package/dist/protocol/blocks.js +0 -26
  562. package/dist/protocol/blocks.js.map +0 -1
  563. package/dist/protocol/json.d.ts +0 -6
  564. package/dist/protocol/json.d.ts.map +0 -1
  565. package/dist/protocol/json.js +0 -6
  566. package/dist/protocol/json.js.map +0 -1
  567. package/dist/protocol/ndjson.d.ts +0 -3
  568. package/dist/protocol/ndjson.d.ts.map +0 -1
  569. package/dist/protocol/ndjson.js +0 -20
  570. package/dist/protocol/ndjson.js.map +0 -1
  571. package/dist/protocol/sse.d.ts +0 -7
  572. package/dist/protocol/sse.d.ts.map +0 -1
  573. package/dist/protocol/sse.js +0 -25
  574. package/dist/protocol/sse.js.map +0 -1
  575. package/dist/proxy/pool.d.ts +0 -9
  576. package/dist/proxy/pool.d.ts.map +0 -1
  577. package/dist/proxy/pool.js +0 -27
  578. package/dist/proxy/pool.js.map +0 -1
  579. package/dist/queue/idempotency.d.ts +0 -10
  580. package/dist/queue/idempotency.d.ts.map +0 -1
  581. package/dist/queue/idempotency.js +0 -13
  582. package/dist/queue/idempotency.js.map +0 -1
  583. package/dist/queue/persistent.d.ts +0 -14
  584. package/dist/queue/persistent.d.ts.map +0 -1
  585. package/dist/queue/persistent.js +0 -66
  586. package/dist/queue/persistent.js.map +0 -1
  587. package/dist/queue/queue.d.ts +0 -7
  588. package/dist/queue/queue.d.ts.map +0 -1
  589. package/dist/queue/queue.js +0 -55
  590. package/dist/queue/queue.js.map +0 -1
  591. package/dist/queue/saga.d.ts +0 -5
  592. package/dist/queue/saga.d.ts.map +0 -1
  593. package/dist/queue/saga.js +0 -20
  594. package/dist/queue/saga.js.map +0 -1
  595. package/dist/release/assets.d.ts +0 -144
  596. package/dist/release/assets.d.ts.map +0 -1
  597. package/dist/release/assets.js +0 -157
  598. package/dist/release/assets.js.map +0 -1
  599. package/dist/release/evidence.d.ts +0 -92
  600. package/dist/release/evidence.d.ts.map +0 -1
  601. package/dist/release/evidence.js +0 -148
  602. package/dist/release/evidence.js.map +0 -1
  603. package/dist/release/verify.d.ts +0 -12
  604. package/dist/release/verify.d.ts.map +0 -1
  605. package/dist/release/verify.js +0 -112
  606. package/dist/release/verify.js.map +0 -1
  607. package/dist/runners/chain.d.ts +0 -125
  608. package/dist/runners/chain.d.ts.map +0 -1
  609. package/dist/runners/chain.js +0 -95
  610. package/dist/runners/chain.js.map +0 -1
  611. package/dist/runners/health.d.ts +0 -36
  612. package/dist/runners/health.d.ts.map +0 -1
  613. package/dist/runners/health.js +0 -26
  614. package/dist/runners/health.js.map +0 -1
  615. package/dist/runners/heartbeat.d.ts +0 -23
  616. package/dist/runners/heartbeat.d.ts.map +0 -1
  617. package/dist/runners/heartbeat.js +0 -29
  618. package/dist/runners/heartbeat.js.map +0 -1
  619. package/dist/runners/inprocess.d.ts +0 -17
  620. package/dist/runners/inprocess.d.ts.map +0 -1
  621. package/dist/runners/inprocess.js +0 -20
  622. package/dist/runners/inprocess.js.map +0 -1
  623. package/dist/runners/scheduler.d.ts +0 -5
  624. package/dist/runners/scheduler.d.ts.map +0 -1
  625. package/dist/runners/scheduler.js +0 -19
  626. package/dist/runners/scheduler.js.map +0 -1
  627. package/dist/runtime/abort.d.ts +0 -8
  628. package/dist/runtime/abort.d.ts.map +0 -1
  629. package/dist/runtime/abort.js +0 -13
  630. package/dist/runtime/abort.js.map +0 -1
  631. package/dist/runtime/compatibility.d.ts +0 -37
  632. package/dist/runtime/compatibility.d.ts.map +0 -1
  633. package/dist/runtime/compatibility.js +0 -10
  634. package/dist/runtime/compatibility.js.map +0 -1
  635. package/dist/runtime/detect.d.ts +0 -13
  636. package/dist/runtime/detect.d.ts.map +0 -1
  637. package/dist/runtime/detect.js +0 -18
  638. package/dist/runtime/detect.js.map +0 -1
  639. package/dist/runtime/engine.d.ts +0 -20
  640. package/dist/runtime/engine.d.ts.map +0 -1
  641. package/dist/runtime/engine.js +0 -61
  642. package/dist/runtime/engine.js.map +0 -1
  643. package/dist/runtime/retry.d.ts +0 -19
  644. package/dist/runtime/retry.d.ts.map +0 -1
  645. package/dist/runtime/retry.js +0 -54
  646. package/dist/runtime/retry.js.map +0 -1
  647. package/dist/runtime/worker.d.ts +0 -10
  648. package/dist/runtime/worker.d.ts.map +0 -1
  649. package/dist/runtime/worker.js +0 -25
  650. package/dist/runtime/worker.js.map +0 -1
  651. package/dist/scrape/cache.d.ts +0 -45
  652. package/dist/scrape/cache.d.ts.map +0 -1
  653. package/dist/scrape/cache.js +0 -45
  654. package/dist/scrape/cache.js.map +0 -1
  655. package/dist/scrape/crawl.d.ts +0 -47
  656. package/dist/scrape/crawl.d.ts.map +0 -1
  657. package/dist/scrape/crawl.js +0 -114
  658. package/dist/scrape/crawl.js.map +0 -1
  659. package/dist/scrape/extract.d.ts +0 -63
  660. package/dist/scrape/extract.d.ts.map +0 -1
  661. package/dist/scrape/extract.js +0 -47
  662. package/dist/scrape/extract.js.map +0 -1
  663. package/dist/scrape/normalize.d.ts +0 -52
  664. package/dist/scrape/normalize.d.ts.map +0 -1
  665. package/dist/scrape/normalize.js +0 -102
  666. package/dist/scrape/normalize.js.map +0 -1
  667. package/dist/scrape/robots.d.ts +0 -37
  668. package/dist/scrape/robots.d.ts.map +0 -1
  669. package/dist/scrape/robots.js +0 -71
  670. package/dist/scrape/robots.js.map +0 -1
  671. package/dist/scrape/schema.d.ts +0 -23
  672. package/dist/scrape/schema.d.ts.map +0 -1
  673. package/dist/scrape/schema.js +0 -92
  674. package/dist/scrape/schema.js.map +0 -1
  675. package/dist/scrape/scraper.d.ts +0 -6
  676. package/dist/scrape/scraper.d.ts.map +0 -1
  677. package/dist/scrape/scraper.js +0 -46
  678. package/dist/scrape/scraper.js.map +0 -1
  679. package/dist/scrape/semantic.d.ts +0 -25
  680. package/dist/scrape/semantic.d.ts.map +0 -1
  681. package/dist/scrape/semantic.js +0 -27
  682. package/dist/scrape/semantic.js.map +0 -1
  683. package/dist/server/node.d.ts +0 -7
  684. package/dist/server/node.d.ts.map +0 -1
  685. package/dist/server/node.js.map +0 -1
  686. package/dist/sessions/file.d.ts +0 -25
  687. package/dist/sessions/file.d.ts.map +0 -1
  688. package/dist/sessions/file.js +0 -13
  689. package/dist/sessions/file.js.map +0 -1
  690. package/dist/sessions/replay.d.ts +0 -9
  691. package/dist/sessions/replay.d.ts.map +0 -1
  692. package/dist/sessions/replay.js +0 -70
  693. package/dist/sessions/replay.js.map +0 -1
  694. package/dist/sessions/store.d.ts +0 -25
  695. package/dist/sessions/store.d.ts.map +0 -1
  696. package/dist/sessions/store.js +0 -13
  697. package/dist/sessions/store.js.map +0 -1
  698. package/dist/storage/adapter.d.ts +0 -5
  699. package/dist/storage/adapter.d.ts.map +0 -1
  700. package/dist/storage/adapter.js +0 -11
  701. package/dist/storage/adapter.js.map +0 -1
  702. package/dist/storage/cache.d.ts +0 -23
  703. package/dist/storage/cache.d.ts.map +0 -1
  704. package/dist/storage/cache.js +0 -79
  705. package/dist/storage/cache.js.map +0 -1
  706. package/dist/storage/checksum.d.ts +0 -3
  707. package/dist/storage/checksum.d.ts.map +0 -1
  708. package/dist/storage/checksum.js +0 -19
  709. package/dist/storage/checksum.js.map +0 -1
  710. package/dist/storage/chunked.d.ts +0 -21
  711. package/dist/storage/chunked.d.ts.map +0 -1
  712. package/dist/storage/chunked.js +0 -67
  713. package/dist/storage/chunked.js.map +0 -1
  714. package/dist/storage/content.d.ts +0 -24
  715. package/dist/storage/content.d.ts.map +0 -1
  716. package/dist/storage/content.js +0 -44
  717. package/dist/storage/content.js.map +0 -1
  718. package/dist/storage/filehosting.d.ts +0 -2
  719. package/dist/storage/filehosting.d.ts.map +0 -1
  720. package/dist/storage/filehosting.js +0 -24
  721. package/dist/storage/filehosting.js.map +0 -1
  722. package/dist/storage/githubcontents.d.ts +0 -2
  723. package/dist/storage/githubcontents.d.ts.map +0 -1
  724. package/dist/storage/githubcontents.js +0 -29
  725. package/dist/storage/githubcontents.js.map +0 -1
  726. package/dist/storage/index.d.ts +0 -12
  727. package/dist/storage/index.d.ts.map +0 -1
  728. package/dist/storage/index.js +0 -12
  729. package/dist/storage/index.js.map +0 -1
  730. package/dist/storage/local.d.ts +0 -2
  731. package/dist/storage/local.d.ts.map +0 -1
  732. package/dist/storage/local.js +0 -72
  733. package/dist/storage/local.js.map +0 -1
  734. package/dist/storage/memory.d.ts +0 -6
  735. package/dist/storage/memory.d.ts.map +0 -1
  736. package/dist/storage/memory.js +0 -36
  737. package/dist/storage/memory.js.map +0 -1
  738. package/dist/storage/pool.d.ts +0 -95
  739. package/dist/storage/pool.d.ts.map +0 -1
  740. package/dist/storage/pool.js +0 -202
  741. package/dist/storage/pool.js.map +0 -1
  742. package/dist/storage/s3compatible.d.ts +0 -3
  743. package/dist/storage/s3compatible.d.ts.map +0 -1
  744. package/dist/storage/s3compatible.js +0 -70
  745. package/dist/storage/s3compatible.js.map +0 -1
  746. package/dist/storage/sync.d.ts +0 -47
  747. package/dist/storage/sync.d.ts.map +0 -1
  748. package/dist/storage/sync.js +0 -75
  749. package/dist/storage/sync.js.map +0 -1
  750. package/dist/surfaces/adapters.d.ts +0 -97
  751. package/dist/surfaces/adapters.d.ts.map +0 -1
  752. package/dist/surfaces/adapters.js +0 -50
  753. package/dist/surfaces/adapters.js.map +0 -1
  754. package/dist/surfaces/controls.d.ts +0 -18
  755. package/dist/surfaces/controls.d.ts.map +0 -1
  756. package/dist/surfaces/controls.js +0 -45
  757. package/dist/surfaces/controls.js.map +0 -1
  758. package/dist/surfaces/manifest.d.ts +0 -68
  759. package/dist/surfaces/manifest.d.ts.map +0 -1
  760. package/dist/surfaces/manifest.js +0 -42
  761. package/dist/surfaces/manifest.js.map +0 -1
  762. package/dist/surfaces/n8n.d.ts +0 -25
  763. package/dist/surfaces/n8n.d.ts.map +0 -1
  764. package/dist/surfaces/n8n.js +0 -31
  765. package/dist/surfaces/n8n.js.map +0 -1
  766. package/dist/surfaces/operations.d.ts +0 -32
  767. package/dist/surfaces/operations.d.ts.map +0 -1
  768. package/dist/surfaces/operations.js +0 -53
  769. package/dist/surfaces/operations.js.map +0 -1
  770. package/dist/surfaces/requirements.d.ts +0 -29
  771. package/dist/surfaces/requirements.d.ts.map +0 -1
  772. package/dist/surfaces/requirements.js +0 -50
  773. package/dist/surfaces/requirements.js.map +0 -1
  774. package/dist/surfaces/targets.d.ts +0 -196
  775. package/dist/surfaces/targets.d.ts.map +0 -1
  776. package/dist/surfaces/targets.js +0 -27
  777. package/dist/surfaces/targets.js.map +0 -1
  778. package/dist/webhook/delivery.d.ts +0 -18
  779. package/dist/webhook/delivery.d.ts.map +0 -1
  780. package/dist/webhook/delivery.js +0 -36
  781. package/dist/webhook/delivery.js.map +0 -1
  782. package/dist/webhook/receiver.d.ts +0 -26
  783. package/dist/webhook/receiver.d.ts.map +0 -1
  784. package/dist/webhook/receiver.js +0 -24
  785. package/dist/webhook/receiver.js.map +0 -1
  786. package/dist/webhook/signature.d.ts +0 -3
  787. package/dist/webhook/signature.d.ts.map +0 -1
  788. package/dist/webhook/signature.js +0 -7
  789. package/dist/webhook/signature.js.map +0 -1
  790. package/dist/workflow/manifest.d.ts +0 -22
  791. package/dist/workflow/manifest.d.ts.map +0 -1
  792. package/dist/workflow/manifest.js +0 -21
  793. package/dist/workflow/manifest.js.map +0 -1
  794. package/dist/workflow/registry.d.ts +0 -7
  795. package/dist/workflow/registry.d.ts.map +0 -1
  796. package/dist/workflow/registry.js +0 -18
  797. package/dist/workflow/registry.js.map +0 -1
  798. package/dist/workflow/templates.d.ts +0 -6
  799. package/dist/workflow/templates.d.ts.map +0 -1
  800. package/dist/workflow/templates.js +0 -18
  801. package/dist/workflow/templates.js.map +0 -1
  802. package/dist/workflow/triggers.d.ts +0 -64
  803. package/dist/workflow/triggers.d.ts.map +0 -1
  804. package/dist/workflow/triggers.js +0 -99
  805. package/dist/workflow/triggers.js.map +0 -1
  806. package/docs/logs/.gitkeep +0 -0
  807. package/docs/plans/00.index.md +0 -50
  808. package/docs/plans/01.architecture.md +0 -86
  809. package/docs/plans/02.research.computer.use.md +0 -58
  810. package/docs/plans/03.research.captcha.bypass.md +0 -68
  811. package/docs/plans/04.research.sandbox.ai.md +0 -52
  812. package/docs/plans/05.capture.platform.md +0 -57
  813. package/docs/plans/06.dependencies.md +0 -97
  814. package/docs/plans/07.captcha.test.page.md +0 -41
  815. package/docs/plans/08.production.infra.md +0 -70
  816. package/docs/plans/09.database.schema.md +0 -121
  817. package/docs/plans/10.cloudinary.storage.md +0 -57
  818. package/docs/plans/11.movement.logs.json.md +0 -72
  819. package/docs/plans/12.research.atlas.agent.browser.md +0 -79
  820. package/docs/plans/13.research.anti.detection.md +0 -898
  821. package/docs/plans/14.research.proxy.md +0 -1495
  822. package/docs/plans/15.research.retry.rate.limit.md +0 -1958
  823. package/docs/plans/16.research.crawling.md +0 -1417
  824. package/docs/plans/17.research.caching.md +0 -1610
  825. package/docs/plans/18.research.content.extraction.md +0 -1952
  826. package/docs/plans/19.research.errors.events.md +0 -1523
  827. package/docs/plans/20.research.zod.validation.md +0 -1350
  828. package/docs/plans/21.research.batch.concurrency.md +0 -1888
  829. package/docs/plans/22.research.universal.runtime.md +0 -944
  830. package/docs/plans/23.research.ai.integration.md +0 -1465
  831. package/docs/plans/24.research.memory.persistence.md +0 -1979
  832. package/docs/plans/25.research.server.api.md +0 -342
  833. package/docs/plans/26.research.compilation.md +0 -249
  834. package/docs/plans/27.research.html.parsing.md +0 -251
  835. package/docs/plans/28.action.plan.md +0 -50
  836. package/docs/plans/29.api.reference.md +0 -174
  837. package/docs/plans/30.architecture.plan.md +0 -94
  838. package/docs/plans/31.auditoria.dados.md +0 -163
  839. package/docs/plans/32.bots.automacao.computacional.md +0 -214
  840. package/docs/plans/33.bots.codigo.revisao.md +0 -220
  841. package/docs/plans/34.bots.seguranca.cicd.md +0 -366
  842. package/docs/plans/35.comparativo.concorrencia.md +0 -464
  843. package/docs/plans/36.computational.memory.md +0 -340
  844. package/docs/plans/37.deploystrategy.md +0 -394
  845. package/docs/plans/38.flow.md +0 -155
  846. package/docs/plans/39.multi.platform.bot.md +0 -252
  847. package/docs/plans/40.npm.publish.md +0 -250
  848. package/docs/plans/41.o.que.falta.md +0 -407
  849. package/docs/plans/42.pesquisa.concorrencia.md +0 -721
  850. package/docs/plans/43.plan.universal.architecture.md +0 -496
  851. package/docs/plans/44.reference.md +0 -100
  852. package/docs/plans/45.robotarchitecture.md +0 -237
  853. package/docs/plans/46.scdnintegration.md +0 -284
  854. package/docs/plans/47.multiforge.readme.md +0 -129
  855. package/docs/plans/48.theory.v4.repo.os.md +0 -152
  856. package/docs/plans/49.third.party.infra.md +0 -12
  857. package/docs/plans/50.file.as.compute.md +0 -39
  858. package/docs/plans/51.architecture.virtual.processor.md +0 -80
  859. package/docs/plans/52.manifesto.v8.md +0 -11
  860. package/docs/plans/58.cdn.list.md +0 -23
  861. package/docs/plans/59.sql.frameworks.md +0 -33
  862. package/docs/plans/60.sql.thirdparty.md +0 -26
  863. package/docs/plans/61.objective.multiforge.md +0 -63
  864. package/docs/plans/62.huggingface.upload.md +0 -26
  865. package/docs/plans/63.kaggle.upload.md +0 -24
  866. package/docs/plans/64.npm.storage.md +0 -30
  867. package/docs/plans/65.rclone.terabox.md +0 -32
  868. package/docs/plans/66.buckets.and.models.todo.md +0 -14
  869. package/docs/plans/67.database.todo.md +0 -13
  870. package/docs/plans/68.deploy.packages.todo.md +0 -12
  871. package/docs/plans/69.report.human.operator.md +0 -133
  872. package/docs/plans/70.report.brain2qwerty.ems.md +0 -135
  873. package/docs/plans/71.report.hd.infinito.vram.md +0 -155
  874. package/docs/plans/72.plan.hd.infinito.node.md +0 -146
  875. package/docs/plans/73.plan.scifi.repos.md +0 -125
  876. package/docs/plans/74.000.manifesto.v8.flat.2..md +0 -11
  877. package/docs/plans/README.md +0 -489
  878. package/docs/plans/aggregate_platforms.mjs +0 -146
  879. package/docs/plans/examplesession.json +0 -36
  880. package/docs/plans/missing-facts.md +0 -192
  881. package/docs/plans/models.md +0 -64
  882. package/docs/plans/organize.cjs +0 -270
  883. package/docs/plans/platforms.md +0 -2887
  884. package/docs/plans/sites.md +0 -31322
  885. package/docs/sources/farm.py +0 -117
  886. package/docs/sources/html/saddle1.html +0 -132
  887. package/docs/sources/html/saddle2.html +0 -157
  888. package/docs/sources/html/saddle3.html +0 -119
  889. package/docs/sources/html/saddle4.html +0 -144
  890. package/docs/sources/html/saddle5.html +0 -72
  891. package/docs/sources/html/saddle6.html +0 -171
  892. package/docs/sources/html/saddle7.html +0 -236
  893. package/docs/sources/saddle.ts +0 -74
  894. package/docs/sources/schema.prisma +0 -88
  895. package/docs/sources/script.sh +0 -64
  896. package/docs/sources/workflows.yml +0 -458
  897. package/docs/talks1/_body.txt +0 -14
  898. package/docs/talks1/_index.md +0 -15
  899. package/docs/talks1/_screenshot.png +0 -0
  900. package/docs/talks1/assistant-01.md +0 -5
  901. package/docs/talks1/assistant-02.md +0 -5
  902. package/docs/talks1/assistant-03.md +0 -531
  903. package/docs/talks1/assistant-04.md +0 -26
  904. package/docs/talks1/assistant-05.md +0 -774
  905. package/docs/talks1/assistant-06.md +0 -1718
  906. package/docs/talks1/scrape-share.cjs +0 -185
  907. package/docs/talks1/scrape-share.ts +0 -183
  908. package/docs/talks1/user-01.md +0 -3
  909. package/docs/talks1/user-02.md +0 -3
  910. package/docs/talks1/user-03.md +0 -88
  911. package/docs/talks1/user-04.md +0 -3
  912. package/docs/talks1/user-05.md +0 -3
  913. package/docs/talks1/user-06.md +0 -88
  914. package/docs/talks1/user-07.md +0 -88
  915. package/docs/talks2/_body.txt +0 -14
  916. package/docs/talks2/_index.md +0 -16
  917. package/docs/talks2/_screenshot.png +0 -0
  918. package/docs/talks2/assistant-01.md +0 -5
  919. package/docs/talks2/assistant-02.md +0 -5
  920. package/docs/talks2/assistant-03.md +0 -424
  921. package/docs/talks2/assistant-04.md +0 -598
  922. package/docs/talks2/assistant-05.md +0 -1280
  923. package/docs/talks2/assistant-06.md +0 -1227
  924. package/docs/talks2/assistant-07.md +0 -1252
  925. package/docs/talks2/user-01.md +0 -3
  926. package/docs/talks2/user-02.md +0 -3
  927. package/docs/talks2/user-03.md +0 -88
  928. package/docs/talks2/user-04.md +0 -88
  929. package/docs/talks2/user-05.md +0 -88
  930. package/docs/talks2/user-06.md +0 -88
  931. package/docs/talks2/user-07.md +0 -3
  932. package/docs/talks3/_body.txt +0 -467
  933. package/docs/talks3/_index.md +0 -10
  934. package/docs/talks3/_screenshot.png +0 -0
  935. package/docs/talks3/assistant-01.md +0 -417
  936. package/docs/talks3/assistant-02.md +0 -417
  937. package/docs/talks3/assistant-03.md +0 -29
  938. package/docs/talks3/assistant-04.md +0 -727
  939. package/docs/talks3/user-01.md +0 -88
  940. package/docs/talks3/user-02.md +0 -88
  941. package/docs/talks3/user-03.md +0 -3
  942. package/docs/talks3/user-04.md +0 -3
  943. package/docs/talks4/_body.txt +0 -14
  944. package/docs/talks4/_index.md +0 -12
  945. package/docs/talks4/_screenshot.png +0 -0
  946. package/docs/talks4/assistant-01.md +0 -5
  947. package/docs/talks4/assistant-02.md +0 -5
  948. package/docs/talks4/assistant-03.md +0 -35
  949. package/docs/talks4/assistant-04.md +0 -512
  950. package/docs/talks4/assistant-05.md +0 -599
  951. package/docs/talks4/user-01.md +0 -3
  952. package/docs/talks4/user-02.md +0 -3
  953. package/docs/talks4/user-03.md +0 -88
  954. package/docs/talks4/user-04.md +0 -88
  955. package/docs/talks4/user-05.md +0 -7
  956. package/docs/talks5/_body.txt +0 -14
  957. package/docs/talks5/_index.md +0 -13
  958. package/docs/talks5/_screenshot.png +0 -0
  959. package/docs/talks5/assistant-01.md +0 -5
  960. package/docs/talks5/assistant-02.md +0 -5
  961. package/docs/talks5/assistant-03.md +0 -690
  962. package/docs/talks5/assistant-04.md +0 -758
  963. package/docs/talks5/assistant-05.md +0 -974
  964. package/docs/talks5/user-01.md +0 -3
  965. package/docs/talks5/user-02.md +0 -3
  966. package/docs/talks5/user-03.md +0 -105
  967. package/docs/talks5/user-04.md +0 -105
  968. package/docs/talks5/user-05.md +0 -63
  969. package/docs/talks5/user-06.md +0 -105
  970. package/docs/talks6/_body.txt +0 -14
  971. package/docs/talks6/_index.md +0 -9
  972. package/docs/talks6/_screenshot.png +0 -0
  973. package/docs/talks6/assistant-01.md +0 -5
  974. package/docs/talks6/assistant-02.md +0 -5
  975. package/docs/talks6/assistant-03.md +0 -1499
  976. package/docs/talks6/user-01.md +0 -3
  977. package/docs/talks6/user-02.md +0 -3
  978. package/docs/talks6/user-03.md +0 -88
  979. package/docs/talks6/user-04.md +0 -88
  980. package/docs/talks7/_body.txt +0 -14
  981. package/docs/talks7/_index.md +0 -10
  982. package/docs/talks7/_screenshot.png +0 -0
  983. package/docs/talks7/assistant-01.md +0 -5
  984. package/docs/talks7/assistant-02.md +0 -5
  985. package/docs/talks7/assistant-03.md +0 -523
  986. package/docs/talks7/assistant-04.md +0 -617
  987. package/docs/talks7/user-01.md +0 -3
  988. package/docs/talks7/user-02.md +0 -3
  989. package/docs/talks7/user-03.md +0 -105
  990. package/docs/talks7/user-04.md +0 -67
  991. package/docs/talks8/conversa1.txt +0 -1322
  992. package/docs/talks8/conversa2.txt +0 -237
  993. package/docs/talks9/Beyond the Obvious_ 50 Plataformas Auto-Hospedadas de Forja de C/303/263digo para Al/303/251m de Gitea e GitLab.md" +0 -174
  994. package/docs/talks9/De NPM a Multi-Linguagem_ Uma Arquitetura T/303/251cnica para a Execu/303/247/303/243o Integrada de C/303/263digo no Ecossistema Node.js.md" +0 -59
  995. package/docs/talks9/De NPM a VMs Virtuais_ Uma An/303/241lise Arquitet/303/264nica para a Realiza/303/247/303/243o do Ciclo de Vida do Projeto SADDLE.md" +0 -91
  996. package/docs/talks9/Mapeamento da Engrenagem Computacional_ Uma Arquitetura para Execu/303/247/303/243o Isolada e Persist/303/252ncia em Ambientes Distribu/303/255dos.md" +0 -116
  997. package/docs/talks9/O Cen/303/241rio Pr/303/241tico do SADDLE_ Uma An/303/241lise de Viabilidade e Modelo de Ciclo de Vida Integrado.md" +0 -128
  998. package/docs/talks9/README (2).md +0 -489
  999. package/docs/talks9/README.md +0 -198
  1000. package/docs/talks9/Viabilidade do Saddle_ Uma An/303/241lise T/303/251cnica da Transforma/303/247/303/243o de Armazenamento Remoto em Mem/303/263ria Computacional.md" +0 -80
  1001. package/docs/talks9/conversa.txt +0 -544
  1002. package/docs/talks9/other (2).md +0 -39
  1003. package/docs/talks9/other.md +0 -57
  1004. package/docs/talks9/outro.txt +0 -24
  1005. /package/{extension/README.md → docs/extension.md} +0 -0
package/passage.config ADDED
@@ -0,0 +1,1331 @@
1
+ {
2
+ "meta": {
3
+ "name": "passage.config",
4
+ "title": "saddle - Passage Configuration (3 homonym domains kept separate + host playbook)",
5
+ "version": "2.0.0",
6
+ "date": "2026-08-22",
7
+ "language": "en",
8
+ "conceptSeparation": "'passage' has 3 distinct domains in the pool: (1) gateway - L7 Pingora reverse proxy (routes/upstreams/TLS 1.3); (2) passthrough - PCI device passthrough modes (VFIO/MDEV/MIG/vGPU/SR-IOV/vfio-user/hotplug/KVM/none); (3) network_binding - VM network bridge modes + host port binding (never localhost). A 4th section carries the AetherForge host-side VFIO playbook. Sections are NEVER merged.",
9
+ "sources": [
10
+ "pool:passage.config [S6 YAML - L7 gateway pingora, UNIQUE]",
11
+ "pool:passage.json [V5 - passthrough matrix, UNIQUE]",
12
+ "pool:nested_passage.json [network_binding never-localhost, UNIQUE]",
13
+ "pool:passage.yaml [AetherForge host playbook VFIO, UNIQUE]",
14
+ "cross-ref: gpus.json#gpu_profiles_vfio (11 GPUs vfioIds)"
15
+ ],
16
+ "mergeReport": {
17
+ "gatewayRoutes": 7,
18
+ "gatewayUpstreams": [
19
+ "vmprimary",
20
+ "mttgworkers",
21
+ "gpumetrics",
22
+ "hyperscalepool"
23
+ ],
24
+ "passthroughModesOverview": 8,
25
+ "passthroughSections": [
26
+ "vfio",
27
+ "mdev",
28
+ "mig",
29
+ "vgpu",
30
+ "sriov",
31
+ "vfio_user",
32
+ "hotplug",
33
+ "kvm",
34
+ "none_mode",
35
+ "decision_matrix"
36
+ ],
37
+ "networkModesRef": "6 modes (direct/bridge/nat/overlay_vxlan/zero_trust/latency_optimization) canonical in vm.config.json#production_example.vm.network.passage.modes",
38
+ "vfioIdsGpus": 10,
39
+ "rePins": "node 22.12.3->24.19.0 LTS/26.7.0, ts 5.6.3->7.0.2, docker 27.3.1->29.7.2, qemu 9.1.2->11.1.0",
40
+ "pinPatch": "embedded active config values re-pinned date-first 2026-08-22 (9.1.2->11.1.0, 27.3.1->29.7.2, 22.12.3->24.19.0, 5.6.3->7.0.2, 25.2.7->26.2.1, 19.1.7->22.1.8, 1.9.0->1.16.1, libvirt 10.10.0->12.5.0, checkout v4.2.2->v5); originals preserved under *_legacy*/source_value keys"
41
+ },
42
+ "inheritedSourcesPassthroughJson": [
43
+ "https://docs.kernel.org/driver-api/vfio.html",
44
+ "https://docs.kernel.org/driver-api/vfio-mediated-device.html",
45
+ "https://docs.nvidia.com/data-center/tesla/mig-user-guide/",
46
+ "https://www.cloudhypervisor.org",
47
+ "https://raw.githubusercontent.com/cloud-hypervisor/cloud-hypervisor/main/docs/vfio-user.md",
48
+ "https://github.com/cloud-hypervisor/cloud-hypervisor/releases",
49
+ "https://www.qemu.org/docs/master/system/device-emulation.html",
50
+ "https://github.com/actions/runner-images/issues/12933",
51
+ "https://github.com/actions/runner-images/issues/14062",
52
+ "https://actuated.com/blog/kvm-in-github-actions",
53
+ "https://github.com/e2b-dev/infra/blob/main/self-host.md"
54
+ ]
55
+ },
56
+ "gateway": {
57
+ "meta": {
58
+ "project": "saddle (grand merge)",
59
+ "version": "2.0.0",
60
+ "schema": "passage.config",
61
+ "schemaversion": "2026.08.22",
62
+ "engine": "passage gateway v6",
63
+ "runtime": {
64
+ "node": "24.19.0 LTS (current 26.7.0)",
65
+ "typescript": "7.0.2",
66
+ "python": "3.14.7",
67
+ "rust": "1.82.0",
68
+ "pingora": "0.4.2",
69
+ "docker": "29.7.2",
70
+ "qemu": "11.1.0",
71
+ "rePinNote": "legacy saddle-v6 pins (node 22.12.3, ts 5.6.3, docker 27.3.1, qemu 9.1.2) superseded date-first 2026-08-22; pingora/rust gateway pins kept"
72
+ },
73
+ "cicd": {
74
+ "checkout": "v5",
75
+ "setupnode": "v4.1.0",
76
+ "setuppython": "v5.4.0",
77
+ "setuprust": "v1.0.0",
78
+ "dockerbuildx": "v3.7.1"
79
+ },
80
+ "generated": "2026-08-22T00:00:00+00:00",
81
+ "compatibility": [
82
+ "vm.config",
83
+ "gpu.config",
84
+ "qemu.config",
85
+ "mttg.config",
86
+ "docker.config",
87
+ "boards.json",
88
+ "cores.json",
89
+ "processors.json",
90
+ "gpus.json",
91
+ "vcpus.json",
92
+ "vram.json",
93
+ "amdryzenxseries.json",
94
+ "nvidiablackwell.json"
95
+ ],
96
+ "mode": "root-direct",
97
+ "layers": 3,
98
+ "maxfilesize": 45,
99
+ "docsquality": "high",
100
+ "legacyRuntimeSaddleV6": {
101
+ "node": "22.12.3",
102
+ "typescript": "5.6.3",
103
+ "python": "3.14.7",
104
+ "rust": "1.82.0",
105
+ "pingora": "0.4.2",
106
+ "docker": "27.3.1",
107
+ "qemu": "9.1.2"
108
+ }
109
+ },
110
+ "passage": {
111
+ "bind": {
112
+ "address": "0.0.0.0",
113
+ "httpport": 8080,
114
+ "httpsport": 8443,
115
+ "adminport": 9091,
116
+ "metricsport": 9090
117
+ },
118
+ "protocol": {
119
+ "http2": true,
120
+ "http3": true,
121
+ "quic": true,
122
+ "tls": {
123
+ "minversion": "TLS1.3",
124
+ "maxversion": "TLS1.3",
125
+ "only": true,
126
+ "ciphersuites": [
127
+ "TLS_AES_128_GCM_SHA256",
128
+ "TLS_AES_256_GCM_SHA384",
129
+ "TLS_CHACHA20_POLY1305_SHA256"
130
+ ],
131
+ "curves": [
132
+ "X25519",
133
+ "P-256",
134
+ "P-384"
135
+ ],
136
+ "alpn": [
137
+ "h2",
138
+ "h3",
139
+ "http/1.1"
140
+ ]
141
+ }
142
+ },
143
+ "runtime": {
144
+ "workermodel": "pingora",
145
+ "workertthreads": "auto",
146
+ "nodemain": "pipelinememorypassage.ts",
147
+ "implementation": "coreorchestrator.ts",
148
+ "nativepriority": [
149
+ "node:fs",
150
+ "node:http",
151
+ "node:https",
152
+ "node:crypto",
153
+ "node:path",
154
+ "node:os",
155
+ "node:net"
156
+ ]
157
+ },
158
+ "limits": {
159
+ "maxconnections": 131072,
160
+ "maxrequestsize": "50GiB",
161
+ "keepalive": "75s",
162
+ "readtimeout": "30s",
163
+ "writetimeout": "30s"
164
+ },
165
+ "logging": {
166
+ "level": "info",
167
+ "acceslog": "/var/log/saddle/passage/access.log",
168
+ "errorlog": "/var/log/saddle/passage/error.log",
169
+ "requestidheader": "x-saddle-request-id",
170
+ "format": "json"
171
+ },
172
+ "errorcatcher": {
173
+ "enabled": true,
174
+ "endpoint": "/_passage/error",
175
+ "uisize": "44px",
176
+ "fallbackpage": "/usr/share/saddle/static/error44.html",
177
+ "jsonerror": true,
178
+ "catchall": [
179
+ 502,
180
+ 503,
181
+ 504,
182
+ 413,
183
+ 429
184
+ ]
185
+ }
186
+ },
187
+ "upstreams": {
188
+ "vmprimary": {
189
+ "id": "vmprimary",
190
+ "description": "Primary QEMU 11.1.0 VM pool, AMD Ryzen X Series, 1..1024 vCPU modular",
191
+ "type": "qemuvm",
192
+ "discovery": "static",
193
+ "engine": "qemu 11.1.0 + kvm",
194
+ "nodes": "/mnt/data/saddle-v6/boards.json",
195
+ "endpoints": [
196
+ {
197
+ "address": "127.0.0.1",
198
+ "port": 22,
199
+ "weight": 100,
200
+ "meta": {
201
+ "vcpu": 32,
202
+ "rammb": 65536,
203
+ "role": "primary",
204
+ "arch": "amdryzenxseries",
205
+ "qemu": "11.1.0"
206
+ }
207
+ },
208
+ {
209
+ "address": "10.88.0.2",
210
+ "port": 2222,
211
+ "weight": 100,
212
+ "meta": {
213
+ "vcpu": 137,
214
+ "rammb": 7919,
215
+ "role": "oddcustom",
216
+ "board": "x3d",
217
+ "notes": "modular unlimited"
218
+ }
219
+ },
220
+ {
221
+ "address": "10.88.0.3",
222
+ "port": 2222,
223
+ "weight": 120,
224
+ "meta": {
225
+ "vcpu": 64,
226
+ "rammb": 131072,
227
+ "role": "secondary",
228
+ "arch": "xseries"
229
+ }
230
+ }
231
+ ],
232
+ "healthcheck": {
233
+ "path": "/healthz",
234
+ "interval": "5s",
235
+ "timeout": "2s",
236
+ "healthythreshold": 2,
237
+ "unhealthythreshold": 3,
238
+ "expected": 200,
239
+ "protocol": "https",
240
+ "tls": "TLS1.3"
241
+ }
242
+ },
243
+ "mttgworkers": {
244
+ "id": "mttgworkers",
245
+ "description": "MTTG transcode workers, ffmpeg 7.1, nvenc Blackwell GB200 B200",
246
+ "type": "transcode",
247
+ "discovery": "dns",
248
+ "dnsname": "mttgworkers.saddle.internal",
249
+ "engine": "ffmpeg 7.1 + cuda 12.8 + python 3.14.7",
250
+ "configref": "mttg.config",
251
+ "endpoints": [
252
+ {
253
+ "address": "10.88.0.10",
254
+ "port": 9000,
255
+ "weight": 200,
256
+ "meta": {
257
+ "vcpu": 64,
258
+ "rammb": 131072,
259
+ "gpu": "b200sxm",
260
+ "vrammb": 196608,
261
+ "sku": "nvidia-blackwell-b200",
262
+ "pipeline": "mttg"
263
+ }
264
+ },
265
+ {
266
+ "address": "10.88.0.11",
267
+ "port": 9000,
268
+ "weight": 250,
269
+ "meta": {
270
+ "vcpu": 192,
271
+ "rammb": 262144,
272
+ "gpu": "gb200",
273
+ "vrammb": 393216,
274
+ "sku": "nvidia-blackwell-gb200",
275
+ "pipeline": "mttg",
276
+ "nvlink": true
277
+ }
278
+ },
279
+ {
280
+ "address": "10.88.0.12",
281
+ "port": 9000,
282
+ "weight": 80,
283
+ "meta": {
284
+ "vcpu": 16,
285
+ "rammb": 32768,
286
+ "gpu": "b100",
287
+ "vrammb": 98304,
288
+ "sku": "nvidia-blackwell-b100"
289
+ }
290
+ }
291
+ ],
292
+ "healthcheck": {
293
+ "path": "/mttg/health",
294
+ "interval": "10s",
295
+ "timeout": "3s",
296
+ "grpc": true,
297
+ "expected": 200
298
+ },
299
+ "autoscale": {
300
+ "min": 2,
301
+ "max": 64,
302
+ "metric": "queuelen",
303
+ "threshold": 20
304
+ }
305
+ },
306
+ "gpumetrics": {
307
+ "id": "gpumetrics",
308
+ "description": "GPU telemetry, DCGM, Blackwell power memory, 44px dashboard",
309
+ "type": "metrics",
310
+ "discovery": "static",
311
+ "configref": "gpu.config",
312
+ "databaseref": "gpus.json",
313
+ "vramref": "vram.json",
314
+ "engine": "dcgm 3.3 + prometheus",
315
+ "endpoints": [
316
+ {
317
+ "address": "127.0.0.1",
318
+ "port": 9400,
319
+ "weight": 100,
320
+ "meta": {
321
+ "role": "dcgm",
322
+ "gpus": "nvidiablackwell",
323
+ "arch": "blackwell",
324
+ "vram": "2-4tbhost"
325
+ }
326
+ }
327
+ ],
328
+ "healthcheck": {
329
+ "path": "/metrics",
330
+ "interval": "15s",
331
+ "timeout": "5s",
332
+ "expected": 200
333
+ }
334
+ },
335
+ "hyperscalepool": {
336
+ "id": "hyperscalepool",
337
+ "description": "Hyperscale extreme 1024 vCPU 2-4TB RAM nodes for memory bound jobs",
338
+ "type": "compute",
339
+ "discovery": "static",
340
+ "engine": "qemu 11.1.0 + numa + hugepages",
341
+ "numa": true,
342
+ "hugepages": "1GiB",
343
+ "endpoints": [
344
+ {
345
+ "address": "10.88.1.2",
346
+ "port": 8080,
347
+ "weight": 100,
348
+ "meta": {
349
+ "vcpu": 1024,
350
+ "rammb": 2097152,
351
+ "ram": "2TB",
352
+ "tier": "hyperscale",
353
+ "note": "1024 vCPU / 2048GB RAM, observer sees massive host, 2TB minimal",
354
+ "coresref": "cores.json",
355
+ "vcpusref": "vcpus.json",
356
+ "processorsref": "processors.json"
357
+ }
358
+ },
359
+ {
360
+ "address": "10.88.1.3",
361
+ "port": 8080,
362
+ "weight": 100,
363
+ "meta": {
364
+ "vcpu": 1024,
365
+ "rammb": 4194304,
366
+ "ram": "4TB",
367
+ "tier": "hyperscale",
368
+ "note": "1024 vCPU / 4096GB RAM SADDLE max 4TB, edge for transcode cache"
369
+ }
370
+ },
371
+ {
372
+ "address": "10.88.1.4",
373
+ "port": 8080,
374
+ "weight": 90,
375
+ "meta": {
376
+ "vcpu": 1024,
377
+ "rammb": 3145728,
378
+ "ram": "3TB",
379
+ "tier": "hyperscale",
380
+ "note": "1024 vCPU / 3072GB RAM mid tier, blackwell weighted"
381
+ }
382
+ }
383
+ ],
384
+ "healthcheck": {
385
+ "path": "/hyperscale/healthz",
386
+ "interval": "10s",
387
+ "timeout": "5s",
388
+ "healthythreshold": 2,
389
+ "unhealthythreshold": 2,
390
+ "expected": 200
391
+ }
392
+ }
393
+ },
394
+ "routes": [
395
+ {
396
+ "id": "apiv5transcode",
397
+ "match": {
398
+ "pathprefix": "/api/v5/transcode",
399
+ "methods": [
400
+ "GET",
401
+ "POST",
402
+ "PUT",
403
+ "PATCH"
404
+ ],
405
+ "headers": {
406
+ "xmttgpipeline": "present"
407
+ }
408
+ },
409
+ "upstream": "mttgworkers",
410
+ "loadbalancing": "leastconn",
411
+ "description": "MTTG transcode submit, long lived, least connections best",
412
+ "timeout": "3600s",
413
+ "bodylimit": "50GiB",
414
+ "retries": 2,
415
+ "priority": 10,
416
+ "circuitbreaker": {
417
+ "maxconnections": 256,
418
+ "maxpending": 2048,
419
+ "maxretries": 3,
420
+ "ejection": {
421
+ "consecutive5xx": 5,
422
+ "interval": "30s",
423
+ "base": "30s",
424
+ "maxejection": 50
425
+ }
426
+ },
427
+ "headers": {
428
+ "add": {
429
+ "xsaddlegateway": "passage-v6",
430
+ "xsaddlevcpumode": "modular-unlimited-1024",
431
+ "xblackwell": "enabled",
432
+ "xpingora": "0.4.2",
433
+ "xnode": "24.19.0"
434
+ }
435
+ },
436
+ "ratelimit": {
437
+ "rps": 2000,
438
+ "burst": 4000,
439
+ "key": "ip"
440
+ }
441
+ },
442
+ {
443
+ "id": "hlsedge",
444
+ "match": {
445
+ "pathprefix": "/hls/",
446
+ "methods": [
447
+ "GET",
448
+ "HEAD",
449
+ "OPTIONS"
450
+ ],
451
+ "query": {
452
+ "segment": "present"
453
+ }
454
+ },
455
+ "upstream": "mttgworkers",
456
+ "loadbalancing": "poweroftwochoices",
457
+ "description": "HLS segments edge cache, p2c picks two random least loaded",
458
+ "timeout": "5s",
459
+ "bodylimit": "10MiB",
460
+ "priority": 20,
461
+ "caching": {
462
+ "enabled": true,
463
+ "type": "edge",
464
+ "ttl": "60s",
465
+ "swr": "30s",
466
+ "maxfilesize": "10MiB",
467
+ "cachecontrol": "public, max-age=2, stale-while-revalidate=30",
468
+ "key": [
469
+ "uri",
470
+ "query",
471
+ "header-accept"
472
+ ],
473
+ "storage": "/var/cache/saddle/hls",
474
+ "sizelimit": "500GiB",
475
+ "tiers": 2
476
+ },
477
+ "headers": {
478
+ "add": {
479
+ "xsaddlecache": "edge-p2c",
480
+ "cachecontrol": "public"
481
+ }
482
+ },
483
+ "compression": {
484
+ "enabled": true,
485
+ "types": [
486
+ "application/vnd.apple.mpegurl",
487
+ "video/mp2t"
488
+ ]
489
+ }
490
+ },
491
+ {
492
+ "id": "apiv5root",
493
+ "match": {
494
+ "pathprefix": "/api/v5/",
495
+ "methods": [
496
+ "GET",
497
+ "POST",
498
+ "PUT",
499
+ "DELETE",
500
+ "PATCH"
501
+ ]
502
+ },
503
+ "upstream": "vmprimary",
504
+ "loadbalancing": "roundrobin",
505
+ "description": "Root API round robin fair distribution stateless",
506
+ "timeout": "30s",
507
+ "retries": 2,
508
+ "headers": {
509
+ "add": {
510
+ "xsaddlegateway": "passage-v6",
511
+ "xsaddlemodes": 30
512
+ }
513
+ },
514
+ "ratelimit": {
515
+ "rps": 5000,
516
+ "burst": 10000
517
+ }
518
+ },
519
+ {
520
+ "id": "hyperscalecompute",
521
+ "match": {
522
+ "pathprefix": "/api/v6/hyperscale/",
523
+ "headers": {
524
+ "xsaddletier": "hyperscale"
525
+ },
526
+ "methods": [
527
+ "GET",
528
+ "POST"
529
+ ]
530
+ },
531
+ "upstream": "hyperscalepool",
532
+ "loadbalancing": "weighted",
533
+ "description": "Hyperscale tier weighted by RAM and Blackwell VRAM",
534
+ "timeout": "600s",
535
+ "retries": 1,
536
+ "headers": {
537
+ "add": {
538
+ "xsaddlehyperscale": "1024vcpu-2-4tb",
539
+ "xblackwell": "weighted"
540
+ }
541
+ },
542
+ "bodylimit": "10GiB"
543
+ },
544
+ {
545
+ "id": "gpudashboard",
546
+ "match": {
547
+ "pathprefix": "/gpu/",
548
+ "methods": [
549
+ "GET"
550
+ ]
551
+ },
552
+ "upstream": "gpumetrics",
553
+ "loadbalancing": "ringhash",
554
+ "description": "GPU metrics dashboard, ringhash ip hash for affinity",
555
+ "timeout": "15s",
556
+ "auth": "apikey",
557
+ "headers": {
558
+ "add": {
559
+ "xsaddlegpuarch": "blackwell",
560
+ "xryzenx": "enabled",
561
+ "xpingora": "0.4.2"
562
+ }
563
+ }
564
+ },
565
+ {
566
+ "id": "vmsstunnel",
567
+ "match": {
568
+ "pathprefix": "/ssh/",
569
+ "upgrade": "websocket"
570
+ },
571
+ "upstream": "vmprimary",
572
+ "loadbalancing": "ringhash",
573
+ "description": "VM SSH over websocket, ip hash affinity",
574
+ "timeout": "300s",
575
+ "headers": {
576
+ "add": {
577
+ "xsaddlepassage": "vsock-virtio"
578
+ }
579
+ }
580
+ },
581
+ {
582
+ "id": "errorcatcher",
583
+ "match": {
584
+ "pathprefix": "/_passage/error",
585
+ "methods": [
586
+ "GET"
587
+ ]
588
+ },
589
+ "upstream": "vmprimary",
590
+ "loadbalancing": "roundrobin",
591
+ "description": "Error catcher overlay 44px touch target",
592
+ "timeout": "5s",
593
+ "auth": false
594
+ }
595
+ ],
596
+ "loadbalancing": {
597
+ "defaultpolicy": "roundrobin",
598
+ "policies": {
599
+ "roundrobin": {
600
+ "type": "roundrobin",
601
+ "description": "Fair distribution, stateless API, observer cycles endpoints",
602
+ "algorithm": "weighted round robin simple",
603
+ "resetslowstart": true,
604
+ "slowstart": "10s"
605
+ },
606
+ "leastconn": {
607
+ "type": "leastconn",
608
+ "description": "Best for /api/v5/transcode long jobs, least active connections",
609
+ "choice": "activeconns",
610
+ "slowstart": "30s",
611
+ "emaalpha": 0.2,
612
+ "observer": "tracks active request count per mttgworkers node"
613
+ },
614
+ "ringhash": {
615
+ "type": "ringhash",
616
+ "description": "Consistent hash ring, ip affinity for gpu and ssh tunnel",
617
+ "hash": "ip",
618
+ "replication": 256,
619
+ "vnodes": 256,
620
+ "observer": "maps client ip to ring position"
621
+ },
622
+ "weighted": {
623
+ "type": "weighted",
624
+ "description": "Weighted round robin Blackwell aware, B200 192GB weight high",
625
+ "algorithm": "wrr blackwell",
626
+ "weightsource": "meta.vrammb",
627
+ "blackwellpriority": {
628
+ "enabled": true,
629
+ "skus": [
630
+ "gb200",
631
+ "b200sxm",
632
+ "b100"
633
+ ],
634
+ "vramweightmultiplier": 2.0,
635
+ "powerlimit": "1000W"
636
+ },
637
+ "observer": "favors GB200 192GB, B200 192GB over tiny 1GB",
638
+ "examples": {
639
+ "b200sxm192gb": 250,
640
+ "gb200393gb": 300,
641
+ "tiny1gb": 10
642
+ }
643
+ },
644
+ "poweroftwochoices": {
645
+ "type": "pof2",
646
+ "alias": "poweroftwochoices",
647
+ "description": "Best for /hls/ edge cache, two random picks least loaded",
648
+ "choices": 2,
649
+ "loadmetric": "inflight + latency",
650
+ "cacheaware": true,
651
+ "observer": "samples two endpoints from mttgworkers, picks less loaded, edge cache friendly"
652
+ },
653
+ "leastresponsetime": {
654
+ "type": "leastresponsetime",
655
+ "description": "Best for hyperscale memory bound, picks fastest to respond",
656
+ "emaalpha": 0.2,
657
+ "slowstart": "60s"
658
+ }
659
+ },
660
+ "health": {
661
+ "passive": true,
662
+ "active": true,
663
+ "ejectionpercent": 50,
664
+ "failurethreshold": 5,
665
+ "successrate": 0.95
666
+ }
667
+ },
668
+ "middleware": {
669
+ "cors": {
670
+ "enabled": true,
671
+ "allowedorigins": [
672
+ "https://saddle.local",
673
+ "https://*.saddle.dev",
674
+ "https://saddle-v6.internal"
675
+ ],
676
+ "allowedmethods": [
677
+ "GET",
678
+ "POST",
679
+ "PUT",
680
+ "DELETE",
681
+ "OPTIONS",
682
+ "PATCH",
683
+ "HEAD"
684
+ ],
685
+ "allowedheaders": [
686
+ "*"
687
+ ],
688
+ "maxage": "86400s"
689
+ },
690
+ "rateglobal": {
691
+ "enabled": true,
692
+ "rps": 20000,
693
+ "burst": 30000,
694
+ "key": "ip",
695
+ "redisurl": "redis://127.0.0.1:6379/0",
696
+ "engine": "redis 7.4"
697
+ },
698
+ "auth": {
699
+ "type": "jwt",
700
+ "issuer": "https://auth.saddle.local",
701
+ "jwksurl": "https://auth.saddle.local/.well-known/jwks.json",
702
+ "requiredfor": [
703
+ "/api/v5/transcode",
704
+ "/gpu/",
705
+ "/api/v6/hyperscale/"
706
+ ],
707
+ "leeway": "60s"
708
+ },
709
+ "compression": {
710
+ "enabled": true,
711
+ "types": [
712
+ "text/*",
713
+ "application/json",
714
+ "application/javascript",
715
+ "application/vnd.apple.mpegurl"
716
+ ],
717
+ "minsize": "1KiB",
718
+ "level": 4
719
+ },
720
+ "requestlog": {
721
+ "fields": [
722
+ "vcpu",
723
+ "rammb",
724
+ "vrammb",
725
+ "gpusku",
726
+ "routeid",
727
+ "upstreamid",
728
+ "statuscode",
729
+ "latency"
730
+ ],
731
+ "format": "json",
732
+ "sample": 1.0
733
+ }
734
+ },
735
+ "tls": {
736
+ "cert": "/etc/saddle/certs/v6/tls.crt",
737
+ "key": "/etc/saddle/certs/v6/tls.key",
738
+ "ca": "/etc/saddle/certs/v6/ca.crt",
739
+ "autoreload": true,
740
+ "ocspstapling": true,
741
+ "minversion": "TLS1.3",
742
+ "maxversion": "TLS1.3",
743
+ "only": true,
744
+ "protocols": [
745
+ "TLS1.3"
746
+ ],
747
+ "h2": true,
748
+ "h3": true,
749
+ "quic": {
750
+ "enabled": true,
751
+ "port": 8443,
752
+ "idle": "30s"
753
+ },
754
+ "ciphers": {
755
+ "enforced": "TLS1.3_only"
756
+ }
757
+ },
758
+ "observability": {
759
+ "prometheus": true,
760
+ "prometheusport": 9090,
761
+ "otelendpoint": "http://127.0.0.1:4317",
762
+ "tracingsamplerate": 0.1,
763
+ "metricslabels": [
764
+ "routeid",
765
+ "upstreamid",
766
+ "vcpu",
767
+ "rammb",
768
+ "gpusku",
769
+ "statuscode",
770
+ "lbpolicy"
771
+ ],
772
+ "dashboard": {
773
+ "touchtarget": "44px",
774
+ "enabled": true,
775
+ "endpoint": "/_passage/dashboard"
776
+ },
777
+ "logging": {
778
+ "level": "info",
779
+ "json": true
780
+ }
781
+ },
782
+ "pipeline": {
783
+ "memorypassage": "pipelinememorypassage.ts",
784
+ "coreorchestrator": "coreorchestrator.ts",
785
+ "qemubridge": "qemubridge.py",
786
+ "virtualizationcore": "virtualizationcore.hpp",
787
+ "internalmemory": true,
788
+ "modes": 30,
789
+ "contextsperfile": "20-25",
790
+ "maxperfile": 20,
791
+ "threeLayer": "direct",
792
+ "libraryFirst": "typescript"
793
+ },
794
+ "sidecar": {
795
+ "docker": "29.7.2",
796
+ "qemu": "11.1.0",
797
+ "dockerconfig": "docker.config",
798
+ "qemuconfig": "qemu.config",
799
+ "compose": "dockercompose.yml",
800
+ "dockerfile": "dockerfile",
801
+ "python": "3.14.7",
802
+ "node": "24.19.0"
803
+ },
804
+ "xexamples": {
805
+ "extremevcpu": {
806
+ "description": "Unlimited modular vCPU 1..4096 any integer prime allowed",
807
+ "values": [
808
+ 1,
809
+ 4,
810
+ 13,
811
+ 32,
812
+ 37,
813
+ 64,
814
+ 137,
815
+ 192,
816
+ 256,
817
+ 512,
818
+ 1024
819
+ ],
820
+ "prime": 7919,
821
+ "hyperscale": 1024
822
+ },
823
+ "extremeram": {
824
+ "description": "Extensible RAM MiB 1MiB granularity 2TB 3TB 4TB",
825
+ "valuesmb": [
826
+ 512,
827
+ 1337,
828
+ 4096,
829
+ 7919,
830
+ 16834,
831
+ 65536,
832
+ 131072,
833
+ 262144,
834
+ 524288,
835
+ 1048576,
836
+ 2097152,
837
+ 3145728,
838
+ 4194304
839
+ ],
840
+ "maxtb": 4,
841
+ "mintb": 2,
842
+ "hyperscale": [
843
+ 2097152,
844
+ 3145728,
845
+ 4194304
846
+ ]
847
+ },
848
+ "extremevram": {
849
+ "description": "Extensible VRAM slices Blackwell vGPU MIG",
850
+ "valuesmb": [
851
+ 1024,
852
+ 4096,
853
+ 7183,
854
+ 16384,
855
+ 23552,
856
+ 32768,
857
+ 49152,
858
+ 98304,
859
+ 196608,
860
+ 393216,
861
+ 786432
862
+ ],
863
+ "blackwell": {
864
+ "b100": 98304,
865
+ "b200": 196608,
866
+ "gb200": 393216
867
+ }
868
+ }
869
+ }
870
+ },
871
+ "passthroughModes": {
872
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
873
+ "modeOverview": [
874
+ {
875
+ "id": "vfio",
876
+ "type": "full passthrough",
877
+ "granularity": "whole PCI function",
878
+ "requiresKvm": true,
879
+ "lossOfSnapshot": true
880
+ },
881
+ {
882
+ "id": "mdev",
883
+ "type": "mediated passthrough",
884
+ "granularity": "vendor-defined slice",
885
+ "requiresKvm": true,
886
+ "lossOfSnapshot": true
887
+ },
888
+ {
889
+ "id": "mig",
890
+ "type": "GPU hardware slicing",
891
+ "granularity": "memory+SM partition (1g.24gb/2g.48gb/4g.96gb)",
892
+ "requiresKvm": true,
893
+ "lossOfSnapshot": false
894
+ },
895
+ {
896
+ "id": "vgpu",
897
+ "type": "licensed mediated GPU",
898
+ "granularity": "vGPU profile (1B/2B/4Q...)",
899
+ "requiresKvm": true,
900
+ "lossOfSnapshot": true
901
+ },
902
+ {
903
+ "id": "sriov",
904
+ "type": "PCIe virtual functions",
905
+ "granularity": "VF of NIC/GPU",
906
+ "requiresKvm": true,
907
+ "lossOfSnapshot": true
908
+ },
909
+ {
910
+ "id": "vfio-user",
911
+ "type": "userspace device emulation",
912
+ "granularity": "any device emulated by a userspace server",
913
+ "requiresKvm": false,
914
+ "lossOfSnapshot": false
915
+ },
916
+ {
917
+ "id": "hotplug",
918
+ "type": "runtime attach/detach",
919
+ "granularity": "cpu (vCPU), memory (pc-dimm), pci (root-port)",
920
+ "requiresKvm": false,
921
+ "lossOfSnapshot": false
922
+ },
923
+ {
924
+ "id": "none",
925
+ "type": "fully virtual devices",
926
+ "granularity": "virtio only",
927
+ "requiresKvm": false,
928
+ "lossOfSnapshot": false
929
+ }
930
+ ],
931
+ "vfio": {
932
+ "driver": "vfio-pci",
933
+ "kernelModules": [
934
+ "vfio",
935
+ "vfio_iommu_type1",
936
+ "vfio_pci",
937
+ "vfio_virqfd"
938
+ ],
939
+ "iommuKernelCmdline": {
940
+ "intel": "intel_iommu=on iommu=pt",
941
+ "amd": "amd_iommu=on iommu=pt"
942
+ },
943
+ "modprobeConf": "options vfio-pci ids=10de:2b85,10de:26b5,1002:748e",
944
+ "bindProcedure": [
945
+ "1. lspci -nnk to locate the BDF and current driver",
946
+ "2. echo 10de 2b85 > /sys/bus/pci/drivers/vfio-pci/new_id (or unbind from native driver + bind to vfio-pci)",
947
+ "3. verify /dev/vfio/<group> exists for the device group",
948
+ "4. ls /sys/kernel/iommu_groups/ and cat /sys/bus/pci/devices/<bdf>/iommu_group/devices to check isolation"
949
+ ],
950
+ "iommuGroups": {
951
+ "list": "ls /sys/kernel/iommu_groups/",
952
+ "membership": "ls /sys/kernel/iommu_groups/<n>/devices/",
953
+ "requirement": "the passed device must sit in a group with no other active host devices (ACS) or the whole group must be passed"
954
+ },
955
+ "iommufd": {
956
+ "device": "/dev/iommu",
957
+ "note": "modern replacement for /dev/vfio/vfio container API; QEMU -object iommu-backend=type=iommufd; Kata 4.1 uses IOMMUFD for NVSwitch passthrough"
958
+ },
959
+ "qemuUsage": "-device vfio-pci,host=0000:01:00.0 (q35: place behind a pcie-root-port for reset support)",
960
+ "limits": [
961
+ "VM loses live snapshot/migration compatibility while a VFIO device is attached",
962
+ "GPU reset requires the device to support FLR or a reboot of the host",
963
+ "NVIDIA consumer drivers historically refused passthrough (Code 43) - modern R570+ drivers allow it"
964
+ ]
965
+ },
966
+ "mdev": {
967
+ "description": "Mediated devices: a physical device driver creates virtual devices exposed as vfio-mdev sysfs entries that can be assigned to VMs.",
968
+ "create": "echo <uuid> | sudo tee /sys/bus/pci/devices/<bdf>/mdev_supported_types/<type>/create",
969
+ "listTypes": "ls /sys/bus/pci/devices/<bdf>/mdev_supported_types/",
970
+ "qemuUsage": "-device vfio-pci,sysfsdev=/sys/bus/mdev/devices/<uuid>",
971
+ "exampleTypes": [
972
+ "nvidia-155 (vGPU profile id format)",
973
+ "vfio_ap-passthrough (s390)",
974
+ "vfio_ccw-passthrough (s390)"
975
+ ],
976
+ "statusNote": "Intel GVT-g (i915 mdev) was removed from upstream kernels; on x86 the practical mdev users in 2026 are NVIDIA vGPU (licensed) and academic/vfio_ap stacks.",
977
+ "requiresKvm": true
978
+ },
979
+ "mig": {
980
+ "description": "NVIDIA Multi-Instance GPU: hardware partitioning of Blackwell/Hopper/Ampere datacenter GPUs into isolated GPU instances. Full command set in gpu.json mig section.",
981
+ "profilesRtxPro6000Server": [
982
+ {
983
+ "profile": "1g.24gb",
984
+ "instances": 4,
985
+ "vramGb": 24
986
+ },
987
+ {
988
+ "profile": "2g.48gb",
989
+ "instances": 2,
990
+ "vramGb": 48
991
+ },
992
+ {
993
+ "profile": "4g.96gb",
994
+ "instances": 1,
995
+ "vramGb": 96
996
+ }
997
+ ],
998
+ "guestAssignment": {
999
+ "cudaVisibleDevices": "MIG-<uuid>",
1000
+ "container": "NVIDIA_VISIBLE_DEVICES=MIG-<uuid>",
1001
+ "note": "MIG instances are addressed through the parent GPU driver; they are not PCI devices and cannot be passed with vfio-pci individually"
1002
+ },
1003
+ "engineUse": "inference-mig VM profile: multi-tenant 24/48/96 GB vRAM slices without passthrough",
1004
+ "requiresKvm": "parent GPU must be owned by a real host driver (bare-metal or nested); MIG cannot be created on a virtualized GPU"
1005
+ },
1006
+ "vgpu": {
1007
+ "description": "NVIDIA vGPU (GRID): licensed mediated GPU passthrough; host installs the GRID driver and creates mdev instances typed nvidia-<profile>.",
1008
+ "profileNaming": "<frame-buffer-size>-<license>: e.g. A100-2-20B (A100 20GB vGPU, vCS/PC/B license) or L40-4Q (RTX 6000 Ada 4GB Q profile for Quadro features)",
1009
+ "licensing": "NVIDIA vGPU License Server (CLS/DLS); guest checks out a license at boot",
1010
+ "guestDriver": "GRID guest driver matching host branch (R580 line in 2026)",
1011
+ "unlicensedGrace": "vGPU evaluation mode runs with reduced features for a trial period",
1012
+ "alternatives": [
1013
+ "Intel GPU SR-IOV (Flex 170, Arc Pro, Xe): native VF partitioning via SR-IOV",
1014
+ "AMD SR-IOV on Instinct MI300 (experimental)"
1015
+ ]
1016
+ },
1017
+ "sriov": {
1018
+ "description": "SR-IOV: a PCIe device exposes Virtual Functions bound to vfio-pci and assigned to VMs with near-native performance.",
1019
+ "createVfs": "echo 8 | sudo tee /sys/class/net/enp1s0f0/device/sriov_numvfs",
1020
+ "bindVf": "driverctl unset-override / native driver, or echo <bdf> > /sys/bus/pci/drivers/vfio-pci/bind",
1021
+ "typicalNics": [
1022
+ "Intel E810 (100GbE)",
1023
+ "Intel X710 (40GbE)",
1024
+ "NVIDIA ConnectX-6 Dx / ConnectX-7",
1025
+ "Broadcom NetXtreme-E"
1026
+ ],
1027
+ "qemuUsage": "-device vfio-pci,host=0000:01:00.3 -device vfio-pci,host=0000:01:00.4 ...",
1028
+ "fallback": "virtio-net with iothread + multiqueue gives portable performance without host dependencies (default in vm.config.json)",
1029
+ "sriovGpus": [
1030
+ "Intel Data Center GPU Flex 170 (2 VFs)",
1031
+ "Intel Arc Pro A60? (2 VFs)",
1032
+ "AMD Instinct MI300X SR-IOV (roadmap)"
1033
+ ]
1034
+ },
1035
+ "vfioUser": {
1036
+ "protocol": "vfio-user: VFIO-over-UNIX-socket user-space device emulation (QEMU docs/vfio-user.rst; NVMe world's userspace device servers)",
1037
+ "cloudHypervisor": {
1038
+ "version": "v53.0 (2026-07-12)",
1039
+ "status": "experimental",
1040
+ "cli": "--user-device socket=<path>",
1041
+ "hotplug": "ch-remote add-user-device socket=<path>",
1042
+ "note": "offloaded snapshot/restore daemon with userfaultfd + vhost-user landed in the same v53 release"
1043
+ },
1044
+ "qemuSupport": "-device vfio-user-pci,socket=<path> (QEMU 7.1+; parity with Cloud Hypervisor for shared servers)",
1045
+ "advantages": [
1046
+ "device emulation runs in a separate userspace process (crash isolation, live upgrade)",
1047
+ "no kernel driver and no IOMMU requirement on the host - works without /dev/kvm",
1048
+ "compatible with snapshottable, migratable VMs (unlike real VFIO)"
1049
+ ],
1050
+ "engineUse": "emulated NVMe/GPU backends for the engine without host hardware"
1051
+ },
1052
+ "hotplug": {
1053
+ "cpu": {
1054
+ "qmp": [
1055
+ "query-hotpluggable-cpus",
1056
+ "device_add driver=epyc-v5-x86_64-cpu,id=cpu-N,socket-id=0,core-id=48,thread-id=0"
1057
+ ],
1058
+ "precondition": "-smp <N>,maxcpus=<M> at boot (cores.json qemu_topology_generation)",
1059
+ "guest": "Linux udev + acpi hotplug handler (virtio and ACPI CPU hotplug for x86)"
1060
+ },
1061
+ "memory": {
1062
+ "precondition": "-m 8G,slots=4,maxmem=64G",
1063
+ "qmp": [
1064
+ "object-add qom-type=memory-backend-ram,id=mem1,props={'size':17179869184}",
1065
+ "device_add driver=pc-dimm,id=dimm1,memdev=mem1"
1066
+ ],
1067
+ "guest": "online_memory_block via sysfs; NUMA node attach with -numa node,memdev=..."
1068
+ },
1069
+ "pci": {
1070
+ "q35": "device_add pcie-root-port,id=rp1,bus=pcie.0 then device_add <dev>,bus=rp1",
1071
+ "microvm": "no PCI hotplug (virtio-mmio fixed); use ch-remote with Cloud Hypervisor instead",
1072
+ "devices": [
1073
+ "virtio-blk (data volumes)",
1074
+ "virtio-net",
1075
+ "vfio-pci passthrough",
1076
+ "usb-host"
1077
+ ]
1078
+ },
1079
+ "firecracker": "PCI virtio hotplug in developer preview since v1.16.0 (network/block attach/detach)",
1080
+ "limits": "CPU and memory unplug remain less reliable than plug; orchestrate scale-out instead"
1081
+ },
1082
+ "kvm": {
1083
+ "requirement": "CPU with VT-x/AMD-SVM + kvm(|-intel|-amd) kernel module + accessible /dev/kvm",
1084
+ "checkCommands": [
1085
+ "test -e /dev/kvm && echo kvm-present",
1086
+ "kvm-ok (Ubuntu cpu-checker)",
1087
+ "lscpu | grep Virtualization"
1088
+ ],
1089
+ "githubHostedRunners": {
1090
+ "available": false,
1091
+ "reason": "hosted runners are Azure VMs without nested virtualization exposed; /dev/kvm absent",
1092
+ "evidence": [
1093
+ "actions/runner-images#12933",
1094
+ "actions/runner-images#14062",
1095
+ "actuated.com/blog/kvm-in-github-actions",
1096
+ "e2b-dev/infra self-host.md: Firecracker requires bare metal or nested virtualization support"
1097
+ ]
1098
+ },
1099
+ "fallback": {
1100
+ "accel": "tcg,thread=multi (MTTCG, see mttcg.json)",
1101
+ "penalty": "10-30x slower than KVM for compute workloads; deterministic and dependency-free",
1102
+ "firecracker": "cannot run (hard KVM requirement)",
1103
+ "kataContainers": "cannot run its microVM hypervisors (QEMU/KVM, Cloud Hypervisor, Firecracker) on hosted runners; use Docker + gVisor runsc (works without KVM) instead",
1104
+ "knownPitfall": "QEMU auto-fallback KVM->TCG broke historically (community discussion #151747); always pass -accel tcg,thread=multi explicitly in CI"
1105
+ },
1106
+ "selfHosted": {
1107
+ "bareMetal": "full matrix available: KVM + VFIO + MIG + Firecracker snapshots (restore as low as 4 ms)",
1108
+ "nested": "KVM and Firecracker work; VFIO/MIG of real hardware still needs bare metal",
1109
+ "providers": [
1110
+ "WarpBuild bare-metal runners",
1111
+ "actuated (KernelCI-class bare metal)",
1112
+ "self-hosted GitHub runners"
1113
+ ]
1114
+ }
1115
+ },
1116
+ "noneMode": {
1117
+ "id": "none",
1118
+ "aliases": [
1119
+ "nodriver",
1120
+ "virtio-only"
1121
+ ],
1122
+ "description": "Fully virtual devices only - the default for ephemeral CI sandboxes: no host hardware dependency, no passthrough drivers, snapshot-safe, migratable.",
1123
+ "qemuFlags": "-nodefaults -vga none (no display driver), every device explicitly virtio",
1124
+ "devices": [
1125
+ "virtio-blk",
1126
+ "virtio-scsi",
1127
+ "virtio-net",
1128
+ "virtio-rng",
1129
+ "virtio-input/usb-tablet",
1130
+ "virtio-gpu",
1131
+ "virtio-fs (host share via vhost-user-fs)"
1132
+ ],
1133
+ "rationale": [
1134
+ "snapshot/migration compatibility (passage.json mode_overview loss_of_snapshot=false)",
1135
+ "no IOMMU requirement; runs on any host including GitHub-hosted runners",
1136
+ "GPU identity delivered by software stack: Mesa llvmpipe/lavapipe + smi-adapter/NVML shim (gpu.json, mesa.json)"
1137
+ ]
1138
+ },
1139
+ "decisionMatrix": [
1140
+ {
1141
+ "situation": "Ephemeral CI sandbox on GitHub-hosted runner",
1142
+ "mode": "none",
1143
+ "accel": "tcg,thread=multi",
1144
+ "gpu": "llvmpipe/lavapipe + smi-adapter"
1145
+ },
1146
+ {
1147
+ "situation": "Self-hosted runner, needs real GPU for training",
1148
+ "mode": "vfio",
1149
+ "accel": "kvm",
1150
+ "gpu": "vfio-pci host=GPU BDF"
1151
+ },
1152
+ {
1153
+ "situation": "One physical GPU, many tenants",
1154
+ "mode": "mig",
1155
+ "accel": "kvm (parent in host)",
1156
+ "gpu": "MIG 1g.24gb x4 on RTX PRO 6000 Server"
1157
+ },
1158
+ {
1159
+ "situation": "Licensed VDI graphics",
1160
+ "mode": "vgpu",
1161
+ "accel": "kvm",
1162
+ "gpu": "GRID vGPU profile"
1163
+ },
1164
+ {
1165
+ "situation": "Near-native networking",
1166
+ "mode": "sriov",
1167
+ "accel": "kvm",
1168
+ "nic": "ConnectX-6 Dx VF"
1169
+ },
1170
+ {
1171
+ "situation": "Userspace device server, no kernel deps",
1172
+ "mode": "vfio-user",
1173
+ "accel": "any",
1174
+ "device": "--user-device socket (Cloud Hypervisor v53, experimental)"
1175
+ },
1176
+ {
1177
+ "situation": "Scale a running VM without restart",
1178
+ "mode": "hotplug",
1179
+ "accel": "any",
1180
+ "targets": [
1181
+ "vCPU",
1182
+ "pc-dimm memory",
1183
+ "virtio disks"
1184
+ ]
1185
+ }
1186
+ ]
1187
+ },
1188
+ "networkBinding": {
1189
+ "description": "randomized host port never localhost, 0.0.0.0 bind, crypto.randomInt 20000-60000, TOCTOU immunity",
1190
+ "bindAddress": "0.0.0.0",
1191
+ "hostResolution": "127.0.0.1 or container gateway, never literal 'localhost' string",
1192
+ "port": {
1193
+ "strategy": "crypto.randomInt(20000,60000)",
1194
+ "module": "node:crypto",
1195
+ "function": "randomInt",
1196
+ "range": [
1197
+ 20000,
1198
+ 60000
1199
+ ],
1200
+ "retries": 10,
1201
+ "collisionCheck": "atomic bind with SO_REUSEPORT disabled then immediate validation"
1202
+ },
1203
+ "toctou": {
1204
+ "immunity": true,
1205
+ "technique": "bind-first-then-announce, no check-then-bind",
1206
+ "raceWindowMs": 0,
1207
+ "validation": "EADDRINUSE retry loop with exponential backoff"
1208
+ },
1209
+ "security": {
1210
+ "landlock": true,
1211
+ "seccomp": true,
1212
+ "allowLoopbackOnly": false
1213
+ },
1214
+ "vmNetworkModesRef": "vm.config.json#productionExample.vm.network.passage (direct/bridge/nat/overlayVxlan/zeroTrust/latencyOptimization + dpdk 26.07.0, ovs 3.7.1, wireguard, ebpf libbpf 1.6.0, xdp, io_uring_zcrx)"
1215
+ },
1216
+ "vfioIds": {
1217
+ "description": "vendor:device ids for the 11 profile GPUs (source: gpu.profiles.json via gpus.json#gpu_profiles_vfio; used by vfio-pci.ids kernel arg)",
1218
+ "gpus": {
1219
+ "mi355x": [
1220
+ "1002:75a0"
1221
+ ],
1222
+ "mi350x": [
1223
+ "1002:75a3"
1224
+ ],
1225
+ "b200": [
1226
+ "10de:2941"
1227
+ ],
1228
+ "h200": [
1229
+ "10de:2335"
1230
+ ],
1231
+ "rtx5090": [
1232
+ "10de:2b85",
1233
+ "10de:22e8"
1234
+ ],
1235
+ "rtx5080": [
1236
+ "10de:2b80"
1237
+ ],
1238
+ "rtxPro6000": [
1239
+ "10de:26b5"
1240
+ ],
1241
+ "rx9070xt": [
1242
+ "1002:7550",
1243
+ "1002:ab40"
1244
+ ],
1245
+ "rx7900xtx": [
1246
+ "1002:744c",
1247
+ "1002:ab30"
1248
+ ],
1249
+ "arcB580": [
1250
+ "8086:e20b"
1251
+ ]
1252
+ }
1253
+ },
1254
+ "hostPlaybook": {
1255
+ "source": "pool:passage.yaml [AetherForge ansible-as-checklist]",
1256
+ "apiVersion": "aetherforge.dev/v5",
1257
+ "kind": "Passage",
1258
+ "metadata": {
1259
+ "name": "default-vfio"
1260
+ },
1261
+ "spec": {
1262
+ "host": {
1263
+ "iommu": "auto",
1264
+ "kernelArgs": [
1265
+ "intel_iommu=on",
1266
+ "iommu=pt",
1267
+ "amd_iommu=on",
1268
+ "pcie_acs_override=downstream,multifunction",
1269
+ "vfio-pci.ids=${GPU_VENDOR}:${GPU_DEVICE},${AUDIO_VENDOR}:${AUDIO_DEVICE}"
1270
+ ],
1271
+ "modules": {
1272
+ "load": [
1273
+ "vfio",
1274
+ "vfio_iommu_type1",
1275
+ "vfio_pci",
1276
+ "vendor-reset"
1277
+ ],
1278
+ "blacklist": [
1279
+ "nouveau",
1280
+ "nvidia",
1281
+ "nvidiafb",
1282
+ "rivafb",
1283
+ "nvidia-drm",
1284
+ "nvidia-modeset",
1285
+ "amdgpu",
1286
+ "i915"
1287
+ ]
1288
+ }
1289
+ },
1290
+ "bind": {
1291
+ "method": "vfio-pci",
1292
+ "devices": [
1293
+ {
1294
+ "name": "gpu",
1295
+ "example": "01:00.0"
1296
+ },
1297
+ {
1298
+ "name": "hdmi-audio",
1299
+ "example": "01:00.1"
1300
+ }
1301
+ ],
1302
+ "notes": [
1303
+ "Use vendor:device from gpu.profiles.json vfioIds.",
1304
+ "Confirm IOMMU group isolation with `find /sys/kernel/iommu_groups -type l`.",
1305
+ "ACS override is a last resort; prefer a board with ACS."
1306
+ ]
1307
+ },
1308
+ "reset": {
1309
+ "nvidia": "vendor-reset or native on 6.8+",
1310
+ "amd": "vendor-reset for Navi 21; native for RDNA 3/4 on 6.12+",
1311
+ "intel": "native on Battlemage"
1312
+ },
1313
+ "lookingGlass": {
1314
+ "ivshmem": "/dev/shm/looking-glass",
1315
+ "size": "128M",
1316
+ "user": "qemu",
1317
+ "client": "looking-glass-client -s"
1318
+ },
1319
+ "singleGpu": {
1320
+ "description": "Unbind the host console GPU, start the guest, rebind on shutdown via /etc/libvirt/hooks/qemu. Requires a second way in (SSH, IPMI).\n",
1321
+ "hook": "/etc/libvirt/hooks/qemu.d/aetherforge"
1322
+ },
1323
+ "verification": [
1324
+ "dmesg | grep -e DMAR -e AMD-Vi",
1325
+ "ls -l /dev/vfio",
1326
+ "qemu-system-x86_64 -device vfio-pci,help"
1327
+ ]
1328
+ }
1329
+ },
1330
+ "exampleNodeCrypto": "const port = crypto.randomInt(20000,60000); server.listen(port,'0.0.0.0')"
1331
+ }