forgecad 0.9.14 → 0.9.15

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 (219) hide show
  1. package/LICENSE +6 -4
  2. package/README.md +8 -4
  3. package/dist/assets/{AdminPage-eWGs2K6H.js → AdminPage-CDyGUinA.js} +2 -2
  4. package/dist/assets/{BenchmarkPage-CTrLKfpo.js → BenchmarkPage-DfPMY_-d.js} +4 -15
  5. package/dist/assets/{BlogPage-5nPesyds.js → BlogPage-kF0fkdJT.js} +2 -2
  6. package/dist/assets/{DocsPage-C4Y3nbYc.js → DocsPage-B954L3YN.js} +9 -3
  7. package/dist/assets/EditorApp-Beb-IZ0y.js +14014 -0
  8. package/dist/assets/{EditorApp-BAnckbsk.css → EditorApp-CuDLxKqL.css} +698 -0
  9. package/dist/assets/{EmbedViewer-C8fB4n5U.js → EmbedViewer-C77B-TrF.js} +3 -3
  10. package/dist/assets/{LandingPageProofDriven-jSz0LaMM.js → LandingPageProofDriven-Cr6fXMDj.js} +35 -37
  11. package/dist/assets/LegalPage-BRlScr9A.css +91 -0
  12. package/dist/assets/LegalPage-Dzklqmmg.js +39 -0
  13. package/dist/assets/{PricingPage-BMedqFef.css → PricingPage-BPF6HKyO.css} +25 -0
  14. package/dist/assets/{PricingPage-B83B90zh.js → PricingPage-zWXkvlwl.js} +19 -19
  15. package/dist/assets/{SettingsPage-DY889pcu.js → SettingsPage-Bz0of4KQ.js} +2 -2
  16. package/dist/assets/app-CE3sYcV7.css +3890 -0
  17. package/dist/assets/{app-bEww1ic4.js → app-D3kDkggg.js} +2293 -946
  18. package/dist/assets/cli/{render-Cho2uKG_.js → render-DSY3mMQa.js} +337 -7
  19. package/dist/assets/{constructionHistoryWorker-HYwzJY4m.js → constructionHistoryWorker-gpDo-uH2.js} +927 -243
  20. package/dist/assets/{evalWorker-CjQwJSE-.js → evalWorker-CU0Ke6DP.js} +7800 -4164
  21. package/dist/assets/{forgecad_geometry-CH2nvuLA.js → forgecad_geometry-Dgceylq9.js} +43 -1
  22. package/dist/assets/forgecad_geometry_bg-dD4RNQF1.wasm +0 -0
  23. package/dist/assets/{inspectWorker-DeRnMVv1.js → inspectWorker-COyp8XXA.js} +927 -243
  24. package/dist/assets/{javascript-70-4uGcz.js → javascript-1kQXfVaz.js} +1 -1
  25. package/dist/assets/landing-proof-driven-DiGqdtWa.js +18 -0
  26. package/dist/assets/{landing-proof-driven-oFYW6mjz.css → landing-proof-driven-ORyigZ6p.css} +13 -7
  27. package/dist/assets/legalContent-ZfFGMmi4.js +251 -0
  28. package/dist/assets/{manifold-CG9Fokx-.js → manifold-BRI5prcH.js} +1 -1
  29. package/dist/assets/{manifold-uRzgk5O8.js → manifold-C-3h2M7p.js} +2 -2
  30. package/dist/assets/{manifold-rmfAcdwF.js → manifold-DNkrUWpA.js} +1 -1
  31. package/dist/assets/{reportWorker-4cW_ZpoS.js → reportWorker-CdBz5bNg.js} +7538 -10857
  32. package/dist/assets/{scalar-sampling-budget-CfDiFvh7.js → scalar-sampling-budget-wJF98aY9.js} +6935 -4331
  33. package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-B-9VbLIs.js} +32 -1
  34. package/dist/assets/{solver-DuJAO8S6.js → solver-BZ9LPTHs.js} +1 -1
  35. package/dist/assets/solver_bg-DAHZJ_rw.wasm +0 -0
  36. package/dist/assets/{targets-D6PWsv6X.js → targets-B9sGB5nB.js} +1 -1
  37. package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
  38. package/dist/cli/render.html +1 -1
  39. package/dist/docs/index.html +2 -2
  40. package/dist/docs-raw/AI/ai-native-cad.md +50 -0
  41. package/dist/docs-raw/AI/usage.md +3 -12
  42. package/dist/docs-raw/CLI.md +30 -10
  43. package/dist/docs-raw/component-model.md +27 -11
  44. package/dist/docs-raw/generated/assembly.md +301 -212
  45. package/dist/docs-raw/generated/concepts.md +235 -237
  46. package/dist/docs-raw/generated/core.md +283 -6
  47. package/dist/docs-raw/generated/curves.md +274 -361
  48. package/dist/docs-raw/generated/lib.md +7 -1
  49. package/dist/docs-raw/generated/output.md +19 -4
  50. package/dist/docs-raw/generated/runtime-names.md +41 -0
  51. package/dist/docs-raw/generated/sdf.md +31 -0
  52. package/dist/docs-raw/generated/sheet-metal.md +9 -0
  53. package/dist/docs-raw/generated/sketch.md +44 -1
  54. package/dist/docs-raw/generated/viewport.md +11 -3
  55. package/dist/docs-raw/guides/coordinate-system.md +20 -16
  56. package/dist/docs-raw/guides/geometry-conventions.md +2 -2
  57. package/dist/docs-raw/guides/inspection-bundles.md +2 -1
  58. package/dist/docs-raw/guides/joint-design.md +24 -0
  59. package/dist/docs-raw/guides/positioning.md +13 -3
  60. package/dist/docs-raw/legal/privacy.md +63 -0
  61. package/dist/docs-raw/legal/software-license.md +55 -0
  62. package/dist/docs-raw/legal/terms.md +87 -0
  63. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +1 -1
  64. package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
  65. package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
  66. package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
  67. package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
  68. package/dist/docs-raw/skills/forgecad-lld.md +1 -1
  69. package/dist/docs-raw/skills/forgecad-make-a-model.md +1 -1
  70. package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
  71. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
  72. package/dist/docs-raw/skills/forgecad-project.md +1 -1
  73. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +1 -1
  74. package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
  75. package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
  76. package/dist/docs-raw/skills/forgecad.md +4 -3
  77. package/dist/index.html +40 -12
  78. package/dist/llms.txt +8 -0
  79. package/dist/site.webmanifest +1 -1
  80. package/dist/sitemap.xml +49 -13
  81. package/dist-cli/{check-compiler-U5SOPN7X.js → check-compiler-SDX5QIXI.js} +1 -2
  82. package/dist-cli/{check-query-propagation-XOKNSSYU.js → check-query-propagation-EAYEFT77.js} +1 -2
  83. package/dist-cli/{chunk-EXWGNL6K.js → chunk-N4O47JLF.js} +12540 -9046
  84. package/dist-cli/forgecad.js +1786 -679
  85. package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
  86. package/dist-cli/forgecad_geometry_bg.wasm +0 -0
  87. package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
  88. package/dist-cli/solver_bg.wasm +0 -0
  89. package/dist-skill/CONTEXT.md +1117 -721
  90. package/dist-skill/SKILL.md +3 -2
  91. package/dist-skill/docs/API/core/concepts.md +64 -1
  92. package/dist-skill/docs/CLI.md +30 -10
  93. package/dist-skill/docs/generated/assembly.md +277 -229
  94. package/dist-skill/docs/generated/core.md +283 -6
  95. package/dist-skill/docs/generated/curves.md +272 -362
  96. package/dist-skill/docs/generated/lib.md +7 -1
  97. package/dist-skill/docs/generated/output.md +19 -4
  98. package/dist-skill/docs/generated/runtime-names.md +41 -0
  99. package/dist-skill/docs/generated/sdf.md +31 -0
  100. package/dist-skill/docs/generated/sheet-metal.md +9 -0
  101. package/dist-skill/docs/generated/sketch.md +44 -2
  102. package/dist-skill/docs/generated/viewport.md +2 -87
  103. package/dist-skill/docs/guides/coordinate-system.md +20 -16
  104. package/dist-skill/docs/guides/geometry-conventions.md +2 -2
  105. package/dist-skill/docs/guides/inspection-bundles.md +2 -1
  106. package/dist-skill/docs/guides/joint-design.md +24 -0
  107. package/dist-skill/docs/guides/positioning.md +13 -3
  108. package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
  109. package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
  110. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
  111. package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
  112. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
  113. package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
  114. package/examples/api/assembly-kinematics-foundation.forge.js +65 -0
  115. package/examples/api/assembly-kinematics-four-bar.forge.js +115 -0
  116. package/examples/api/assembly-kinematics-limb.forge.js +116 -0
  117. package/examples/api/connector-frame-rig-chain.forge.js +102 -0
  118. package/examples/api/exact-sheet-shell-assembly.forge.js +0 -2
  119. package/examples/api/exact-surface-studio.forge.js +6 -8
  120. package/examples/api/helix-basics.forge.js +6 -6
  121. package/examples/api/lean-foundations/README.md +12 -0
  122. package/examples/api/lean-foundations/curve-blend-exact.forge.js +22 -0
  123. package/examples/api/lean-foundations/curve-fit-interpolation.forge.js +18 -0
  124. package/examples/api/lean-foundations/curve-helix-canonicalization.forge.js +27 -0
  125. package/examples/api/lean-foundations/curve-route-canonicalization.forge.js +16 -0
  126. package/examples/api/lean-foundations/curve-trim-reverse.forge.js +24 -0
  127. package/examples/api/lean-foundations/exact-curve-arc.forge.js +36 -0
  128. package/examples/api/mixed-edge-finishes-proof.forge.js +8 -11
  129. package/examples/api/route3d-elbow.forge.js +68 -0
  130. package/examples/api/transition-curves.forge.js +44 -15
  131. package/examples/api/y-blend-corner-showcase.forge.js +0 -2
  132. package/examples/generative/coral-vase.forge.js +1 -1
  133. package/examples/nurbs-tube.forge.js +1 -1
  134. package/package.json +14 -13
  135. package/dist/assets/EditorApp-lXv53A1m.js +0 -13610
  136. package/dist/assets/app-CsHnaBWt.css +0 -1789
  137. package/dist/assets/forgecad_geometry_bg-C5_E9Oa9.wasm +0 -0
  138. package/dist/assets/solver_bg-CWvv4lnN.wasm +0 -0
  139. package/dist/docs-raw/API/README.md +0 -16
  140. package/dist/docs-raw/API/core/concepts.md +0 -118
  141. package/dist/docs-raw/INDEX.md +0 -138
  142. package/dist/docs-raw/RELEASING.md +0 -87
  143. package/dist/docs-raw/agent-native-api.md +0 -27
  144. package/dist/docs-raw/beta-deployment.md +0 -304
  145. package/dist/docs-raw/beta-operations.md +0 -325
  146. package/dist/docs-raw/blueprint-first.md +0 -145
  147. package/dist/docs-raw/cli-monetization.md +0 -112
  148. package/dist/docs-raw/coding-best-practices.md +0 -120
  149. package/dist/docs-raw/coding.md +0 -340
  150. package/dist/docs-raw/deployment.md +0 -374
  151. package/dist/docs-raw/guides/skill-maintenance.md +0 -161
  152. package/dist/docs-raw/guides/surface-members.md +0 -82
  153. package/dist/docs-raw/harbor-cli.md +0 -854
  154. package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
  155. package/dist/docs-raw/internals/compiler.md +0 -307
  156. package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
  157. package/dist/docs-raw/internals/constraint-solver.md +0 -176
  158. package/dist/docs-raw/internals/shape-from-slices.md +0 -152
  159. package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
  160. package/dist/docs-raw/platform/admin.md +0 -45
  161. package/dist/docs-raw/platform/architecture.md +0 -82
  162. package/dist/docs-raw/platform/auth.md +0 -139
  163. package/dist/docs-raw/platform/email.md +0 -67
  164. package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
  165. package/dist/docs-raw/platform/observability.md +0 -197
  166. package/dist/docs-raw/platform/projects.md +0 -111
  167. package/dist/docs-raw/platform/sharing.md +0 -90
  168. package/dist/docs-raw/product/README.md +0 -39
  169. package/dist/docs-raw/product/api-as-product-language.md +0 -13
  170. package/dist/docs-raw/product/business-model.md +0 -15
  171. package/dist/docs-raw/product/competitive-positioning.md +0 -17
  172. package/dist/docs-raw/product/creative-manufacturing.md +0 -15
  173. package/dist/docs-raw/product/founder-story.md +0 -11
  174. package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
  175. package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
  176. package/dist/docs-raw/product/product-loop.md +0 -17
  177. package/dist/docs-raw/product/strategic-decisions.md +0 -22
  178. package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
  179. package/dist/docs-raw/product/user-segments.md +0 -15
  180. package/dist/docs-raw/product/vision.md +0 -26
  181. package/dist/docs-raw/rl-environments.md +0 -350
  182. package/dist/docs-raw/runbook.md +0 -611
  183. package/dist-cli/check-compiler-U5SOPN7X.js.map +0 -1
  184. package/dist-cli/check-query-propagation-XOKNSSYU.js.map +0 -1
  185. package/dist-cli/chunk-EXWGNL6K.js.map +0 -1
  186. package/dist-cli/forgecad.js.map +0 -1
  187. package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
  188. package/dist-cli/solver-46FFSK2U.js.map +0 -1
  189. package/dist-skill/SKILL-dev.md +0 -145
  190. package/dist-skill/docs-dev/API/core/concepts.md +0 -118
  191. package/dist-skill/docs-dev/CLI.md +0 -677
  192. package/dist-skill/docs-dev/agent-native-api.md +0 -27
  193. package/dist-skill/docs-dev/blueprint-first.md +0 -145
  194. package/dist-skill/docs-dev/coding-best-practices.md +0 -120
  195. package/dist-skill/docs-dev/coding.md +0 -340
  196. package/dist-skill/docs-dev/component-model.md +0 -164
  197. package/dist-skill/docs-dev/generated/assembly.md +0 -794
  198. package/dist-skill/docs-dev/generated/core.md +0 -2117
  199. package/dist-skill/docs-dev/generated/curves.md +0 -2583
  200. package/dist-skill/docs-dev/generated/lib.md +0 -169
  201. package/dist-skill/docs-dev/generated/output.md +0 -247
  202. package/dist-skill/docs-dev/generated/sdf.md +0 -446
  203. package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
  204. package/dist-skill/docs-dev/generated/sketch.md +0 -1811
  205. package/dist-skill/docs-dev/generated/viewport.md +0 -585
  206. package/dist-skill/docs-dev/generated/wood.md +0 -108
  207. package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
  208. package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
  209. package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
  210. package/dist-skill/docs-dev/guides/joint-design.md +0 -78
  211. package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
  212. package/dist-skill/docs-dev/guides/positioning.md +0 -161
  213. package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
  214. package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
  215. package/dist-skill/docs-dev/internals/compiler.md +0 -307
  216. package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
  217. package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
  218. package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
  219. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
@@ -1,677 +0,0 @@
1
- ---
2
- skill-group: cli
3
- skill-order: 1
4
- ---
5
-
6
- # ForgeCAD CLI
7
-
8
- Create projects, open local studios, run, inspect, export, publish, and sync `.forge.js` models from your terminal. Core workflows are included with a free ForgeCAD account; advanced exports and rendering are Pro.
9
-
10
- ## Quick Start
11
-
12
- ```bash
13
- # 1. Install
14
- npm install -g forgecad
15
-
16
- # 2. Sign in and create a dedicated project folder
17
- forgecad login
18
- mkdir spool-adapter
19
- cd spool-adapter
20
- forgecad project init "Spool Adapter" --visibility private
21
-
22
- # 3. Create a first model file
23
- forgecad new adapter --template part
24
-
25
- # 4. Open the local editor
26
- forgecad studio .
27
-
28
- # 5. Validate, export, and push to the browser
29
- forgecad run adapter.forge.js
30
- forgecad export stl adapter.forge.js
31
- forgecad project push
32
- forgecad project open
33
- ```
34
-
35
- Local modeling, inspection, export, and skill-install commands do not require a ForgeCAD account. Hosted project sync, publishing, token management, and license activation require sign-in. Run `forgecad login` and choose email/password or API token when prompted. Use `FORGECAD_TOKEN=fc_pat_... forgecad <hosted-command>` only for CI/CD and one-off automation. `forgecad studio` always requires an explicit project path; use `.` for the current project.
36
-
37
- You can also start from the hosted starter project with `forgecad project clone start-here`, then `cd start-here` and `forgecad studio .`.
38
-
39
- ## Editor
40
-
41
- ForgeCAD includes a local editor. Open it around a dedicated project folder, edit a `.forge.js` file, save, and the 3D view updates — parameters become interactive sliders.
42
-
43
- | Command | Description |
44
- |---------|-------------|
45
- | `studio <project-path> [project-path ...]` | Open the installed local editor around one or more project folders. |
46
- | `dev <project-path> [project-path ...]` | Start the Vite dev server for ForgeCAD source development. |
47
- | `web` | Start a local dev server in web/playground mode (no filesystem, localStorage only). |
48
-
49
- `forgecad studio <project-path>` is the normal installed-CLI command for users. `forgecad dev <project-path>` starts the Vite dev server and is mainly for ForgeCAD source development.
50
-
51
- <details>
52
- <summary>Common flags for studio / dev</summary>
53
-
54
- | Option | Description |
55
- |--------|-------------|
56
- | `--port <n>` | Bind to a specific port |
57
- | `--host [host]` | Expose the server on the network |
58
- | `--open` | Open a browser window automatically |
59
- | `--strict-port` | Fail instead of selecting another port |
60
-
61
- </details>
62
-
63
- ## Run & Render
64
-
65
- Execute scripts and produce images headless — no browser window. Renders use Chrome under the hood.
66
-
67
- ### `forgecad run`
68
-
69
- Execute a Forge script quickly and print the inner-loop build summary: build count, verification results, parameters, and timing.
70
-
71
- The fast validation command. Runs your script with the real geometry kernel (no browser needed) and reports whether it built, how many objects came back, any `verify.*` results, parameter values, script logs, and elapsed script time. This is the command agents should run frequently while editing a model.
72
-
73
- **Fast by default** — a bare `forgecad run model.forge.js` does not compute per-object volumes, bounding boxes, construction history, feature tallies, or solver profiles. Those run diagnostics are useful, but they are no longer part of the hot path.
74
-
75
- **Opt-in diagnostics** — use `--details` for volume/bounding-box/object geometry summaries, `--history` for the construction tree, `--features` for feature tallies, or `--solver-profile` for constraint solver timing. Use `inspect fit interference`, `inspect physical gaps`, or `inspect mechanical-integrity --collisions` for spatial and collision evidence.
76
-
77
- **Verification results** — runs any `verify.*` checks in the script and reports pass/fail with expected vs actual values. Verification failures remain non-fatal so the model can still render and be inspected.
78
-
79
- **Physical connectivity** — pass `--connectivity` to list physically connected components across visible objects. Overlapping bbox candidates are checked with exact geometry by default, while bbox-only contact is treated as evidence rather than proof of one connected component. This helps answer whether the model is one continuous assembly or several separate islands.
80
-
81
- **Quality preset** — pass `--quality live|default|high` to select the same geometry quality profile used by the editor and export tools. `live` is the fastest preset for large audit models.
82
-
83
- **Direct CAD inputs** — pass `.stl`, `.obj`, `.3mf`, `.step`, or `.stp` directly when you just want to inspect an external asset. Mesh files are imported with `importMesh(...)`; STEP/STP files are imported with `importStep(...)` and auto-select OCCT unless you pass `--backend`.
84
-
85
- For deeper confidence gates, prefer `forgecad inspect mechanical-integrity`, `forgecad check print`, or targeted evidence commands such as `forgecad inspect fit interference` instead of turning `run` back into a catch-all audit command.
86
-
87
- ```bash
88
- forgecad run examples/api/static-assembly-connectors.forge.js
89
- forgecad run examples/api/static-assembly-connectors.forge.js --focus
90
- forgecad run examples/api/static-assembly-connectors.forge.js --focus "Bench.Slat*"
91
- forgecad run examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1"
92
- forgecad run examples/api/static-assembly-connectors.forge.js --details --history
93
- forgecad run examples/products/cup.forge.js --connectivity
94
- forgecad run examples/products/cup.forge.js --journeys
95
- forgecad run examples/products/cup.forge.js --backend occt
96
- forgecad run examples/products/cup.forge.js --backend truck --quality live
97
- forgecad run examples/products/cup.forge.js --debug-imports
98
- forgecad run examples/products/cup.forge.js -p "Wall Thickness=3" -p "Body Height=200"
99
- forgecad run examples/constraints/06-complex-spectrogram.forge.js --solver-debug-out tmp/spectrogram-debug
100
- ```
101
-
102
- ### `forgecad ls`
103
-
104
- List targetable scene objects for a model.
105
-
106
- Runs the model headlessly and prints the exact object paths that CLI tools can target. Use this before focused renders or inspections when object names, groups, or assembly paths are not obvious.
107
-
108
- The default output is a compact line-oriented list. Use `--tree` for an indented hierarchy, `--long` for geometry metrics, or `--json` for automation.
109
-
110
- ```bash
111
- forgecad ls examples/api/static-assembly-connectors.forge.js
112
- forgecad ls examples/api/static-assembly-connectors.forge.js --tree
113
- forgecad ls examples/api/static-assembly-connectors.forge.js Bench
114
- forgecad ls examples/api/static-assembly-connectors.forge.js "Bench/Slat0" --long
115
- forgecad ls examples/api/static-assembly-connectors.forge.js --json
116
- ```
117
-
118
- ### `forgecad show`
119
-
120
- Render a quick target-focused viewport PNG.
121
-
122
- The main quick visual path for agents. Pass a model and, optionally, a target path from `forgecad ls`; ForgeCAD resolves the target and renders that object or group through the existing viewport renderer. Use `--from` for fast camera directions, or pass the lower-level render camera flags when you need exact reproducibility.
123
-
124
- Without a target, `show` renders the whole scene and behaves like a shorter, intent-first wrapper around `render 3d`.
125
-
126
- ```bash
127
- forgecad show examples/api/static-assembly-connectors.forge.js
128
- forgecad show examples/api/static-assembly-connectors.forge.js Bench
129
- forgecad show examples/api/static-assembly-connectors.forge.js "Bench/Slat0" --from front --out slat-front.png
130
- forgecad show model.forge.js --camera "proj=perspective;pos=200,-160,120;target=0,0,20;up=0,0,1;fov=38"
131
- ```
132
-
133
- ### Object Filtering: `--focus` and `--hide`
134
-
135
- Several CLI commands can filter the visible object set without changing model code: `render 3d`, `render wireframe`, `inspect <family> <mode>`, `capture`, and `check print`.
136
-
137
- Use `forgecad ls model.forge.js` to list exact object paths quickly, then pass those names or globs to `--focus` or `--hide` on render and inspection commands.
138
-
139
- ```bash
140
- forgecad ls examples/api/static-assembly-connectors.forge.js --tree
141
- forgecad render 3d examples/api/static-assembly-connectors.forge.js bench.png --focus "Bench.*"
142
- forgecad render 3d examples/api/static-assembly-connectors.forge.js slats.png --focus "Bench.Slat*"
143
- forgecad inspect fit interference examples/api/static-assembly-connectors.forge.js --focus "Bench.*"
144
- forgecad inspect visual objects examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1" --camera iso
145
- ```
146
-
147
- Rules:
148
-
149
- - A bare `--focus` hides mock objects and keeps real objects.
150
- - `--focus name1,name2` renders only matching objects.
151
- - `--hide name1,name2` removes matching objects from the visible scene.
152
- - Matching is case-insensitive and supports `*` / `?` globs.
153
- - `--focus` and `--hide` are mutually exclusive.
154
- - Filtering happens after the script runs; it does not avoid evaluating the full model.
155
- - Filtering works on returned object names. For grouped children, use concrete child names or globs like `Bench.*`.
156
- - If a model unions many parts into one returned shape, the original parts cannot be isolated by CLI filtering.
157
- - Filtered renders fail when no renderable objects remain, and exact cameras report visible objects that are partially or fully outside the camera frame.
158
-
159
- ### `forgecad inspect`
160
-
161
- Inspect a model by asking for one explicit kind of evidence.
162
-
163
- `forgecad inspect` is the evidence-first inspection surface. Pick the job you want to verify, then choose the view like you would with `render 3d`.
164
-
165
- - `inspect history` — final-object feature recipes and feedback anchors
166
- - `inspect design-trace` — raw construction DAG, source spans, and cache diagnostics
167
- - `inspect section` — agent-native one-off section probe with optional ray rulers and replay JSON
168
- - `inspect replay` — rerun a saved section probe on the same or another source
169
- - `inspect visual image|cutaway|depth|normals|objects` — visual context, clipped 3D cutaways, depth, normals, and identity evidence
170
- - `inspect surface zebra|roughness` — surface continuity and roughness evidence
171
- - `inspect physical components|floating|gaps` — physical component graph evidence
172
- - `inspect fit interference` — positive-volume overlap evidence
173
- - `inspect manufacture thickness` — wall-thickness evidence
174
- - `inspect compare overlay` — candidate-vs-reference visual mismatch evidence
175
- - `inspect sections at|stack|sample` — exact section evidence for precise cuts, dense scans, or sparse samples
176
- - `inspect mechanical-integrity` — model-focused integrity audit for generated assemblies
177
-
178
- ```bash
179
- forgecad inspect history main.forge.js --object "Left Leg" --level object
180
- forgecad inspect design-trace main.forge.js --query feature:hole
181
- forgecad inspect fit interference main.forge.js --camera iso
182
- forgecad inspect visual cutaway main.forge.js --plane yz
183
- forgecad inspect visual objects main.forge.js --camera front --camera right
184
- forgecad inspect manufacture thickness main.forge.js --min 1.6 --warn 2.4
185
- forgecad inspect section main.forge.js --plane yz --ray bore:-20,0:20,0
186
- forgecad inspect replay outputs/inspect/<probe>/result.json --source candidate.forge.js
187
- forgecad inspect sections at main.forge.js --plane yz --offset 12.5
188
- forgecad inspect sections stack main.forge.js --plane yz --every 1
189
- forgecad inspect compare overlay candidate.forge.js --with reference.3mf
190
- ```
191
-
192
- | Command | Description |
193
- |---------|-------------|
194
- | `inspect visual image` | Capture standard shaded viewport evidence. |
195
- | `inspect visual objects` | Capture object identity evidence. |
196
- | `inspect section` | Run one exact section probe with optional ray rulers. |
197
- | `inspect replay` | Replay a saved section inspection result on a source model. |
198
- | `inspect fit interference` | Capture positive-volume interference evidence. |
199
- | `inspect manufacture thickness` | Capture wall-thickness evidence. |
200
- | `inspect sections at` | Capture one exact section at a plane offset. |
201
- | `inspect sections stack` | Capture periodic physical section slices. |
202
- | `inspect sections sample` | Capture a fixed number of representative section slices. |
203
- | `inspect compare overlay` | Capture candidate-vs-reference comparison evidence. |
204
- | `inspect evidence` | List available inspect commands. |
205
-
206
- ### `forgecad render`
207
-
208
- Render a Forge scene. Use a subcommand — `3d`, `views`, `section`, `wireframe`, `sketch`, or `hq`.
209
-
210
- `forgecad render` is a group of rendering subcommands. Pick one based on what you want:
211
-
212
- - `render 3d` — standard viewport PNG, the usual way to visually verify geometry
213
- - `render views` — list named cameras declared with `scene({ views })`
214
- - `render wireframe` — edges only, no shading
215
- - `render section` — 2D cross-section cut by a plane (SVG or PNG)
216
- - `render sketch` — 2D sketch script to PNG
217
- - `render hq` — path-traced via Blender Cycles, for documentation and marketing shots
218
-
219
- ```bash
220
- forgecad render 3d examples/products/cup.forge.js
221
- forgecad inspect fit interference examples/api/static-assembly-connectors.forge.js --camera iso
222
- forgecad render views examples/products/cup.forge.js
223
- forgecad render wireframe examples/products/cup.forge.js
224
- forgecad render section examples/furniture/01-table.forge.js --plane XZ
225
- forgecad render hq examples/products/cup.forge.js --preset dramatic
226
- ```
227
-
228
- ### `forgecad render 3d`
229
-
230
- Render a Forge scene to PNG using the real viewport renderer.
231
-
232
- Launches a headless Chrome instance, renders the scene with the same WebGL viewport as the editor, and saves a PNG. The output path defaults to `<script-name>.png` next to the input file.
233
-
234
- The input can be a `.forge.js` script or a direct `.stl`, `.obj`, `.3mf`, `.step`, or `.stp` asset. Direct STEP/STP rendering auto-selects OCCT unless you pass `--backend`.
235
-
236
- Use `--focus` to isolate specific parts (hides everything else) or `--hide` to remove clutter like mock objects. The `--view` flag selects a named camera declared in `scene({ views })`. The `--camera` flag accepts built-in views (`front`, `top`, `iso`), `azimuth:elevation` angles, or an exact `proj/pos/target/up/fov` camera spec — pass `--camera` multiple times to render several viewpoints in one run. Use `--camera-json <file>` or `--scene <file>` for exact reproducible viewport cameras without shell escaping. Filtered renders report any visible objects whose bounding boxes are partially or fully outside the camera frame; exact cameras fail when they frame none of the visible objects.
237
-
238
- Use `--edges=<off|thin|bold>` to control the edge overlay. For a pure wireframe look, use `render wireframe` instead.
239
-
240
- This is the standard way to visually verify geometry from the CLI or in agent workflows. For higher quality (path-traced, materials, HDRI lighting), use `render hq` instead.
241
-
242
- ```bash
243
- forgecad render 3d examples/products/cup.forge.js
244
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --focus
245
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --focus "Bench.Slat*"
246
- forgecad render 3d examples/api/static-assembly-connectors.forge.js --hide "Bench.Slat0,Bench.Slat1"
247
- forgecad render 3d model.forge.js --view hero
248
- forgecad render 3d model.forge.js --camera 45:30
249
- forgecad render 3d model.forge.js --camera "proj=perspective;pos=200,-160,120;target=0,0,20;up=0,0,1;fov=38"
250
- forgecad render 3d model.forge.js --camera-json camera.json
251
- forgecad render 3d model.forge.js --scene scene.json
252
- forgecad render 3d model.forge.js --camera front --camera side
253
- forgecad render 3d model.forge.js -p "Wall Thickness=3"
254
- forgecad render 3d model.forge.js --edges bold
255
- forgecad render 3d model.forge.js --edges off
256
- forgecad render 3d bracket.3mf bracket.png
257
- ```
258
-
259
- ### `forgecad render views`
260
-
261
- List named camera views declared by a model with `scene({ views })`.
262
-
263
- Runs the script headlessly and prints every named render view with an exact camera spec that can be passed back to `render 3d`, `render hq`, or `capture`.
264
-
265
- ```bash
266
- forgecad render views model.forge.js
267
- forgecad render views model.forge.js --json
268
- ```
269
-
270
- ### `forgecad render wireframe`
271
-
272
- Render a Forge scene as a wireframe (edges only, no shading).
273
-
274
- Same as `render 3d` but renders only the edge geometry — no shaded surfaces. Useful for construction-style documentation or highlighting structural features without material detail.
275
-
276
- ```bash
277
- forgecad render wireframe examples/products/cup.forge.js
278
- forgecad render wireframe examples/products/cup.forge.js --camera iso
279
- ```
280
-
281
- ### `forgecad render hq` **\[Pro\]**
282
-
283
- High-quality render via Blender Cycles — path-traced, HDRI, material presets.
284
-
285
- Exports the scene to Blender and renders with Cycles (path tracer). Requires Blender installed and on PATH.
286
-
287
- Choose a `--preset` for the look: `studio` (neutral product shot), `dramatic` (high-contrast), `clay` (matte, no color), `glass`, `metallic`, `toon`, `xray`, `normals`, `silhouette`, and more. Control quality vs speed with `--samples` (default 256). Use `--view`, `--camera`, `--camera-json`, or `--scene <file>` for still camera control, matching `render 3d`. Use `--transparent` for a transparent background (compositing-ready).
288
-
289
- Output defaults to `<script-name>-hq.png`. Great for documentation, marketing renders, and social media.
290
-
291
- ```bash
292
- forgecad render hq examples/products/cup.forge.js
293
- forgecad render hq examples/products/cup.forge.js hero.png --preset dramatic --samples 1024
294
- forgecad render hq examples/products/cup.forge.js hero.png --view hero
295
- forgecad render hq examples/products/cup.forge.js hero.png --camera-json camera.json
296
- forgecad render hq examples/products/cup.forge.js --preset clay --size 2048
297
- forgecad render hq examples/products/cup.forge.js --transparent --preset glass
298
- ```
299
-
300
- ### `forgecad capture gif|mp4` **\[Pro\]**
301
-
302
- Animated orbit or joint playback.
303
-
304
- Renders an animated sequence by either orbiting the camera around the model or playing back a `jointsView` animation. Use `--capture orbit` (default) for a turntable rotation, `--capture animation --animation <name>` to play a named joints clip, or `--capture section-sweep` to move a clipping plane through the model. Supports `--cut-plane` to animate with a static cross-section visible. Use `--view`, `--camera`, `--camera-json`, or `--scene <file>` to choose the orbit base camera or the fixed camera for animations and section sweeps.
305
-
306
- ```bash
307
- forgecad capture gif examples/products/cup.forge.js
308
- forgecad capture gif examples/3d-printer.forge.js out/section.gif --cut-plane "Front Section"
309
- forgecad capture gif model.forge.js out/raw.gif --param "Output=raw-sdf"
310
- forgecad capture gif model.forge.js out/front.gif --camera front
311
- forgecad capture gif model.forge.js out/hero.gif --view hero
312
- forgecad capture gif examples/3d-printer.forge.js out/sweep.gif --capture section-sweep --sweep-plane YZ
313
- forgecad capture mp4 examples/products/cup.forge.js
314
- forgecad capture mp4 examples/api/runtime-joints-view.forge.js out/step.mp4 --capture animation --animation Step
315
- forgecad capture mp4 model.forge.js out/raw.mp4 --param "Output=raw-sdf"
316
- forgecad capture mp4 model.forge.js out/front.mp4 --camera front
317
- forgecad capture mp4 model.forge.js out/hero.mp4 --view hero
318
- forgecad capture mp4 examples/3d-printer.forge.js out/sweep.mp4 --capture section-sweep --sweep-plane YZ --sweep-frames 180
319
- ```
320
-
321
- ### `forgecad render section`
322
-
323
- Render a 2D cross-section of a 3D model (cut by a plane) to SVG or PNG.
324
-
325
- Cuts all shapes in the scene with an axis-aligned plane and produces a 2D cross-section drawing. The default plane is XY at Z=0. Use `--plane XZ` or `--plane YZ` for other orientations, and `--offset` to shift the cut position.
326
-
327
- Output format is determined by the file extension: `.svg` (default, vector) or `.png` (rasterized at `--size` pixels). Use `--edges=<off|thin|bold>` to control the outline stroke on cut shapes.
328
-
329
- Useful for verifying internal geometry, wall thicknesses, and fit checks that aren't visible in 3D renders.
330
-
331
- ```bash
332
- forgecad render section examples/furniture/01-table.forge.js
333
- forgecad render section examples/furniture/01-table.forge.js out/section.svg --plane XZ --offset 10
334
- forgecad render section examples/furniture/01-table.forge.js out/section.png --size 2048
335
- forgecad render section examples/furniture/01-table.forge.js out/bold.svg --edges bold
336
- ```
337
-
338
- | Command | Description |
339
- |---------|-------------|
340
- | `render sketch` | Render a 2D sketch .forge.js to PNG. |
341
-
342
- <details>
343
- <summary>All render / capture flags</summary>
344
-
345
- | Option | Description |
346
- |--------|-------------|
347
- | `--param <Key=Value>` | Override a parameter value (Key=Value). Repeatable. |
348
- | `-p <Key=Value>` | Shorthand for --param |
349
- | `--focus <names>` | Focus: no arg hides mocks; comma-separated names/globs show only those |
350
- | `--hide <names>` | Hide comma-separated object names/globs |
351
- | `--camera <front\|back\|side\|right\|top\|iso\|az:el\|az:el:dist\|spec>` | Camera preset, spherical (az:el), or full spec such as `proj=perspective;pos=x,y,z;target=x,y,z;up=x,y,z;fov=45`. Repeatable. |
352
- | `--camera-json <file>` | Exact viewport camera JSON file |
353
- | `--view <name>` | Named camera view declared by the model with scene({ views }) |
354
- | `--size <px>` | Image size in pixels |
355
- | `--scene <json\|file>` | Viewport scene state JSON or JSON file |
356
- | `--background <color>` | Canvas background override |
357
- | `--render-mode <solid\|wireframe>` | Shaded solid (default) or wireframe only |
358
- | `--edges <off\|thin\|bold>` | Edge overlay preset in solid mode (default: off) |
359
- | `--render-style <classic\|studio\|fast\|glass\|inspection\|precision\|hybrid\|scan>` | Visual render style (render default: classic; inspect default: inspection) |
360
- | `--scan-granularity <12-144>` | Scan cells across the scene longest axis |
361
- | `--port <n>` | Vite dev server port |
362
- | `--fresh-server` | Start a fresh renderer instead of reusing an existing one |
363
- | `--chrome-path <path>` | Chrome or Chromium executable path |
364
- | `--output <path>` | Output file path |
365
- | `--json` | Print machine-readable JSON |
366
- | `--quality <default\|live\|high>` | Mesh quality preset |
367
- | `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold) |
368
- | `--preset <name>` | Material/lighting preset |
369
- | `--width <px>` | Output width in pixels |
370
- | `--height <px>` | Output height in pixels |
371
- | `--samples <n>` | Render samples (more = higher quality, slower) |
372
- | `--engine <cycles\|eevee>` | Render engine |
373
- | `--transparent` | Transparent background (RGBA) |
374
- | `--no-denoise` | Disable denoising |
375
- | `--hdri <path.hdr>` | Custom HDRI environment map path |
376
- | `--video` | Render orbit turntable video (MP4) |
377
- | `--frames <n>` | Video frames per revolution |
378
- | `--fps <n>` | Video frame rate |
379
- | `--pitch <deg>` | Camera pitch angle in degrees |
380
- | `--format <gif\|mp4>` | Output format |
381
- | `--capture <orbit\|animation\|section-sweep>` | Capture preset |
382
- | `--animation <name>` | Named jointsView animation clip |
383
- | `--animation-loops <n>` | Repeat the selected animation clip |
384
- | `--cut-plane <name>` | Enable a named cut plane |
385
- | `--sweep-plane <XY\|XZ\|YZ>` | Moving plane for section-sweep |
386
- | `--sweep-normal <x,y,z>` | Custom section-sweep normal |
387
- | `--sweep-from <min\|max\|offset>` | Section-sweep start offset |
388
- | `--sweep-to <min\|max\|offset>` | Section-sweep end offset |
389
- | `--sweep-padding <n>` | Auto sweep range padding in model units |
390
- | `--sweep-frames <n>` | Moving frames for section-sweep |
391
- | `--sweep-ease <linear\|smoothstep>` | Section-sweep interpolation |
392
- | `--section-style <hatched\|clean>` | Section cap style for sweep captures |
393
- | `--wireframe-pass` | Enable an extra wireframe pass (off by default) |
394
- | `--no-wireframe-pass` | Disable the extra wireframe pass |
395
- | `--pixel-ratio <n>` | Render supersampling factor |
396
- | `--frames-per-turn <n>` | Frames for one orbit turn |
397
- | `--hold-frames <n>` | Freeze frames before each pass |
398
- | `--encoder <auto\|ffmpeg\|js>` | GIF encoder strategy |
399
- | `--crf <n>` | ffmpeg/libx264 quality |
400
- | `--ffmpeg-path <path>` | ffmpeg executable path |
401
- | `--list` | Print available animations and cut planes |
402
-
403
- </details>
404
-
405
- ## Export
406
-
407
- Export to every format you need. Export actions are free to run for personal non-commercial use; Pro covers human-operated commercial CAD work, and Enterprise covers backend or embedded application usage.
408
-
409
- | Command | Format | Use case |
410
- |---------|--------|----------|
411
- | `cut-list` **\[Production\]** | Terminal | Grouped sheet-material cut list from `sheetStock()` |
412
- | `export svg` | SVG | 2D vector output from sketches |
413
- | `export sketch-pdf` **\[Production\]** | PDF | Sketch with dimensions and constraints |
414
- | `export step` **\[Production\]** | STEP | CAD interchange (exact geometry) |
415
- | `export brep` **\[Production\]** | BREP | Boundary representation |
416
- | `export 3mf` | 3MF | 3D printing (color, multi-part) |
417
- | `export stl` | STL | 3D printing |
418
- | `export gcode` **\[Production\]** | G-code | Toolpath (scripted, not sliced) |
419
- | `export sdf` **\[Production\]** | SDF package | Gazebo robot simulation |
420
- | `export urdf` **\[Production\]** | URDF package | ROS / PyBullet / MuJoCo |
421
- | `export report` **\[Production\]** | PDF report | Multi-view report with BOM and dimensions |
422
- | `export cutting-layout` **\[Production\]** | PDF/DXF | Sheet cutting layout with cut sequence |
423
- | `link` | URL | Generate a ForgeCAD share link from a GitHub Gist URL or ID and copy it to clipboard. |
424
-
425
- ```bash
426
- # Sheet material
427
- forgecad cut-list examples/api/sheet-stock-cut-list.forge.js
428
- forgecad export cutting-layout examples/api/sheet-stock-cut-list.forge.js --sheet-width 420 --sheet-height 594 --kerf 3
429
- forgecad export cutting-layout examples/api/sheet-stock-cut-list.forge.js out/layout.dxf
430
-
431
- # 3D printing
432
- forgecad check print bracket.forge.js
433
- forgecad export stl bracket.forge.js
434
- forgecad export 3mf bracket.forge.js --quality high
435
-
436
- # CAD interchange
437
- forgecad export step bracket.forge.js
438
-
439
- # Technical drawings
440
- forgecad export report bracket.forge.js out/report.pdf
441
-
442
- # Robot simulation
443
- forgecad export sdf rover.forge.js --output out/forge_scout
444
- ```
445
-
446
- <details>
447
- <summary>Export flags</summary>
448
-
449
- | Option | Description |
450
- |--------|-------------|
451
- | `--output <path>` | Output STEP path |
452
- | `--quality <default\|live\|high>` | Forge quality preset |
453
- | `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold) |
454
- | `-o <path>` | Shorthand for --output |
455
- | `--dim-angle-tol <deg>` | Dimension routing tolerance in degrees |
456
- | `--format <pdf\|dxf>` | Output format |
457
- | `--sheet-width <mm>` | Stock sheet width in mm |
458
- | `--sheet-height <mm>` | Stock sheet height in mm |
459
- | `--kerf <mm>` | Cutting clearance (saw blade width) in mm |
460
-
461
- </details>
462
-
463
- ## Projects & Publishing
464
-
465
- ForgeCAD has a hosted platform at [forgecad.io](https://forgecad.io). The CLI connects a dedicated local project folder to it.
466
-
467
- A project is a local folder linked to the hosted app by `forgecad.json`. Use `forgecad project clone <slug>` to download an existing hosted project into a local folder, or run `forgecad project init` inside a folder that should become a new ForgeCAD project. Open local projects with `forgecad studio <project-path>`.
468
-
469
- Keep the project root small and intentional. Do not run the editor from `~`, downloads, desktop, or a huge source tree. ForgeCAD scans project files such as `.forge.js`, `.js`, `.svg`, and `.dxf`; broad roots make local workflows and AI-agent context slow and confusing.
470
-
471
- ### Get started
472
-
473
- ```bash
474
- forgecad login
475
- mkdir spool-adapter
476
- cd spool-adapter
477
- forgecad project init "Spool Adapter"
478
- forgecad new adapter --template part
479
- forgecad studio .
480
-
481
- # or clone an existing hosted project:
482
- forgecad project clone start-here
483
- cd start-here
484
- forgecad studio .
485
- ```
486
-
487
- `forgecad login` asks how you want to sign in, then prompts for either email/password or an API token. If your account was created through GitHub or Google, create an API token in Settings > API Tokens, run `forgecad login`, and choose API token. Use `FORGECAD_TOKEN=fc_pat_...` only for CI/CD and one-off automation. See [Platform authentication](platform/auth.md#cli-auth-for-oauth-accounts) for details.
488
-
489
- `forgecad project init` creates the remote project, writes `forgecad.json`, pushes any existing local source files, and records server file IDs. `forgecad project push` syncs an already initialized project; it does not create a remote project from an arbitrary folder.
490
-
491
- ### Sync
492
-
493
- ```bash
494
- forgecad project push # Upload local changes
495
- forgecad project pull # Download remote changes
496
- forgecad project status # See what's different
497
- ```
498
-
499
- ### Publish
500
-
501
- ```bash
502
- forgecad project publish adapter.forge.js --title "AMS Lite Adapter"
503
- ```
504
-
505
- Shares are live references — always the current version, not a snapshot.
506
-
507
- <details>
508
- <summary>All project commands</summary>
509
-
510
- **Authentication**
511
-
512
- | Command | Description |
513
- |---------|-------------|
514
- | `login` | Authenticate with ForgeCAD interactively. |
515
- | `logout` | Clear stored authentication credentials. |
516
- | `whoami` | Show the current user, server, and license status. |
517
-
518
- **Projects**
519
-
520
- | Command | Description |
521
- |---------|-------------|
522
- | `project init` | Initialize the current directory as a ForgeCAD project and create it on the server. |
523
- | `project clone` | Download a remote project into a new local directory. |
524
- | `project pull` | Download remote changes into the current project. |
525
- | `project push` | Upload local changes to the remote project. |
526
- | `project status` | Show differences between local and remote project files. |
527
- | `project list` | List your remote projects. |
528
- | `project open` | Open the current project in the browser. |
529
- | `project info` | Show details of the current project (name, visibility, files, URL). |
530
- | `project rename` | Rename the current project. |
531
- | `project set-visibility` | Change project visibility. |
532
- | `project delete` | Permanently delete the current project and all its files on the server. |
533
-
534
- **Members**
535
-
536
- | Command | Description |
537
- |---------|-------------|
538
- | `project members` | List members of the current project. |
539
- | `project add-member` | Add a member to the current project. |
540
- | `project remove-member` | Remove a member from the current project. |
541
- | `project set-role` | Change a member's role. |
542
-
543
- **Remote files**
544
-
545
- | Command | Description |
546
- |---------|-------------|
547
- | `project file list` | List remote files in the current project. |
548
- | `project file read` | Read a remote file and print its contents. |
549
- | `project file save` | Create or update a remote file. Reads from local file, --content, or --stdin. |
550
- | `project file delete` | Delete a remote file. |
551
- | `project file rename` | Rename or move a remote file. |
552
- | `project file mkdir` | Create a directory in the remote project. |
553
- | `project file copy` | Copy a file from another project into the current one. |
554
-
555
- **Shares**
556
-
557
- | Command | Description |
558
- |---------|-------------|
559
- | `project publish` | Publish a model and get a shareable link. Auto-syncs project if inside one. |
560
- | `project shares list` | List your published models. |
561
- | `project shares delete` | Unpublish a shared model. |
562
-
563
- **API Tokens**
564
-
565
- | Command | Description |
566
- |---------|-------------|
567
- | `token create` | Create a new API token for CLI and CI/CD access. |
568
- | `token list` | List your API tokens. |
569
- | `token revoke` | Revoke an API token. |
570
-
571
- **Scaffolding**
572
-
573
- | Command | Description |
574
- |---------|-------------|
575
- | `new` | Create a new .forge.js file from a template. |
576
-
577
- </details>
578
-
579
- ## AI Integration
580
-
581
- ForgeCAD files are plain JavaScript. AI coding agents should work inside an initialized project folder, write and iterate on local files, and use the CLI for evidence. See [AI Usage](AI/usage.md) for approved models, project-first setup, installable skills, quality prompts, and completion criteria.
582
-
583
- ```bash
584
- # Install the full public ForgeCAD skill library
585
- forgecad skill install
586
-
587
- # Target a specific local agent skill directory when needed
588
- forgecad skill install --target claude
589
- forgecad skill install --target opencode
590
-
591
- # Or export a single context file for chat UIs (Claude.ai, ChatGPT, ...)
592
- forgecad skill one-file ~/Desktop/forgecad-context.md
593
-
594
- # Or export one flattened Markdown file per bundled skill
595
- forgecad skill flattened-files ~/Desktop/forgecad-skills
596
- ```
597
-
598
- > **Workflow:** Agent writes the model -> `forgecad run` validates it -> `forgecad inspect mechanical-integrity` catches disconnected AI-slop patterns -> `forgecad check print` catches printability risks -> `forgecad inspect fit interference` or another targeted inspection command produces visual evidence -> export ships the result. All in the terminal.
599
-
600
- ## Validation
601
-
602
- Check printability and run focused model integrity reviews.
603
-
604
- ### `forgecad compare 3d`
605
-
606
- Score geometric similarity between two ForgeCAD scripts or imported 3D assets.
607
-
608
- Runs both inputs headlessly, samples their triangle surfaces, feature edges, bounds, and volume. Use this to grade a reconstructed `.forge.js` model against a reference `.stl`, `.obj`, `.3mf`, `.step`, or `.stp` file. The overall 0-100 score uses multi-threshold bidirectional surface F-scores, sharp/boundary feature-edge F-scores, dimension agreement, volume IoU, and hard caps; JSON output includes threshold, feature, cap, and distance metrics for automation.
609
-
610
- ```bash
611
- forgecad compare 3d reference.stl reconstruction.forge.js
612
- forgecad compare 3d reference.step reconstruction.forge.js --json --samples 3000
613
- forgecad compare 3d source.3mf candidate.3mf --align center --tolerance-mm 0.5 --fail-under 90
614
- ```
615
-
616
- ### `forgecad check print`
617
-
618
- Run fast 3D-print readiness checks for collisions, mesh health, walls, overhangs, and bed contact.
619
-
620
- Runs a Forge script with the headless kernel and emits a slicer-adjacent printability report without launching a browser. The check is designed for agents: JSON is stable, failures name the specific print risk, and the default profile is conservative for FDM PLA on a 0.4mm nozzle.
621
-
622
- Checks include script `verify.*` results, exact positive-volume object collisions, physical component count, mesh topology, sampled wall thickness, unsupported overhang budget, and bed-contact area. Use `--json` for automation and `--output` to save the full report while keeping the readable terminal summary.
623
-
624
- ```bash
625
- forgecad check print examples/api/attachTo-basics.forge.js
626
- forgecad check print examples/api/verification-demo.forge.js --json
627
- forgecad check print model.forge.js --min-wall 1.2 --warn-wall 2
628
- forgecad check print model.forge.js --expect-components 1 -p "Wall Thickness=3"
629
- ```
630
-
631
- ### `forgecad inspect mechanical-integrity`
632
-
633
- Inspect generated ForgeCAD models for mechanical integrity failures.
634
-
635
- Scans a Forge script or a folder of generated projects and runs a mechanical integrity inspection. The inspection flags timeouts, runtime errors, missing `verify.*` checks, missing executed mechanical-interface checks, fragmented named groups, uncontracted manual assemblies, optional positive-volume object collisions, and excessive physical component counts when requested. Markdown details include suggested repair patterns such as connector-authored mates, bolted service covers, pinned levers, captured slides, hinges, clevis joints, retained shafts, and seated bearings. When `--collisions` is enabled, the Markdown details list the largest overlapping object pairs by volume so agents can repair the highest-risk interfaces first. Exact collision checks use a default 40-pair bbox-overlap budget and 30s exact-check time budget; exhausting either budget fails the file instead of silently passing a partial check. Script-authored `console.warn()` diagnostics are reported as warnings; use `verify.*` checks or `console.error()` for gate-failing contracts. Script-side joint sweeps use a separate validation step budget so the gate can keep default geometry quality while failing truncated validation explicitly.
636
-
637
- ```bash
638
- forgecad inspect mechanical-integrity path/to/generated-models
639
- forgecad inspect mechanical-integrity path/to/model/main.forge.js --min-verifications 2
640
- forgecad inspect mechanical-integrity path/to/model/main.forge.js --collisions
641
- forgecad inspect mechanical-integrity path/to/generated-models --collisions --collision-pair-limit 250
642
- forgecad inspect mechanical-integrity path/to/generated-models --json --timeout-ms 40000 --jobs 4
643
- ```
644
-
645
- <details>
646
- <summary>Debug commands (ForgeCAD development)</summary>
647
-
648
- | Command | Description |
649
- |---------|-------------|
650
- | `debug compiler` | Inspect compiler routes, lowered plans, and runtime snapshots for a script. |
651
- | `debug dimensions` | Inspect report-dimension routing for a script. |
652
- | `debug faces` | Inspect face transformation histories for a script. |
653
-
654
- </details>
655
-
656
- ## Setup & Licensing
657
-
658
- | Command | Description |
659
- |---------|-------------|
660
- | `completion` | Generate shell completion scripts for bash, zsh, or fish. |
661
- | `whoami` | Show the current user, server, and license status. |
662
- | `new` | Create a new .forge.js file from a template. |
663
- | `doctor` | Check system dependencies for all CLI features. |
664
-
665
- ### Licensing
666
-
667
- The CLI is free for personal non-commercial use. Pro covers human-operated commercial CAD work, including designing models for customers. Enterprise covers backend, hosted, embedded, or application workflows that call ForgeCAD automatically.
668
-
669
- | Free | Production outputs | Pro | Enterprise |
670
- |------|--------------------|-----|------------|
671
- | `run`, `dev`, `studio`, `render 3d`, `export stl`, `export 3mf`, `export svg`, `compare 3d`, `check print`, `inspect fit interference`, `inspect mechanical-integrity` for personal non-commercial use | `cut-list`, `export sketch-pdf`, `export step`, `export brep`, `export gcode`, `export sdf`, `export urdf`, `export report`, `export cutting-layout` are free to run for personal non-commercial use; Pro covers human-operated commercial CAD work | `render hq`, `capture gif`, `capture mp4` plus commercial coverage for client/customer work | Backend, hosted, embedded, or application workflows that call ForgeCAD automatically |
672
-
673
- ```bash
674
- forgecad license # Check local license status
675
- forgecad license activate # Activate Pro for the signed-in account
676
- forgecad license deactivate # Remove license
677
- ```