@wenathlan/saddle 2.0.154 → 2.0.159

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 (314) hide show
  1. package/Dockerfile +167 -1334
  2. package/README.md +59 -60
  3. package/biome.jsonc +3 -3
  4. package/browser.ts +482 -0
  5. package/cli.ts +274 -0
  6. package/distribution.ts +731 -0
  7. package/docker.config +29 -8
  8. package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
  9. package/docs/artifactavailability.md +2 -2
  10. package/docs/browser.md +18 -1
  11. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  12. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  13. package/docs/extension.md +13 -2
  14. package/docs/features.md +5 -0
  15. package/docs/libraryapi.md +1 -1
  16. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  17. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  18. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  19. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  20. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  21. package/docs/todo.md +2 -2
  22. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  23. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  24. package/execution.ts +677 -0
  25. package/foundation.ts +314 -0
  26. package/index.ts +36 -34
  27. package/isolation.ts +84 -0
  28. package/modalityregistry.ts +189 -145
  29. package/modes.ts +170 -0
  30. package/mttg.config +1 -1
  31. package/orchestrator.ts +49 -15
  32. package/package.json +105 -89
  33. package/qemu.config +2 -2
  34. package/sandbox.ts +3279 -0
  35. package/scheduler.ts +1 -1
  36. package/server.ts +52 -0
  37. package/tsconfig.json +12 -13
  38. package/virtual.ts +7528 -0
  39. package/workloadlaw.ts +293 -0
  40. package/dist/App.d.ts +0 -5
  41. package/dist/App.js +0 -52
  42. package/dist/Sol/Sol.d.ts +0 -3
  43. package/dist/Sol/Sol.js +0 -46
  44. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  45. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  46. package/dist/Sol/architecture/architecture.d.ts +0 -9
  47. package/dist/Sol/architecture/architecture.js +0 -93
  48. package/dist/Sol/compute/compute.d.ts +0 -9
  49. package/dist/Sol/compute/compute.js +0 -22
  50. package/dist/Sol/console/console.d.ts +0 -15
  51. package/dist/Sol/console/console.js +0 -292
  52. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  53. package/dist/Sol/dashboard/dashboard.js +0 -181
  54. package/dist/Sol/docs/docs.d.ts +0 -9
  55. package/dist/Sol/docs/docs.js +0 -28
  56. package/dist/Sol/home/home.d.ts +0 -35
  57. package/dist/Sol/home/home.js +0 -239
  58. package/dist/Sol/integrations/integrations.d.ts +0 -9
  59. package/dist/Sol/integrations/integrations.js +0 -83
  60. package/dist/Sol/intro/intro.d.ts +0 -7
  61. package/dist/Sol/intro/intro.js +0 -102
  62. package/dist/Sol/login/login.d.ts +0 -16
  63. package/dist/Sol/login/login.js +0 -49
  64. package/dist/Sol/notfound/notfound.d.ts +0 -9
  65. package/dist/Sol/notfound/notfound.js +0 -15
  66. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  67. package/dist/Sol/onboarding/onboarding.js +0 -60
  68. package/dist/Sol/playground/playground.d.ts +0 -9
  69. package/dist/Sol/playground/playground.js +0 -127
  70. package/dist/Sol/register/register.d.ts +0 -16
  71. package/dist/Sol/register/register.js +0 -193
  72. package/dist/Sol/shell/Shell.d.ts +0 -124
  73. package/dist/Sol/shell/Shell.js +0 -335
  74. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  75. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  76. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  77. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  78. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  79. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  80. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  81. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  82. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  83. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  84. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  85. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  86. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  87. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  88. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  89. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  90. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  91. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  92. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  93. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  94. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  95. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  96. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  97. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  98. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  100. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  102. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  103. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  104. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  105. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  106. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  107. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  108. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  109. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  110. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  111. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  112. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  113. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  114. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  115. package/dist/Sol/wingets/LoginForm.js +0 -141
  116. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  117. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  118. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  119. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  120. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  121. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  122. package/dist/Sol/wingets/index.d.ts +0 -39
  123. package/dist/Sol/wingets/index.js +0 -39
  124. package/dist/alternatives.d.ts +0 -508
  125. package/dist/alternatives.js +0 -950
  126. package/dist/api.d.ts +0 -154
  127. package/dist/api.js +0 -174
  128. package/dist/auth.d.ts +0 -268
  129. package/dist/auth.js +0 -476
  130. package/dist/automation.d.ts +0 -425
  131. package/dist/automation.js +0 -566
  132. package/dist/browser.d.ts +0 -561
  133. package/dist/browser.js +0 -1058
  134. package/dist/capacitor.config.d.ts +0 -45
  135. package/dist/capacitor.config.js +0 -48
  136. package/dist/catalog.d.ts +0 -43
  137. package/dist/catalog.js +0 -44
  138. package/dist/cli.d.ts +0 -16
  139. package/dist/cli.js +0 -168
  140. package/dist/communication.d.ts +0 -181
  141. package/dist/communication.js +0 -376
  142. package/dist/compute.d.ts +0 -1160
  143. package/dist/compute.js +0 -2272
  144. package/dist/dashboardlib.d.ts +0 -58
  145. package/dist/dashboardlib.js +0 -161
  146. package/dist/db.d.ts +0 -569
  147. package/dist/db.js +0 -1080
  148. package/dist/distribution.d.ts +0 -528
  149. package/dist/distribution.js +0 -810
  150. package/dist/drizzle.config.d.ts +0 -20
  151. package/dist/drizzle.config.js +0 -18
  152. package/dist/edgelandes.d.ts +0 -70
  153. package/dist/edgelandes.host.d.ts +0 -26
  154. package/dist/edgelandes.host.js +0 -1089
  155. package/dist/edgelandes.inproc.d.ts +0 -27
  156. package/dist/edgelandes.inproc.js +0 -952
  157. package/dist/edgelandes.js +0 -1133
  158. package/dist/edgelandes.ninety.d.ts +0 -31
  159. package/dist/edgelandes.ninety.js +0 -174
  160. package/dist/edgelandes.virtual.d.ts +0 -25
  161. package/dist/edgelandes.virtual.js +0 -629
  162. package/dist/edgeplane.d.ts +0 -121
  163. package/dist/edgeplane.js +0 -341
  164. package/dist/examplelocaljob.d.ts +0 -1
  165. package/dist/examplelocaljob.js +0 -14
  166. package/dist/execution.d.ts +0 -529
  167. package/dist/execution.js +0 -760
  168. package/dist/family.d.ts +0 -16
  169. package/dist/family.js +0 -42
  170. package/dist/familyurl.d.ts +0 -21
  171. package/dist/familyurl.js +0 -24
  172. package/dist/format.d.ts +0 -18
  173. package/dist/format.js +0 -59
  174. package/dist/foundation.d.ts +0 -172
  175. package/dist/foundation.js +0 -312
  176. package/dist/index.d.ts +0 -735
  177. package/dist/index.js +0 -1020
  178. package/dist/integration.d.ts +0 -235
  179. package/dist/integration.js +0 -228
  180. package/dist/intelligence.d.ts +0 -93
  181. package/dist/intelligence.js +0 -144
  182. package/dist/isolation.d.ts +0 -128
  183. package/dist/isolation.js +0 -95
  184. package/dist/labels.d.ts +0 -665
  185. package/dist/labels.js +0 -707
  186. package/dist/localauth.d.ts +0 -127
  187. package/dist/localauth.js +0 -413
  188. package/dist/media.d.ts +0 -343
  189. package/dist/media.js +0 -985
  190. package/dist/mesh.d.ts +0 -177
  191. package/dist/mesh.js +0 -468
  192. package/dist/modalityregistry.d.ts +0 -109
  193. package/dist/modalityregistry.js +0 -1386
  194. package/dist/modes.d.ts +0 -358
  195. package/dist/modes.js +0 -133
  196. package/dist/onboardingstate.d.ts +0 -79
  197. package/dist/onboardingstate.js +0 -282
  198. package/dist/orchestrator.d.ts +0 -1338
  199. package/dist/orchestrator.js +0 -4310
  200. package/dist/packager/targetcli.js +0 -4
  201. package/dist/paths.d.ts +0 -2
  202. package/dist/paths.js +0 -14
  203. package/dist/performance.d.ts +0 -415
  204. package/dist/performance.js +0 -826
  205. package/dist/quantum.d.ts +0 -809
  206. package/dist/quantum.js +0 -2072
  207. package/dist/render.d.ts +0 -380
  208. package/dist/render.js +0 -1072
  209. package/dist/runall.d.ts +0 -2
  210. package/dist/runall.js +0 -39
  211. package/dist/runtimeprobe.d.ts +0 -4
  212. package/dist/runtimeprobe.js +0 -8
  213. package/dist/sandbox.d.ts +0 -355
  214. package/dist/sandbox.js +0 -1721
  215. package/dist/sandboxenvprofile.d.ts +0 -29
  216. package/dist/sandboxenvprofile.js +0 -89
  217. package/dist/sandboxprofile.d.ts +0 -137
  218. package/dist/sandboxprofile.js +0 -241
  219. package/dist/sandboxqueue.d.ts +0 -108
  220. package/dist/sandboxqueue.js +0 -201
  221. package/dist/sandboxquota.d.ts +0 -121
  222. package/dist/sandboxquota.js +0 -236
  223. package/dist/scheduler.d.ts +0 -595
  224. package/dist/scheduler.js +0 -1258
  225. package/dist/scriptlanes.d.ts +0 -182
  226. package/dist/scriptlanes.js +0 -660
  227. package/dist/scripts.buildengine.d.ts +0 -1
  228. package/dist/scripts.buildengine.js +0 -39
  229. package/dist/scripts.securitygate.d.ts +0 -1
  230. package/dist/scripts.securitygate.js +0 -68
  231. package/dist/scripts.validateflatnative.d.ts +0 -1
  232. package/dist/scripts.validateflatnative.js +0 -72
  233. package/dist/security.d.ts +0 -500
  234. package/dist/security.js +0 -1169
  235. package/dist/seedcatalog.d.ts +0 -13
  236. package/dist/seedcatalog.js +0 -46
  237. package/dist/server.d.ts +0 -20
  238. package/dist/server.js +0 -53
  239. package/dist/speccatalog.d.ts +0 -31
  240. package/dist/speccatalog.js +0 -163
  241. package/dist/tiers.d.ts +0 -1001
  242. package/dist/tiers.js +0 -2169
  243. package/dist/utils.d.ts +0 -2
  244. package/dist/utils.js +0 -5
  245. package/dist/vaulthandoff.d.ts +0 -141
  246. package/dist/vaulthandoff.js +0 -444
  247. package/dist/virtual.d.ts +0 -640
  248. package/dist/virtual.js +0 -1284
  249. package/dist/virtualcpu.d.ts +0 -315
  250. package/dist/virtualcpu.js +0 -1180
  251. package/dist/virtualgpu.d.ts +0 -344
  252. package/dist/virtualgpu.js +0 -1000
  253. package/dist/virtualization.d.ts +0 -606
  254. package/dist/virtualization.js +0 -1186
  255. package/dist/virtualmemory.d.ts +0 -817
  256. package/dist/virtualmemory.js +0 -1795
  257. package/dist/vite.config.d.ts +0 -3
  258. package/dist/vite.config.js +0 -48
  259. package/dist/vitest.config.d.ts +0 -2
  260. package/dist/vitest.config.js +0 -25
  261. package/dist/webserver.d.ts +0 -166
  262. package/dist/webserver.js +0 -2226
  263. package/dist/workloadlaw.d.ts +0 -133
  264. package/dist/workloadlaw.js +0 -193
  265. package/docs/.gitkeep +0 -0
  266. package/docs/architecture.1.8.19.md +0 -76
  267. package/docs/logs/examplesession.json +0 -54
  268. package/docs/repo.analysis.1.8.21.json +0 -2617
  269. package/docs/repo.candidates.1.8.21.jsonl +0 -666
  270. package/docs/repo.selected.1.8.21.json +0 -786
  271. package/manifest.json +0 -20
  272. package/media.ts +0 -1337
  273. package/virtualcpu.ts +0 -1274
  274. package/virtualgpu.ts +0 -1182
  275. package/virtualization.ts +0 -1628
  276. package/virtualmemory.ts +0 -2303
  277. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  278. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  279. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  280. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  281. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  282. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  283. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  284. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  285. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  286. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  287. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  288. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  289. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  290. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  291. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  292. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  293. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  294. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  295. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  296. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  297. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  298. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  299. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  300. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  301. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  302. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  303. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  304. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  305. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  306. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  307. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  308. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  309. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  310. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  311. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  312. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  313. /package/docs/{web.ideas.md → webideas.md} +0 -0
  314. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -1,1386 +0,0 @@
1
- // # modalityregistry — the catalog of the sandbox modalities the saddle
2
- // engine opens (root layer, wave SV1). One record per modality: the
3
- // isolation family, the driver requirements it mounts, the boot cost class,
4
- // the hardening gates it carries, the mime contract it answers and the
5
- // honest state of its wiring. The registry is the spine of the ninety
6
- // modality plan (the owner's law: the ninety modalities of saddle act for
7
- // the system, nothing touches the visitor machine): the workload never
8
- // chooses by name — the join resolver reads the request (isolation, gpu,
9
- // network, boot budget) and answers the modality set that satisfies it, so
10
- // the person chooses none and the platform resolves the join of all (the
11
- // nuclear modality law). Every record declares its state — live, host or
12
- // planned — so the report never lies: a lane that does not wire a modality
13
- // says so instead of pretending. Pure data and pure functions: zero
14
- // storage, zero node-only imports, the browser-pure bundle keeps carrying
15
- // it.
16
- /** The boot budgets of the ladder, per class: the ceilings the records walk
17
- * under (firecracker 125 ms and gvisor about 200 ms ride warm, the full
18
- * machine images ride cold). */
19
- export const BOOTLADDER = Object.freeze({
20
- hot: 25,
21
- warm: 800,
22
- cold: 1500,
23
- });
24
- /** The ninety modality plan: the count the owner charged (the ninety
25
- * modalities of saddle acting for the system) and the registry answers —
26
- * the catalog walked from twenty through forty to the ninety law, and
27
- * this constant is the line the plan pins. */
28
- export const MODALITYPLANCOUNT = 90;
29
- /** The modality records: the catalog the join resolver reads. */
30
- export const MODALITIES = Object.freeze([
31
- // the virtual family: the full machine with the virtual drivers
32
- {
33
- id: "virtual-full",
34
- label: "complete virtual",
35
- family: "virtual",
36
- isolation: "hardware",
37
- state: "live",
38
- drivers: ["virtualcpu", "virtualgpu", "virtualmemory"],
39
- hardening: ["profile-lock"],
40
- boot: "cold",
41
- bootms: BOOTLADDER.cold,
42
- gpu: true,
43
- network: true,
44
- mime: "application/vnd.devthink.sandbox+json",
45
- },
46
- {
47
- id: "virtual-vgpu",
48
- label: "vgpu slice",
49
- family: "virtual",
50
- isolation: "hardware",
51
- state: "live",
52
- drivers: ["virtualgpu", "nvml-shim", "vfio"],
53
- hardening: ["mig-profile"],
54
- boot: "warm",
55
- bootms: 600,
56
- gpu: true,
57
- network: true,
58
- mime: "application/vnd.devthink.sandbox+json",
59
- },
60
- {
61
- id: "virtual-screen",
62
- label: "vm plus vnc",
63
- family: "screen",
64
- isolation: "vm",
65
- state: "live",
66
- drivers: ["virtualcpu", "virtualgpu", "xvfb", "looking-glass"],
67
- hardening: ["session-otp"],
68
- boot: "warm",
69
- bootms: 700,
70
- gpu: true,
71
- network: true,
72
- mime: "application/vnd.devthink.screen+json",
73
- },
74
- {
75
- id: "virtual-drivers",
76
- label: "virtual drivers",
77
- family: "virtual",
78
- isolation: "vm",
79
- state: "live",
80
- drivers: ["virtualcpu", "virtualgpu", "virtualmemory", "nvml-shim"],
81
- hardening: ["driver-quota"],
82
- boot: "warm",
83
- bootms: 250,
84
- gpu: true,
85
- network: false,
86
- mime: "application/vnd.devthink.sandbox+json",
87
- },
88
- {
89
- id: "virtual-kvm",
90
- label: "kvm machine",
91
- family: "virtual",
92
- isolation: "hardware",
93
- state: "live",
94
- drivers: ["kvm", "virtualcpu"],
95
- hardening: ["clean-rootfs"],
96
- boot: "warm",
97
- bootms: 150,
98
- gpu: false,
99
- network: true,
100
- mime: "application/vnd.devthink.sandbox+json",
101
- },
102
- // the runner family: the universal binary runner
103
- {
104
- id: "runner-universal",
105
- label: "universal runner",
106
- family: "runner",
107
- isolation: "namespace",
108
- state: "live",
109
- drivers: ["binfmt", "bash"],
110
- hardening: ["read-only-root", "dropped-caps"],
111
- boot: "warm",
112
- bootms: BOOTLADDER.warm,
113
- gpu: false,
114
- network: true,
115
- mime: "application/vnd.devthink.run+json",
116
- },
117
- {
118
- id: "runner-node",
119
- label: "node packages",
120
- family: "packages",
121
- isolation: "process",
122
- state: "live",
123
- drivers: ["node", "babel", "swc"],
124
- hardening: ["package-allowlist"],
125
- boot: "hot",
126
- bootms: BOOTLADDER.hot,
127
- gpu: false,
128
- network: true,
129
- mime: "application/vnd.devthink.run+json",
130
- },
131
- {
132
- id: "runner-bun",
133
- label: "bun runtime",
134
- family: "packages",
135
- isolation: "process",
136
- state: "live",
137
- drivers: ["bun"],
138
- hardening: ["package-allowlist"],
139
- boot: "hot",
140
- bootms: 20,
141
- gpu: false,
142
- network: true,
143
- mime: "application/vnd.devthink.run+json",
144
- },
145
- {
146
- id: "runner-deno",
147
- label: "deno runtime",
148
- family: "packages",
149
- isolation: "process",
150
- state: "live",
151
- drivers: ["deno"],
152
- hardening: ["permission-map"],
153
- boot: "hot",
154
- bootms: 20,
155
- gpu: false,
156
- network: true,
157
- mime: "application/vnd.devthink.run+json",
158
- },
159
- {
160
- id: "runner-webpack",
161
- label: "webpack bundle",
162
- family: "packages",
163
- isolation: "process",
164
- state: "live",
165
- drivers: ["webpack", "swc"],
166
- hardening: ["bundle-allowlist"],
167
- boot: "hot",
168
- bootms: 18,
169
- gpu: false,
170
- network: true,
171
- mime: "application/vnd.devthink.run+json",
172
- },
173
- {
174
- id: "runner-babel",
175
- label: "babel transpile",
176
- family: "packages",
177
- isolation: "process",
178
- state: "live",
179
- drivers: ["babel"],
180
- hardening: ["plugin-allowlist"],
181
- boot: "hot",
182
- bootms: 15,
183
- gpu: false,
184
- network: false,
185
- mime: "application/vnd.devthink.run+json",
186
- },
187
- {
188
- id: "runner-wasm",
189
- label: "wasm and wasi",
190
- family: "wasm",
191
- isolation: "process",
192
- state: "live",
193
- drivers: ["wasmer", "wasmedge"],
194
- hardening: ["capability-imports"],
195
- boot: "hot",
196
- bootms: 15,
197
- gpu: false,
198
- network: false,
199
- mime: "application/wasm",
200
- },
201
- {
202
- id: "runner-serverless",
203
- label: "v8 isolates",
204
- family: "runner",
205
- isolation: "process",
206
- state: "live",
207
- drivers: ["v8"],
208
- hardening: ["no-fs", "cpu-quota"],
209
- boot: "hot",
210
- bootms: 8,
211
- gpu: false,
212
- network: true,
213
- mime: "application/vnd.devthink.run+json",
214
- },
215
- // the language family: the polyglot toolchains the engine mounts inside
216
- // the sandbox (every runner documented by its driver set — the exec lane
217
- // drives each through the host runtime, the honest probe answers per host)
218
- {
219
- id: "language-python",
220
- label: "cpython runtime",
221
- family: "language",
222
- isolation: "process",
223
- state: "live",
224
- drivers: ["python3"],
225
- hardening: ["package-allowlist"],
226
- boot: "hot",
227
- bootms: 12,
228
- gpu: false,
229
- network: true,
230
- mime: "application/vnd.devthink.run+json",
231
- },
232
- {
233
- id: "language-go",
234
- label: "golang toolchain",
235
- family: "language",
236
- isolation: "process",
237
- state: "live",
238
- drivers: ["go"],
239
- hardening: ["gopath-jail"],
240
- boot: "hot",
241
- bootms: 15,
242
- gpu: false,
243
- network: true,
244
- mime: "application/vnd.devthink.run+json",
245
- },
246
- {
247
- id: "language-rust",
248
- label: "rustc toolchain",
249
- family: "language",
250
- isolation: "process",
251
- state: "live",
252
- drivers: ["rustc"],
253
- hardening: ["crate-allowlist"],
254
- boot: "hot",
255
- bootms: 18,
256
- gpu: false,
257
- network: true,
258
- mime: "application/vnd.devthink.run+json",
259
- },
260
- {
261
- id: "language-cargo",
262
- label: "cargo builds",
263
- family: "language",
264
- isolation: "process",
265
- state: "live",
266
- drivers: ["cargo"],
267
- hardening: ["crate-allowlist"],
268
- boot: "hot",
269
- bootms: 20,
270
- gpu: false,
271
- network: true,
272
- mime: "application/vnd.devthink.run+json",
273
- },
274
- {
275
- id: "language-v",
276
- label: "v compiler",
277
- family: "language",
278
- isolation: "process",
279
- state: "live",
280
- drivers: ["v"],
281
- hardening: ["package-allowlist"],
282
- boot: "hot",
283
- bootms: 15,
284
- gpu: false,
285
- network: true,
286
- mime: "application/vnd.devthink.run+json",
287
- },
288
- {
289
- id: "language-java",
290
- label: "jdk runtime",
291
- family: "language",
292
- isolation: "process",
293
- state: "live",
294
- drivers: ["java", "javac"],
295
- hardening: ["security-manager"],
296
- boot: "warm",
297
- bootms: 200,
298
- gpu: false,
299
- network: true,
300
- mime: "application/vnd.devthink.run+json",
301
- },
302
- {
303
- id: "language-dotnet",
304
- label: "dotnet runtime",
305
- family: "language",
306
- isolation: "process",
307
- state: "live",
308
- drivers: ["dotnet"],
309
- hardening: ["assembly-allowlist"],
310
- boot: "warm",
311
- bootms: 150,
312
- gpu: false,
313
- network: true,
314
- mime: "application/vnd.devthink.run+json",
315
- },
316
- {
317
- id: "language-ruby",
318
- label: "ruby interpreter",
319
- family: "language",
320
- isolation: "process",
321
- state: "live",
322
- drivers: ["ruby"],
323
- hardening: ["gem-allowlist"],
324
- boot: "hot",
325
- bootms: 12,
326
- gpu: false,
327
- network: true,
328
- mime: "application/vnd.devthink.run+json",
329
- },
330
- {
331
- id: "language-php",
332
- label: "php interpreter",
333
- family: "language",
334
- isolation: "process",
335
- state: "live",
336
- drivers: ["php"],
337
- hardening: ["ini-lockdown"],
338
- boot: "hot",
339
- bootms: 12,
340
- gpu: false,
341
- network: true,
342
- mime: "application/vnd.devthink.run+json",
343
- },
344
- {
345
- id: "language-lua",
346
- label: "lua interpreter",
347
- family: "language",
348
- isolation: "process",
349
- state: "live",
350
- drivers: ["lua"],
351
- hardening: ["sandbox-env"],
352
- boot: "hot",
353
- bootms: 8,
354
- gpu: false,
355
- network: false,
356
- mime: "application/vnd.devthink.run+json",
357
- },
358
- {
359
- id: "language-zig",
360
- label: "zig toolchain",
361
- family: "language",
362
- isolation: "process",
363
- state: "live",
364
- drivers: ["zig"],
365
- hardening: ["package-allowlist"],
366
- boot: "hot",
367
- bootms: 15,
368
- gpu: false,
369
- network: true,
370
- mime: "application/vnd.devthink.run+json",
371
- },
372
- {
373
- id: "language-nim",
374
- label: "nim compiler",
375
- family: "language",
376
- isolation: "process",
377
- state: "live",
378
- drivers: ["nim"],
379
- hardening: ["package-allowlist"],
380
- boot: "hot",
381
- bootms: 15,
382
- gpu: false,
383
- network: true,
384
- mime: "application/vnd.devthink.run+json",
385
- },
386
- // the runtime extensions of the runner family: the heavyweight virtual
387
- // machines and the edge runtimes the join resolves beside the v8 isolate
388
- {
389
- id: "runtime-jvm",
390
- label: "jvm hotspot",
391
- family: "runner",
392
- isolation: "process",
393
- state: "live",
394
- drivers: ["jvm", "jlink"],
395
- hardening: ["security-manager"],
396
- boot: "warm",
397
- bootms: 250,
398
- gpu: false,
399
- network: true,
400
- mime: "application/vnd.devthink.run+json",
401
- },
402
- {
403
- id: "runtime-clr",
404
- label: "clr runtime",
405
- family: "runner",
406
- isolation: "process",
407
- state: "live",
408
- drivers: ["clr"],
409
- hardening: ["assembly-allowlist"],
410
- boot: "warm",
411
- bootms: 200,
412
- gpu: false,
413
- network: true,
414
- mime: "application/vnd.devthink.run+json",
415
- },
416
- {
417
- id: "runtime-workerd",
418
- label: "workerd runtime",
419
- family: "runner",
420
- isolation: "process",
421
- state: "live",
422
- drivers: ["workerd"],
423
- hardening: ["no-fs", "cpu-quota"],
424
- boot: "hot",
425
- bootms: 10,
426
- gpu: false,
427
- network: true,
428
- mime: "application/vnd.devthink.run+json",
429
- },
430
- {
431
- id: "runner-wasi",
432
- label: "wasi preview",
433
- family: "wasm",
434
- isolation: "process",
435
- state: "live",
436
- drivers: ["wasmtime"],
437
- hardening: ["capability-imports"],
438
- boot: "hot",
439
- bootms: 15,
440
- gpu: false,
441
- network: false,
442
- mime: "application/wasm",
443
- },
444
- // the container family: docker hardened, the profile pair and ghcr immutable
445
- {
446
- id: "container-docker",
447
- label: "docker hardened",
448
- family: "container",
449
- isolation: "namespace",
450
- state: "live",
451
- drivers: ["docker"],
452
- hardening: ["no-network", "dropped-caps", "read-only-root", "pid-limit"],
453
- boot: "warm",
454
- bootms: 400,
455
- gpu: false,
456
- network: false,
457
- mime: "application/vnd.devthink.container+json",
458
- },
459
- {
460
- id: "container-max",
461
- label: "docker max profile",
462
- family: "container",
463
- isolation: "namespace",
464
- state: "live",
465
- drivers: ["docker"],
466
- hardening: ["no-network", "dropped-caps", "read-only-root"],
467
- boot: "warm",
468
- bootms: 600,
469
- gpu: false,
470
- network: false,
471
- mime: "application/vnd.devthink.container+json",
472
- },
473
- {
474
- id: "container-lite",
475
- label: "docker lite profile",
476
- family: "container",
477
- isolation: "namespace",
478
- state: "live",
479
- drivers: ["docker"],
480
- hardening: ["no-network", "dropped-caps", "read-only-root", "pid-limit", "memory-cap"],
481
- boot: "warm",
482
- bootms: 300,
483
- gpu: false,
484
- network: false,
485
- mime: "application/vnd.devthink.container+json",
486
- },
487
- {
488
- id: "container-ghcr",
489
- label: "ghcr immutable",
490
- family: "container",
491
- isolation: "namespace",
492
- state: "live",
493
- drivers: ["docker", "ghcr"],
494
- hardening: ["immutable-root", "uuid-instance"],
495
- boot: "warm",
496
- bootms: 450,
497
- gpu: false,
498
- network: true,
499
- mime: "application/vnd.devthink.container+json",
500
- },
501
- {
502
- id: "container-runsc",
503
- label: "gvisor sandboxed",
504
- family: "container",
505
- isolation: "namespace",
506
- state: "host",
507
- drivers: ["runsc"],
508
- hardening: ["user-kernel"],
509
- boot: "warm",
510
- bootms: BOOTLADDER.warm,
511
- gpu: false,
512
- network: true,
513
- mime: "application/vnd.devthink.container+json",
514
- },
515
- // the sandbox family: the os jails short of a container daemon (the
516
- // isolation ladder the engine walks below the microvm)
517
- {
518
- id: "sandbox-bubblewrap",
519
- label: "bubblewrap jail",
520
- family: "sandbox",
521
- isolation: "namespace",
522
- state: "live",
523
- drivers: ["bwrap"],
524
- hardening: ["user-namespace"],
525
- boot: "warm",
526
- bootms: 40,
527
- gpu: false,
528
- network: false,
529
- mime: "application/vnd.devthink.sandbox+json",
530
- },
531
- {
532
- id: "sandbox-nsjail",
533
- label: "nsjail cell",
534
- family: "sandbox",
535
- isolation: "namespace",
536
- state: "live",
537
- drivers: ["nsjail"],
538
- hardening: ["cgroup-limit", "seccomp"],
539
- boot: "warm",
540
- bootms: 60,
541
- gpu: false,
542
- network: false,
543
- mime: "application/vnd.devthink.sandbox+json",
544
- },
545
- {
546
- id: "sandbox-chroot",
547
- label: "chroot root",
548
- family: "sandbox",
549
- isolation: "process",
550
- state: "live",
551
- drivers: ["chroot"],
552
- hardening: ["read-only-root"],
553
- boot: "hot",
554
- bootms: 10,
555
- gpu: false,
556
- network: false,
557
- mime: "application/vnd.devthink.sandbox+json",
558
- },
559
- // the container extensions: the rootless and the oci runtimes the lane
560
- // can drive beside the docker daemon
561
- {
562
- id: "container-podman",
563
- label: "podman rootless",
564
- family: "container",
565
- isolation: "namespace",
566
- state: "live",
567
- drivers: ["podman"],
568
- hardening: ["rootless", "no-network", "dropped-caps"],
569
- boot: "warm",
570
- bootms: 350,
571
- gpu: false,
572
- network: false,
573
- mime: "application/vnd.devthink.container+json",
574
- },
575
- {
576
- id: "container-containerd",
577
- label: "containerd supervisor",
578
- family: "container",
579
- isolation: "namespace",
580
- state: "live",
581
- drivers: ["containerd"],
582
- hardening: ["no-network", "dropped-caps"],
583
- boot: "warm",
584
- bootms: 300,
585
- gpu: false,
586
- network: false,
587
- mime: "application/vnd.devthink.container+json",
588
- },
589
- {
590
- id: "container-runc",
591
- label: "runc process",
592
- family: "container",
593
- isolation: "namespace",
594
- state: "live",
595
- drivers: ["runc"],
596
- hardening: ["no-network", "dropped-caps", "read-only-root"],
597
- boot: "warm",
598
- bootms: 100,
599
- gpu: false,
600
- network: false,
601
- mime: "application/vnd.devthink.container+json",
602
- },
603
- {
604
- id: "container-crun",
605
- label: "crun process",
606
- family: "container",
607
- isolation: "namespace",
608
- state: "live",
609
- drivers: ["crun"],
610
- hardening: ["no-network", "dropped-caps", "read-only-root"],
611
- boot: "warm",
612
- bootms: 90,
613
- gpu: false,
614
- network: false,
615
- mime: "application/vnd.devthink.container+json",
616
- },
617
- // the microvm family: per workflow, the e2b form
618
- {
619
- id: "microvm-firecracker",
620
- label: "firecracker microvm",
621
- family: "microvm",
622
- isolation: "vm",
623
- state: "host",
624
- drivers: ["firecracker", "virtualcpu"],
625
- hardening: ["clean-rootfs", "injected-vcpu"],
626
- boot: "warm",
627
- bootms: 125,
628
- gpu: false,
629
- network: true,
630
- mime: "application/vnd.devthink.microvm+json",
631
- },
632
- {
633
- id: "microvm-gpuless",
634
- label: "gpuless render",
635
- family: "microvm",
636
- isolation: "vm",
637
- state: "live",
638
- drivers: ["mesa-llvmpipe", "lavapipe", "rusticl", "xvfb"],
639
- hardening: ["clean-rootfs"],
640
- boot: "warm",
641
- bootms: 500,
642
- gpu: true,
643
- network: true,
644
- mime: "application/vnd.devthink.microvm+json",
645
- },
646
- // the pod family: one pod per session (the competitor recipe)
647
- {
648
- id: "pod-session",
649
- label: "pod per session",
650
- family: "pod",
651
- isolation: "namespace",
652
- state: "host",
653
- drivers: ["k8s"],
654
- hardening: ["quota-check"],
655
- boot: "warm",
656
- bootms: 800,
657
- gpu: false,
658
- network: true,
659
- mime: "application/vnd.devthink.pod+json",
660
- },
661
- // the confidential family: attested compute
662
- {
663
- id: "confidential-sevsnp",
664
- label: "sev snp",
665
- family: "confidential",
666
- isolation: "hardware",
667
- state: "host",
668
- drivers: ["sev-snp", "tpm"],
669
- hardening: ["attestation"],
670
- boot: "cold",
671
- bootms: 1200,
672
- gpu: false,
673
- network: true,
674
- mime: "application/vnd.devthink.confidential+json",
675
- },
676
- {
677
- id: "confidential-tdx",
678
- label: "tdx",
679
- family: "confidential",
680
- isolation: "hardware",
681
- state: "host",
682
- drivers: ["tdx", "tpm"],
683
- hardening: ["attestation"],
684
- boot: "cold",
685
- bootms: 1200,
686
- gpu: false,
687
- network: true,
688
- mime: "application/vnd.devthink.confidential+json",
689
- },
690
- // the emulator family: qemu full emulation
691
- {
692
- id: "emulator-qemu",
693
- label: "qemu",
694
- family: "emulator",
695
- isolation: "vm",
696
- state: "host",
697
- drivers: ["qemu"],
698
- hardening: ["tcg"],
699
- boot: "cold",
700
- bootms: 900,
701
- gpu: false,
702
- network: true,
703
- mime: "application/vnd.devthink.emulator+json",
704
- },
705
- // the browser family: the sandbox-side browser (never the person's)
706
- {
707
- id: "browser-server",
708
- label: "virtual browser",
709
- family: "browser",
710
- isolation: "namespace",
711
- state: "host",
712
- drivers: ["chromium-headless", "playwright"],
713
- hardening: ["sandboxed-tabs"],
714
- boot: "warm",
715
- bootms: 300,
716
- gpu: false,
717
- network: true,
718
- mime: "application/vnd.devthink.browser+json",
719
- },
720
- {
721
- id: "browser-webcontainer",
722
- label: "webcontainer server side",
723
- family: "browser",
724
- isolation: "namespace",
725
- state: "live",
726
- drivers: ["node", "wasm"],
727
- hardening: ["opt-in"],
728
- boot: "warm",
729
- bootms: 350,
730
- gpu: false,
731
- network: true,
732
- mime: "application/vnd.devthink.browser+json",
733
- },
734
- // the screen family extensions: the virtual displays the sandboxed ui
735
- // renders through (never the visitor display)
736
- {
737
- id: "screen-xvfb",
738
- label: "xvfb display",
739
- family: "screen",
740
- isolation: "process",
741
- state: "live",
742
- drivers: ["xvfb"],
743
- hardening: ["headless-only"],
744
- boot: "hot",
745
- bootms: 20,
746
- gpu: false,
747
- network: false,
748
- mime: "application/vnd.devthink.screen+json",
749
- },
750
- {
751
- id: "screen-wayland",
752
- label: "wayland compositor",
753
- family: "screen",
754
- isolation: "process",
755
- state: "live",
756
- drivers: ["wayland", "wlroots"],
757
- hardening: ["headless-only"],
758
- boot: "warm",
759
- bootms: 150,
760
- gpu: false,
761
- network: false,
762
- mime: "application/vnd.devthink.screen+json",
763
- },
764
- // the mobile family: the os images of the mobile lane
765
- {
766
- id: "mobile-capacitor",
767
- label: "capacitor",
768
- family: "mobile",
769
- isolation: "namespace",
770
- state: "host",
771
- drivers: ["capacitor"],
772
- hardening: ["emulated-device"],
773
- boot: "warm",
774
- bootms: 600,
775
- gpu: false,
776
- network: true,
777
- mime: "application/vnd.devthink.mobile+json",
778
- },
779
- {
780
- id: "mobile-termux",
781
- label: "termux",
782
- family: "mobile",
783
- isolation: "namespace",
784
- state: "live",
785
- drivers: ["termux"],
786
- hardening: ["emulated-device"],
787
- boot: "warm",
788
- bootms: 550,
789
- gpu: false,
790
- network: true,
791
- mime: "application/vnd.devthink.mobile+json",
792
- },
793
- {
794
- id: "mobile-postmarketos",
795
- label: "postmarketos",
796
- family: "mobile",
797
- isolation: "vm",
798
- state: "host",
799
- drivers: ["qemu"],
800
- hardening: ["emulated-device"],
801
- boot: "cold",
802
- bootms: 1000,
803
- gpu: false,
804
- network: true,
805
- mime: "application/vnd.devthink.mobile+json",
806
- },
807
- // the fs and delivery families: the vfs, the git objects and the cdn lane
808
- {
809
- id: "fs-vfs",
810
- label: "vfs",
811
- family: "fs",
812
- isolation: "process",
813
- state: "live",
814
- drivers: ["vfs"],
815
- hardening: ["chunk-catalog"],
816
- boot: "hot",
817
- bootms: 5,
818
- gpu: false,
819
- network: false,
820
- mime: "application/vnd.devthink.vfs+json",
821
- },
822
- {
823
- id: "fs-gitobjects",
824
- label: "git objects vfs",
825
- family: "fs",
826
- isolation: "process",
827
- state: "live",
828
- drivers: ["git", "vfs"],
829
- hardening: ["content-hash", "chunk-catalog"],
830
- boot: "hot",
831
- bootms: 10,
832
- gpu: false,
833
- network: true,
834
- mime: "application/vnd.devthink.vfs+json",
835
- },
836
- {
837
- id: "delivery-cdn",
838
- label: "cdn mirror",
839
- family: "delivery",
840
- isolation: "process",
841
- state: "live",
842
- drivers: ["vfs", "cdn"],
843
- hardening: ["inside-sandbox-fetch"],
844
- boot: "hot",
845
- bootms: 5,
846
- gpu: false,
847
- network: true,
848
- mime: "application/vnd.devthink.cdn+json",
849
- },
850
- // the delivery protocol extensions: the wire lanes the streamed answer
851
- // rides (the socket surface the self-hosted engine speaks)
852
- {
853
- id: "delivery-wss",
854
- label: "websocket streams",
855
- family: "delivery",
856
- isolation: "process",
857
- state: "live",
858
- drivers: ["wss"],
859
- hardening: ["origin-pin"],
860
- boot: "hot",
861
- bootms: 5,
862
- gpu: false,
863
- network: true,
864
- mime: "application/vnd.devthink.cdn+json",
865
- },
866
- {
867
- id: "delivery-webtransport",
868
- label: "webtransport lane",
869
- family: "delivery",
870
- isolation: "process",
871
- state: "live",
872
- drivers: ["webtransport", "http3"],
873
- hardening: ["origin-pin"],
874
- boot: "hot",
875
- bootms: 8,
876
- gpu: false,
877
- network: true,
878
- mime: "application/vnd.devthink.cdn+json",
879
- },
880
- {
881
- id: "delivery-grpc",
882
- label: "grpc lane",
883
- family: "delivery",
884
- isolation: "process",
885
- state: "live",
886
- drivers: ["grpc"],
887
- hardening: ["auth-token"],
888
- boot: "hot",
889
- bootms: 8,
890
- gpu: false,
891
- network: true,
892
- mime: "application/vnd.devthink.cdn+json",
893
- },
894
- {
895
- id: "delivery-capnproto",
896
- label: "capnproto lane",
897
- family: "delivery",
898
- isolation: "process",
899
- state: "live",
900
- drivers: ["capnproto"],
901
- hardening: ["auth-token"],
902
- boot: "hot",
903
- bootms: 6,
904
- gpu: false,
905
- network: true,
906
- mime: "application/vnd.devthink.cdn+json",
907
- },
908
- // the storage family: the self-hosted vault backends (the competitor
909
- // recipe of the hosted buckets — sqlite and the wire protocols and the
910
- // s3-compatible daemons, every one a lane may mount behind the vault)
911
- {
912
- id: "storage-sqlite",
913
- label: "sqlite vault",
914
- family: "storage",
915
- isolation: "process",
916
- state: "live",
917
- drivers: ["sqlite"],
918
- hardening: ["file-quota"],
919
- boot: "hot",
920
- bootms: 8,
921
- gpu: false,
922
- network: false,
923
- mime: "application/vnd.devthink.storage+json",
924
- },
925
- {
926
- id: "storage-libsql",
927
- label: "libsql vault",
928
- family: "storage",
929
- isolation: "process",
930
- state: "live",
931
- drivers: ["libsql"],
932
- hardening: ["file-quota"],
933
- boot: "hot",
934
- bootms: 10,
935
- gpu: false,
936
- network: true,
937
- mime: "application/vnd.devthink.storage+json",
938
- },
939
- {
940
- id: "storage-mysql",
941
- label: "mysql wire vault",
942
- family: "storage",
943
- isolation: "process",
944
- state: "live",
945
- drivers: ["mysql-wire"],
946
- hardening: ["auth-token", "row-quota"],
947
- boot: "warm",
948
- bootms: 200,
949
- gpu: false,
950
- network: true,
951
- mime: "application/vnd.devthink.storage+json",
952
- },
953
- {
954
- id: "storage-postgres",
955
- label: "postgres wire vault",
956
- family: "storage",
957
- isolation: "process",
958
- state: "live",
959
- drivers: ["postgres-wire"],
960
- hardening: ["auth-token", "row-quota"],
961
- boot: "warm",
962
- bootms: 200,
963
- gpu: false,
964
- network: true,
965
- mime: "application/vnd.devthink.storage+json",
966
- },
967
- {
968
- id: "storage-s3",
969
- label: "s3 compatible vault",
970
- family: "storage",
971
- isolation: "process",
972
- state: "live",
973
- drivers: ["s3-api"],
974
- hardening: ["bucket-quota"],
975
- boot: "warm",
976
- bootms: 100,
977
- gpu: false,
978
- network: true,
979
- mime: "application/vnd.devthink.storage+json",
980
- },
981
- {
982
- id: "storage-minio",
983
- label: "minio vault",
984
- family: "storage",
985
- isolation: "process",
986
- state: "live",
987
- drivers: ["minio"],
988
- hardening: ["bucket-quota"],
989
- boot: "warm",
990
- bootms: 300,
991
- gpu: false,
992
- network: true,
993
- mime: "application/vnd.devthink.storage+json",
994
- },
995
- {
996
- id: "storage-garage",
997
- label: "garage vault",
998
- family: "storage",
999
- isolation: "process",
1000
- state: "live",
1001
- drivers: ["garage"],
1002
- hardening: ["bucket-quota"],
1003
- boot: "warm",
1004
- bootms: 300,
1005
- gpu: false,
1006
- network: true,
1007
- mime: "application/vnd.devthink.storage+json",
1008
- },
1009
- // the network family: the resolution and the private tunnels the engine
1010
- // opens for the sandbox (the hardened default stays off until a lane
1011
- // asks)
1012
- {
1013
- id: "network-dns",
1014
- label: "dns resolver",
1015
- family: "network",
1016
- isolation: "process",
1017
- state: "live",
1018
- drivers: ["dns"],
1019
- hardening: ["resolver-allowlist"],
1020
- boot: "hot",
1021
- bootms: 5,
1022
- gpu: false,
1023
- network: true,
1024
- mime: "application/vnd.devthink.net+json",
1025
- },
1026
- {
1027
- id: "network-doh",
1028
- label: "dns over https",
1029
- family: "network",
1030
- isolation: "process",
1031
- state: "live",
1032
- drivers: ["doh"],
1033
- hardening: ["resolver-allowlist"],
1034
- boot: "hot",
1035
- bootms: 8,
1036
- gpu: false,
1037
- network: true,
1038
- mime: "application/vnd.devthink.net+json",
1039
- },
1040
- {
1041
- id: "network-tor",
1042
- label: "tor onion lane",
1043
- family: "network",
1044
- isolation: "process",
1045
- state: "live",
1046
- drivers: ["tor"],
1047
- hardening: ["circuit-limit"],
1048
- boot: "warm",
1049
- bootms: 800,
1050
- gpu: false,
1051
- network: true,
1052
- mime: "application/vnd.devthink.net+json",
1053
- },
1054
- {
1055
- id: "network-i2p",
1056
- label: "i2p tunnel",
1057
- family: "network",
1058
- isolation: "process",
1059
- state: "live",
1060
- drivers: ["i2p"],
1061
- hardening: ["tunnel-limit"],
1062
- boot: "warm",
1063
- bootms: 700,
1064
- gpu: false,
1065
- network: true,
1066
- mime: "application/vnd.devthink.net+json",
1067
- },
1068
- {
1069
- id: "network-wireguard",
1070
- label: "wireguard tunnel",
1071
- family: "network",
1072
- isolation: "process",
1073
- state: "live",
1074
- drivers: ["wireguard"],
1075
- hardening: ["peer-allowlist"],
1076
- boot: "warm",
1077
- bootms: 100,
1078
- gpu: false,
1079
- network: true,
1080
- mime: "application/vnd.devthink.net+json",
1081
- },
1082
- // the ram family: the storage-to-ram bridge, the kernel recipes that swap,
1083
- // map and overlay the same bytes between use flags (the memory ladder the
1084
- // corpus records: the tmpfs at the microsecond, the memory map at five,
1085
- // the compressed ram at five hundred)
1086
- {
1087
- id: "ram-tmpfs",
1088
- label: "tmpfs",
1089
- family: "ram",
1090
- isolation: "process",
1091
- state: "live",
1092
- drivers: ["tmpfs"],
1093
- hardening: ["oom-guard"],
1094
- boot: "hot",
1095
- bootms: 5,
1096
- gpu: false,
1097
- network: false,
1098
- mime: "application/vnd.devthink.ram+json",
1099
- },
1100
- {
1101
- id: "ram-mmap",
1102
- label: "zero copy map",
1103
- family: "ram",
1104
- isolation: "process",
1105
- state: "live",
1106
- drivers: ["mmap"],
1107
- hardening: ["oom-guard"],
1108
- boot: "hot",
1109
- bootms: 5,
1110
- gpu: false,
1111
- network: false,
1112
- mime: "application/vnd.devthink.ram+json",
1113
- },
1114
- {
1115
- id: "ram-overlayfs",
1116
- label: "overlayfs",
1117
- family: "ram",
1118
- isolation: "process",
1119
- state: "live",
1120
- drivers: ["overlayfs"],
1121
- hardening: ["oom-guard"],
1122
- boot: "hot",
1123
- bootms: 10,
1124
- gpu: false,
1125
- network: false,
1126
- mime: "application/vnd.devthink.ram+json",
1127
- },
1128
- {
1129
- id: "ram-loopram",
1130
- label: "loop ram disk",
1131
- family: "ram",
1132
- isolation: "process",
1133
- state: "live",
1134
- drivers: ["loop", "tmpfs"],
1135
- hardening: ["oom-guard"],
1136
- boot: "hot",
1137
- bootms: 15,
1138
- gpu: false,
1139
- network: false,
1140
- mime: "application/vnd.devthink.ram+json",
1141
- },
1142
- {
1143
- id: "ram-gitram",
1144
- label: "git in ram",
1145
- family: "ram",
1146
- isolation: "process",
1147
- state: "live",
1148
- drivers: ["git", "mmap"],
1149
- hardening: ["oom-guard"],
1150
- boot: "hot",
1151
- bootms: 20,
1152
- gpu: false,
1153
- network: false,
1154
- mime: "application/vnd.devthink.ram+json",
1155
- },
1156
- {
1157
- id: "ram-zram",
1158
- label: "zram zstd",
1159
- family: "ram",
1160
- isolation: "process",
1161
- state: "live",
1162
- drivers: ["zram", "zstd"],
1163
- hardening: ["oom-guard"],
1164
- boot: "hot",
1165
- bootms: 25,
1166
- gpu: false,
1167
- network: false,
1168
- mime: "application/vnd.devthink.ram+json",
1169
- },
1170
- {
1171
- id: "ram-zswap",
1172
- label: "zswap",
1173
- family: "ram",
1174
- isolation: "process",
1175
- state: "live",
1176
- drivers: ["zswap"],
1177
- hardening: ["oom-guard"],
1178
- boot: "hot",
1179
- bootms: 25,
1180
- gpu: false,
1181
- network: false,
1182
- mime: "application/vnd.devthink.ram+json",
1183
- },
1184
- {
1185
- id: "ram-swapfile",
1186
- label: "swapfile",
1187
- family: "ram",
1188
- isolation: "process",
1189
- state: "live",
1190
- drivers: ["swapfile"],
1191
- hardening: ["oom-guard"],
1192
- boot: "hot",
1193
- bootms: 25,
1194
- gpu: false,
1195
- network: false,
1196
- mime: "application/vnd.devthink.ram+json",
1197
- },
1198
- // the build family: the build graphs the engine runs inside the sandbox
1199
- // (the artifact lane the repositories compile through)
1200
- {
1201
- id: "build-make",
1202
- label: "make builds",
1203
- family: "build",
1204
- isolation: "process",
1205
- state: "live",
1206
- drivers: ["make"],
1207
- hardening: ["recipe-allowlist"],
1208
- boot: "hot",
1209
- bootms: 10,
1210
- gpu: false,
1211
- network: false,
1212
- mime: "application/vnd.devthink.build+json",
1213
- },
1214
- {
1215
- id: "build-bazel",
1216
- label: "bazel builds",
1217
- family: "build",
1218
- isolation: "process",
1219
- state: "live",
1220
- drivers: ["bazel"],
1221
- hardening: ["remote-cache-pin"],
1222
- boot: "warm",
1223
- bootms: 500,
1224
- gpu: false,
1225
- network: true,
1226
- mime: "application/vnd.devthink.build+json",
1227
- },
1228
- {
1229
- id: "build-buck",
1230
- label: "buck builds",
1231
- family: "build",
1232
- isolation: "process",
1233
- state: "live",
1234
- drivers: ["buck"],
1235
- hardening: ["remote-cache-pin"],
1236
- boot: "warm",
1237
- bootms: 400,
1238
- gpu: false,
1239
- network: true,
1240
- mime: "application/vnd.devthink.build+json",
1241
- },
1242
- {
1243
- id: "build-ninja",
1244
- label: "ninja builds",
1245
- family: "build",
1246
- isolation: "process",
1247
- state: "live",
1248
- drivers: ["ninja"],
1249
- hardening: ["recipe-allowlist"],
1250
- boot: "hot",
1251
- bootms: 15,
1252
- gpu: false,
1253
- network: false,
1254
- mime: "application/vnd.devthink.build+json",
1255
- },
1256
- {
1257
- id: "build-turborepo",
1258
- label: "turborepo builds",
1259
- family: "build",
1260
- isolation: "process",
1261
- state: "live",
1262
- drivers: ["turbo"],
1263
- hardening: ["remote-cache-pin"],
1264
- boot: "warm",
1265
- bootms: 300,
1266
- gpu: false,
1267
- network: true,
1268
- mime: "application/vnd.devthink.build+json",
1269
- },
1270
- // the ci family: the self-hosted runners the engine drives for the
1271
- // repository pipelines (no hosted ci dependency — the runner rides the
1272
- // same self-hosted law)
1273
- {
1274
- id: "ci-actions",
1275
- label: "actions runner",
1276
- family: "ci",
1277
- isolation: "process",
1278
- state: "live",
1279
- drivers: ["actions-runner"],
1280
- hardening: ["workflow-allowlist"],
1281
- boot: "warm",
1282
- bootms: 400,
1283
- gpu: false,
1284
- network: true,
1285
- mime: "application/vnd.devthink.ci+json",
1286
- },
1287
- {
1288
- id: "ci-gitlab",
1289
- label: "gitlab runner",
1290
- family: "ci",
1291
- isolation: "process",
1292
- state: "live",
1293
- drivers: ["gitlab-runner"],
1294
- hardening: ["workflow-allowlist"],
1295
- boot: "warm",
1296
- bootms: 400,
1297
- gpu: false,
1298
- network: true,
1299
- mime: "application/vnd.devthink.ci+json",
1300
- },
1301
- // the gpu family: the virtual graphics the machine may present (the
1302
- // declared slice — the record never claims a host gpu it does not mount)
1303
- {
1304
- id: "gpu-virgl",
1305
- label: "virgl render",
1306
- family: "gpu",
1307
- isolation: "vm",
1308
- state: "live",
1309
- drivers: ["virgl", "virtio-gpu"],
1310
- hardening: ["context-quota"],
1311
- boot: "warm",
1312
- bootms: 400,
1313
- gpu: true,
1314
- network: true,
1315
- mime: "application/vnd.devthink.gpu+json",
1316
- },
1317
- // the local family: the explicit opt-in (the only lane that may touch the
1318
- // visitor machine, and only under declared consent)
1319
- {
1320
- id: "local-optin",
1321
- label: "local opt in",
1322
- family: "local",
1323
- isolation: "process",
1324
- state: "live",
1325
- drivers: [],
1326
- hardening: ["explicit-consent"],
1327
- boot: "hot",
1328
- bootms: 10,
1329
- gpu: false,
1330
- network: false,
1331
- mime: "application/vnd.devthink.local+json",
1332
- },
1333
- ]);
1334
- /** planreport — the honest census of the registry against the ninety plan:
1335
- * the counts per state and the plan verdict, computed from the records
1336
- * (never hardcoded, so the report cannot drift from the catalog). */
1337
- export function planreport() {
1338
- const counts = { live: 0, host: 0, planned: 0 };
1339
- for (const modality of MODALITIES)
1340
- counts[modality.state] += 1;
1341
- return {
1342
- plancount: MODALITYPLANCOUNT,
1343
- catalogcount: MODALITIES.length,
1344
- live: counts.live,
1345
- host: counts.host,
1346
- planned: counts.planned,
1347
- plananswered: MODALITIES.length >= MODALITYPLANCOUNT,
1348
- };
1349
- }
1350
- /**
1351
- * Resolves the modality join for a request: the records that satisfy every
1352
- * demand, ordered by boot cost then isolation depth — the platform answers
1353
- * the join, the person never names a modality (the nuclear law).
1354
- *
1355
- * @param request the workload demands.
1356
- * @returns the modality records that satisfy the join, best candidate first.
1357
- */
1358
- export function resolvejoin(request) {
1359
- const budget = request.bootbudget ?? BOOTLADDER.cold;
1360
- const order = { process: 0, namespace: 1, vm: 2, hardware: 3 };
1361
- return MODALITIES.filter((modality) => {
1362
- if (request.family && modality.family !== request.family)
1363
- return false;
1364
- if (request.gpu && !modality.gpu)
1365
- return false;
1366
- if (request.network && !modality.network)
1367
- return false;
1368
- if (request.isolation && order[modality.isolation] < order[request.isolation])
1369
- return false;
1370
- if (modality.bootms > budget)
1371
- return false;
1372
- // the lite base keeps the heavy machine images out of the answer
1373
- if (request.base === "lite" && modality.isolation === "hardware")
1374
- return false;
1375
- return true;
1376
- }).sort((a, b) => a.bootms - b.bootms || order[a.isolation] - order[b.isolation]);
1377
- }
1378
- /**
1379
- * Answers one modality by id (the config rows and the api carry ids).
1380
- *
1381
- * @param id the modality id.
1382
- * @returns the record, or undefined when the id is unknown.
1383
- */
1384
- export function getmodality(id) {
1385
- return MODALITIES.find((modality) => modality.id === id);
1386
- }