{"schema":"partmode.help/v1","product":"PartMode","version":"8.0.0","releaseSha":"93a5d4335d7de43a74505b0743d80912bd3126af","sourceSha256":"9df4fc9c971f78df8d361aebd5307432e0e1b9eebd28c4f27deda7c06a6b2909","humanUrl":"https://partmode.com/help","machineUrl":"https://partmode.com/api/v1/help","navigation":{"schema":"partmode.navigation/v1","paths":[{"id":"project.blank.first-visit","context":"first-visit","goal":"Start a blank sketch","userPath":"Blank sketch","steps":[{"label":"Blank sketch","selector":"#bw-welcome-start","interaction":"click"}]},{"id":"templates.library.first-visit","context":"first-visit","goal":"Open the template library","userPath":"Browse all templates","steps":[{"label":"Browse all templates","selector":"#bw-welcome-templates","interaction":"click"}]},{"id":"templates.library.existing-editor","context":"existing-editor","goal":"Open the template library","userPath":"Home → Template library","steps":[{"label":"Home","selector":"[data-workspace=\"home\"]","interaction":"click"},{"label":"Template library","selector":"[data-workspace-panel=\"home\"] [data-command-target=\"bw-templates-open\"]","interaction":"click"}]},{"id":"templates.exploded-turbofan.first-visit","context":"first-visit","goal":"Open the exploded turbofan assembly","userPath":"Browse all templates → Exploded turbofan assembly → Open editable template","steps":[{"label":"Browse all templates","selector":"#bw-welcome-templates","interaction":"click"},{"label":"Exploded turbofan assembly","selector":"[data-template-id=\"jet-engine-exploded-assembly\"]","interaction":"click"},{"label":"Open editable template","selector":"#bw-template-use","interaction":"click"}]},{"id":"templates.exploded-turbofan.existing-editor","context":"existing-editor","goal":"Open the exploded turbofan assembly","userPath":"Home → Template library → Exploded turbofan assembly → Open editable template","steps":[{"label":"Home","selector":"[data-workspace=\"home\"]","interaction":"click"},{"label":"Template library","selector":"[data-workspace-panel=\"home\"] [data-command-target=\"bw-templates-open\"]","interaction":"click"},{"label":"Exploded turbofan assembly","selector":"[data-template-id=\"jet-engine-exploded-assembly\"]","interaction":"click"},{"label":"Open editable template","selector":"#bw-template-use","interaction":"click"}]},{"id":"templates.iso4017-screw.existing-editor","context":"existing-editor","goal":"Open the configured ISO 4017 screw family","userPath":"Home → Template library → Standard parts → ISO 4017 hexagon head screw → Open editable template","steps":[{"label":"Home","selector":"[data-workspace=\"home\"]","interaction":"click"},{"label":"Template library","selector":"[data-workspace-panel=\"home\"] [data-command-target=\"bw-templates-open\"]","interaction":"click"},{"label":"Standard parts","selector":"[data-template-category=\"Standard parts\"]","interaction":"click"},{"label":"ISO 4017 hexagon head screw","selector":"[data-template-id=\"iso4017-hex-screw\"]","interaction":"click"},{"label":"Open editable template","selector":"#bw-template-use","interaction":"click"}]},{"id":"configurations.existing-editor","context":"existing-editor","goal":"Open part configurations","userPath":"Manage → Configurations","steps":[{"label":"Manage","selector":"[data-workspace=\"manage\"]","interaction":"click"},{"label":"Configurations","selector":"[data-workspace-panel=\"manage\"] [data-command-target=\"bw-configurations-open\"]","interaction":"click"}]},{"id":"drawing.existing-editor","context":"existing-editor","goal":"Export the active drawing","userPath":"Output → Drawing","steps":[{"label":"Output","selector":"[data-workspace=\"output\"]","interaction":"click"},{"label":"Drawing","selector":"[data-workspace-panel=\"output\"] [data-command-target=\"bw-export-drawing\"]","interaction":"click"}]}]},"resources":[{"uri":"partmode://help/getting-started","slug":"getting-started","name":"getting-started","title":"Getting started","description":"Start a local part, use an editable template, and save exact CAD work.","audience":["human","agent"],"mimeType":"text/markdown","text":"# Getting started\n\nPartMode is local-first parametric CAD in the browser. OpenCascade evaluates\nexact B-rep geometry on your device. You do not need an account to model, save a\nproject, or export a part. This browser-local workflow is separate from the\noptional server-headless agent workflow, which requires explicit per-key consent\nand stores committed documents under the account.\n\n## Quick answers\n\n**Is PartMode free?** Yes. PartMode is free to use and is intended to remain\nfree. Its source is available under the repository license.\n\n**Who makes PartMode?** PartMode is made by\n[Sphinx](https://x.com/protosphinx). Read [About PartMode](/about), the\n[privacy notice](/privacy), or the [cookie details](/cookies).\n\n## Build a part as a person\n\n1. On the first visit, choose **Blank sketch** for a blank part or **Browse all templates** for an editable starting model.\n2. Choose Sketch to start an Extrude profile on the base plane. Choose Extrude, Cut, or Revolve when you need another supported planar face or operation.\n3. Draw a closed profile and type exact dimensions in millimetres.\n4. Apply the feature. Add later operations from the feature ribbon and inspect them in History.\n5. Use parameters for dimensions that should rebuild together.\n6. Save the editable project file before clearing browser data.\n\nThe template library creates normal editable documents. A template is a starting recipe, not a screenshot or decorative mesh.\n\nThe **Standard parts** category adds configuration-controlled nominal content for ISO 4017:2022 hexagon-head screws, ISO 4032:2023 regular nuts, and ISO 7089:2000 normal-series washers. Choose a listed designation in Configurations after opening the family. The screw and nut threads are honest smooth envelopes with retained metric callouts, not modeled helices. The catalog does not select tolerances, material, coating, or property class and is not manufacturing certification; verify released hardware against the licensed standard.\n\n## Explore the exploded turbofan\n\nFrom the first-visit screen, choose **Browse all templates** → **Exploded turbofan assembly** → **Open editable template**.\nFrom an open editor, choose **Home** → **Template library** → **Exploded turbofan assembly** → **Open editable template**.\nThe conceptual engine demonstrator's left model tree lists eight numbered subsystems and keeps\ntheir component leaves collapsed until you expand them. The saved **Service\nexploded layout** separates the modules for inspection while leaving their\nfixed assembly placements unchanged.\n\nThe right-side **Agent flight recorder** reports actual document, kernel,\nassembly, render, and connected-agent events. It is an evidence log, not a\nsimulation of private agent reasoning. The engine consists of exact editable\nfeatures and reusable patterns, but it is not an aerodynamic, structural,\nmanufacturing, or airworthiness definition.\n\n## Read the model state\n\n- **History** is the ordered construction recipe.\n- **Bodies** shows exact solids and visibility state.\n- **Parameters** holds reusable expressions and dimensions.\n- **CFG** selects a stored part configuration when the document defines a design table.\n- **Inspector** shows the selected feature, body, occurrence, mate, or measurement.\n\nPartMode reports rebuild errors instead of silently treating a failed edit as valid geometry. A visible shaded model is useful feedback, but exact completion is established by settled document revision, valid B-rep evidence, and the requested export or query result.\n\n## Inspect dependencies and where-used\n\nAn agent can send an `entity.dependencies` query with an entity `{ kind, id }`.\nUse `direction: \"upstream\"` to inspect inputs, `direction: \"downstream\"` for\nwhere-used, or `direction: \"both\"` for both sides. `transitive: true` follows\nthe graph across multiple levels; `maxDepth`, `relation`, `pageSize`, and\n`cursor` bound or filter the result.\n\nThe typed graph covers datum chains, sketch supports, feature inputs and body\nresults, materials, body and occurrence patterns, reusable part or subassembly\noccurrences, mates, section scopes, and exploded-view steps. Deleting a datum\nor sketch with dependents fails with their names. Body and occurrence deletion\nremoves their dependent feature, mate, and pattern records atomically.\n\n## Pack and move a complete project\n\n**Save project file** and the `project` agent artifact both export the complete\ncanonical project, including reusable part and assembly definitions,\noccurrence dependencies, configurations, and embedded imported B-rep\nresources. The agent artifact includes a deterministic\n`partmode.project-bundle/v1` dependency manifest. Missing referenced resources\nfail project validation instead of producing an incomplete bundle.\n\n## Use equations and units\n\nThe **Parameters** table is the global-variable surface. Dimension fields can\nreference those names and combine them with `+`, `-`, `*`, `/`, `^`,\nparentheses, comparisons, and functions such as `sin`, `sqrt`, `min`, `max`,\nand `if`. Length literals accept `mm`, `cm`, `m`, `um`, `in`, `ft`, and `mil`;\nangle literals accept `deg` and `rad`. PartMode evaluates geometry in\nmillimetres and angles in degrees, including trigonometric arguments and\ninverse-trigonometric results.\n\nFor example, `if(wall > 5mm, 2in, 1in)` selects a length from the global\n`wall` value, and `sin(30deg) * 10mm` evaluates to 5 mm. Unsupported names,\nfunctions, units, non-finite results, and parameter cycles fail the rebuild\ninstead of executing code or publishing guessed geometry.\n\n## Inspect mass properties\n\n1. Assign a material to each body from **Inspect > Material**. The bundled\n   generic densities are editable engineering placeholders, so verify the\n   actual grade before relying on the result.\n2. Choose **Mass & health** in the Inspect ribbon group.\n3. Review exact volume and surface area, density-driven mass, center of mass,\n   the center-of-mass inertia tensor, principal moments and axes, and radii of\n   gyration.\n\nAssembly mass properties use each solved occurrence placement and the parallel\naxis theorem. If any included body lacks material density, PartMode reports the\nknown subset and center of volume but does not claim a complete mass, center of\nmass, or mass inertia tensor. An agent can read the same revision-keyed result\nwith a `cad_query` request whose kind is `geometry.health`.\n\n## Mate references\n\nAssembly mates can reference component origins, part datums, and analytic body\nfaces. Planar faces provide an origin and normal, cylindrical and conical faces\nprovide an exact axis, and spherical faces provide an exact center. A\nconcentric mate between cylinders or cones aligns the two axes while retaining\naxial and rotational freedom. A concentric mate between spheres aligns their\ncenters while retaining rotational freedom.\n\nPartMode rejects malformed analytic references and mixed spherical/axial\nconcentric pairs. A rejected solve preserves the previous valid placement or,\nwhen there is no previous solve, the authored component placement.\n\n## Edit a part in assembly context\n\n1. Open an assembly and select a direct part occurrence.\n2. Choose **Edit component** or **Edit in context**.\n3. Edit the part's sketches, features, bodies, and parameters while the owning\n   assembly remains visible. The chosen occurrence is rendered as the active\n   solid; every other occurrence is ghosted and cannot be selected as editable\n   part topology.\n4. Use **Return to assembly** in the viewport banner when the part edit is\n   complete.\n\nThe active occurrence keeps its exact solved assembly transform. A feature\nedit changes the shared part definition, so every linked occurrence rebuilds\nfrom the same edited definition. The assembly identity, occurrence path, and\nedit mode survive project save and reopen. A deleted assembly, occurrence, or\npart definition fails closed instead of silently opening a different part.\n\nThis workflow currently supports direct part occurrences. Nested occurrence\npaths and associative cross-part references to ghosted geometry are not yet\nsupported.\n\n## Save and exchange\n\n- **Project file** preserves the editable schema-5 document.\n- **STEP** exchanges exact CAD bodies and assembly structure with other CAD systems.\n- **STL** exports tessellated geometry for mesh workflows such as printing.\n- **AMF** exports named bodies as XML mesh objects with explicit millimetre units.\n- **3MF** exports named bodies in a standards-based package with explicit millimetre units.\n- **Drawing** exports an SVG sheet generated from the active, settled configuration.\n\nBrowser recovery is a convenience, not a substitute for downloading an important project file.\n\nFor a constant-radius edge fillet, **Propagate exact tangent chain** asks the\nkernel to expand each persistent seed through its current non-branching OCCT\ntangent contour. The saved feature retains only the authored seed references;\nan explicit `partmode.kernel-robustness/v1` policy keeps this newly authored\nbehavior distinct from historical intent. The exact contour is rediscovered\nand fully named on every rebuild. Variable-radius propagation remains\nunavailable, and an unresolved, faulty, or incompletely named contour fails\nwithout publishing geometry.\n\n## Reopen an older project safely\n\nPartMode preserves a narrow set of historical schema-5 feature intent when an\nolder saved project is reopened. This includes sampled controlled twist,\nasymmetric loft continuity, historical Draft and unmarked Fillet tangent-\npropagation intent, and Boolean Split tool-removal semantics. The compatibility\nmarkers survive save and recovery, while a newly authored exact Fillet carries\nits explicit kernel-robustness policy and remains exact after reopen.\n\nCompatibility preservation means the original project remains recoverable; it\ndoes not make those historical semantics newly authorable exact Professional\nCore features. If an active browser project fails validation, PartMode protects\nits stored bytes from fallback autosaves until you explicitly open, recover, or\nstart another project.\n"},{"uri":"partmode://help/configurations-and-drawings","slug":"configurations-and-drawings","name":"configurations-and-drawings","title":"Configurations and drawings","description":"Switch part configurations and export the matching STEP, STL, AMF, 3MF, or SVG artifact.","audience":["human","agent"],"mimeType":"text/markdown","text":"# Configurations and drawings\n\nA part configuration is a named set of parameter overrides stored inside the project. The active configuration drives rebuild, validation, inspection, drawing generation, STEP, STL, AMF, and 3MF export, and pattern freezing through the same effective document.\n\n## Switch configuration as a person\n\n1. Choose **Manage** → **Configurations**.\n2. Choose a configuration from the design table.\n3. Wait for the local kernel and document revision to settle.\n4. Inspect the dimensions and exact body state.\n5. Choose **Output** → **Drawing** for the drawing, or use the other exact export label shown in **Output**. Output also exports STEP, STL, AMF, 3MF, or the Project file.\n\nThe exported artifact records the active configuration and effective-document evidence. Switching back to the same configuration must reproduce the same canonical document and exact geometry for unchanged inputs.\n\n## Switch configuration and export as an agent\n\n1. Read `partmode://help/agent-workflow`.\n2. Connect to a visible, browser-approved PartMode tab containing the configured\n   project. The public headless API cannot currently import that browser project\n   or template, or create a configuration table.\n3. Call `cad_capabilities` and use only operations and artifacts advertised by\n   that live build.\n4. Preview a `configuration.activate` operation with the target configuration ID.\n5. Commit the exact preview after approval, then inspect the settled configuration and geometry.\n6. In a browser session, call `cad_artifact` for `drawing-svg` or another\n   advertised format. Artifact generation uses the settled project revision and\n   active effective document.\n\nDo not edit individual table-driven parameters as a substitute for activating a configuration unless the document explicitly supports that workflow.\n\nA server-headless session can author supported typed geometry in its own durable\ndocument and use `partmode_headless_export_step` for exact STEP. It cannot\ncurrently import a configured browser project or template, create a\nconfiguration table, or use `cad_artifact`. Those workflows therefore require\nthe browser path.\n\n## What a drawing contains\n\nPartMode drawings combine exact OpenCascade hidden-line-removal projections with document-owned drawing instructions. A configured part may add a profile-derived section, limit dimensions, tolerances, notes, symbols, tables, and a title block.\n\nExact projection evidence does not make every annotation a certified manufacturing requirement. The project owns the drawing recipe, and engineering review remains responsible for its completeness, standard revision, units, tolerances, and release status.\n\nGeneral parts and assemblies can produce compact SVG drawing sheets. A persisted\npart-specific recipe can also produce a larger standards-oriented sheet.\n"},{"uri":"partmode://help/agent-workflow","slug":"agents","name":"agent-workflow","title":"Agent workflow","description":"Choose browser-approved local CAD or an explicitly granted durable headless project, then inspect capabilities, preview, and commit.","audience":["agent","human"],"mimeType":"text/markdown","text":"# Agent workflow\n\nPartMode agents use typed MCP operations, not pointer automation. An agent key\nauthenticates the agent account. CAD authority comes from one of two distinct\nchoices made by the account owner:\n\n- **Browser-approved local project:** a normal key can request a visible,\n  project-scoped session in a signed-in PartMode tab. The project stays in that\n  browser. Every session requires approval in the tab.\n- **Server-headless durable project:** an edit key created with the explicit\n  headless grant can open an account-owned project on the PartMode server with\n  no browser or per-session approval. The grant is per key, cannot be added\n  later, and means the server stores the committed project document.\n\nA key without the headless grant cannot open a server-headless project. A key\nby itself also cannot invent a browser session.\n\n## Set up hosted MCP\n\n1. Open [Agent access](/account), create or sign in to a PartMode account, and\n   create a revocable agent key.\n2. For local browser projects, leave **Allow headless server sessions** off. For\n   unattended server execution, create an edit key and deliberately enable that\n   grant after reading the storage notice.\n3. Store the key in the secret environment used to launch the agent. Do not\n   paste it into a prompt, URL, command argument, or project file.\n4. Configure the hosted endpoint.\n\n```\ncodex mcp add partmode --url https://partmode.com/mcp --bearer-token-env-var PARTMODE_AGENT_KEY\n```\n\n5. Start a new agent session and read the MCP Help resources.\n\n## Work with a browser-approved local project\n\n1. Keep the intended project open in a signed-in PartMode CAD tab.\n2. Call `partmode_list_studios`. Discovery returns non-project tab identity\n   only.\n3. Call `partmode_connect` for the chosen tab, the smallest required permission\n   set, and a bounded commit budget.\n4. Wait for the person to approve the visible connection request.\n5. Call `cad_capabilities`. This live manifest is authoritative for operations,\n   schemas, limits, and artifact support.\n6. Use `cad_inspect` and `cad_query` to establish exact current state.\n7. Use `cad_preview` for a typed transaction. Review the diagnostic and visible\n   browser preview.\n8. Use `cad_commit` only with the returned preview ID and matching revision.\n9. Inspect the settled result and call `partmode_disconnect` when finished.\n\nThe browser remains the enforcement point. The person can reject a request,\npause or disconnect the session, reject a preview, or revoke the key. The\nbrowser project and recovery data stay on that device. Commands and results\ncross the hosted relay over HTTPS and remain only in bounded process memory.\nThere is no offline queue, and the relay is not end-to-end encrypted.\n\n## Work with a server-headless durable project\n\n1. Use an edit key that was created with **Allow headless server sessions**.\n2. Call `partmode_headless_open` with a stable `projectId`, an optional project\n   name and units, the smallest permissions needed, a bounded session duration,\n   and a bounded commit budget.\n3. Call `cad_capabilities`, then use `cad_inspect`, `cad_query`, `cad_preview`,\n   `cad_commit`, and supported `cad_history` actions against the returned\n   session ID.\n4. Call `partmode_headless_export_step` when an exact STEP artifact is needed.\n5. Inspect the settled revision and document hash, then call\n   `partmode_disconnect` when finished.\n\nHeadless sessions are temporary, key-bound execution contexts. They expire in\nat most one hour and do not survive a service restart. Committed headless\ndocuments are different: PartMode stores the project ID, project name,\nrevision, full document JSON, canonical document hash, and timestamps under the\naccount. Those records survive sessions, key revocation, service restarts, and\ndeployments so another headless-granted key on the same account can reopen the\nsame `projectId`. They remain until the PartMode account is deleted. Account\ndeletion closes every live headless session and removes the durable records; it\ndoes not delete unrelated projects in browser storage.\n\nThere is no visible studio in this path. `cad_artifact`, `cad_ui`, and\n`cad_events` are refused, and a successful `cad_preview` is a typed kernel\npreview, not a human approval or visible browser preview. The dedicated\n`partmode_headless_export_step` tool is the current headless artifact path.\nRevoking the key immediately prevents further MCP authentication and closes its\nlive headless sessions, but does not delete the account's durable project\nrecords. Signing out of PartMode closes active browser relay and headless\nexecution sessions while keeping agent keys and durable headless projects in\nthe account.\n\n## Current hosted tools\n\nThe current MCP surface advertises exactly 15 tools:\n\n- Session and artifact tools: `partmode_list_studios`, `partmode_connect`,\n  `partmode_session_status`, `partmode_disconnect`, `partmode_headless_open`,\n  and `partmode_headless_export_step`.\n- Typed CAD tools: `cad_capabilities`, `cad_inspect`, `cad_query`,\n  `cad_preview`, `cad_commit`, `cad_history`, `cad_artifact`, `cad_ui`, and\n  `cad_events`.\n\nTool listing does not mean every tool is valid for every session. The two\nheadless entry and export tools require the headless grant. `cad_artifact`\ngenerates browser-session artifacts, including `drawing-svg`, and `cad_ui` and\n`cad_events` also require a browser session. Headless currently exposes STEP\nthrough its dedicated export tool. Never invent operation kinds or arguments\nfrom static documentation. The live `cad_capabilities` response wins when Help\nand a running build differ.\n\n## Local pairing\n\nThe in-app **Connect local agent** action is for a compatible loopback\nintegration on the same device. Hosted agents should use the account key and\n`https://partmode.com/mcp` instead.\n\n## Record the jet-engine assembly demonstration\n\nFrom an open editor, choose **Home** → **Template library** → **Exploded turbofan assembly** → **Open editable template**.\nThis is a native\nschema-5 assembly, not an imported display mesh. The compact model tree contains\nsix numbered module occurrences placed entirely by authored mates. Expand a\nmodule to inspect its exact part occurrences, lofted airfoil blade rows, and\npatterned seeds. **Service exploded layout** is a saved display-only exploded\nview; it changes presentation without changing the mate-solved placements.\n\nThe **Agent flight recorder** shows bounded, redacted Studio evidence. Its rows\ncome from actual tool requests, preview and commit events, OpenCascade rebuilds,\nassembly settlement, rendering, artifacts, and human-attention events. It does\nnot expose or invent an agent's private reasoning, and it never prints raw tool\narguments, project JSON, keys, or connection tokens.\n\nFor a paced browser recording, open the template visibly first, then connect the\nreal agent. The hosted default uses the visible-projection profile: use `cad_ui`\nto set presentation and narration to `recording`, activate the saved exploded\nview, and fit the visible model. Read `cad_events` to wait for each authoritative\nsettlement boundary. Template selection itself is not released through the\nhosted visible-projection profile. Do not present test-only pairing helpers or a\nprerecorded transcript as a live agent run.\n\nThe bundled engine is a conceptual exact-feature demonstrator. Its blade\nprofiles, material assignments, clearances, loads, thermal behavior, seals,\nbearings, and manufacturing details are not a certified production-engine\ndefinition.\n\n## Troubleshooting\n\n- No studio listed: sign in to the same account in PartMode and keep the CAD\n  tab open, or use a headless-granted edit key for the server path.\n- Connection pending: approve or deny the visible browser dialog.\n- `HEADLESS_NOT_GRANTED`: create a new edit key with the headless grant or use\n  the browser-approved path. Existing keys cannot be upgraded. If PartMode adds\n  a new permission, create a new key to receive it; the persisted ceiling on an\n  existing key remains unchanged.\n- `VISIBLE_STUDIO_REQUIRED`: use a browser session for `cad_artifact`, `cad_ui`,\n  or `cad_events`.\n- `HEADLESS_RATE_LIMITED` or `HEADLESS_CAPACITY_EXCEEDED`: wait for the reported\n  retry window or active work to finish before retrying.\n- `HEADLESS_PROJECT_QUOTA_EXCEEDED`: reopen one of the account's existing 32\n  project IDs. The current release removes durable headless projects through\n  account deletion, not an individual project-delete tool.\n- Revision conflict: inspect again and create a new preview from the current\n  revision.\n- Capability disabled: request only an operation or artifact advertised by\n  `cad_capabilities`.\n- Session not found: open or connect again. Sessions are temporary even when a\n  headless project document is durable.\n"},{"uri":"partmode://help/limits-and-safety","slug":"limits-and-safety","name":"limits-and-safety","title":"Limits, evidence, and safety","description":"Know which results are exact, which are presentation aids, and where engineering review remains required.","audience":["human","agent"],"mimeType":"text/markdown","text":"# Limits, evidence, and safety\n\nPartMode uses OpenCascade through replicad for exact B-rep modeling. It is closer to a parametric mechanical CAD core than a mesh generator, but it is not a replacement for every SolidWorks, CATIA, or drawing-release workflow.\n\n## Exact evidence\n\nTreat these as meaningful completion evidence when they apply:\n\n- a settled document and applied kernel revision;\n- valid exact B-rep solids with complete face, edge, and vertex identity;\n- canonical save and reopen behavior;\n- exact OpenCascade HLR evidence for drawing views;\n- at most 100 custom drawing line fonts, each with bounded width, dash pattern, and RGB values;\n- at most 50 reusable drawing blocks and 500 authored sheet annotations per project;\n- canonical project output and exact B-rep equivalence for unchanged inputs;\n- structured diagnostics when topology or intent cannot be resolved safely.\n\nScreenshots, shaded triangles, DOM rows, schema declarations, and mesh counts alone do not prove exact CAD completion.\n\n## Current product limits\n\n- No engineering simulation, certified analysis, or automated design approval.\n- No CAM, native DWG authoring, or general GD&T/PMI workbench.\n- Imported STEP does not reconstruct vendor-native feature history, mates, or PMI.\n- Large assemblies and software-rendered browsers may reduce interactive display quality while preserving exact kernel work.\n- Drawing coverage depends on the document recipe and is not automatically complete for manufacturing.\n- Standards-oriented templates are demonstrations until independently validated and released under the applicable controlled standard.\n- Server-headless execution is bounded to four live sessions and 32 durable\n  project IDs per account, at most 20 commits and one hour per session, and 120\n  headless requests per account in a one-minute request window. Global worker\n  capacity can also return a retryable capacity error. Existing project IDs can\n  be reopened without consuming another durable-project slot. There is no\n  separate per-project deletion control yet; account deletion removes all\n  durable headless projects.\n- A narrow saved-project compatibility layer preserves selected historical\n  schema-5 feature intent. Sampled controlled twist plus unmarked Draft and\n  Fillet tangent propagation remain compatibility semantics. Constant-radius\n  edge Fillet tangent chains carrying the explicit kernel-robustness policy are\n  newly authorable through exact OCCT contours; variable-radius propagation is\n  not.\n- STEP export removes the volatile wall-clock value from the exchange-file\n  header. Raw byte identity is enforced for the configuration-controlled\n  single-part path; validate multi-body and assembly exchange by exact geometry,\n  names, placements, and hierarchy rather than assuming every OCCT entity\n  number is byte-stable.\n\n## Data and privacy\n\nAnonymous CAD, browser project recovery, and browser geometry stay in browser\nstorage. The browser-approved agent path does not turn those local projects\ninto cloud projects. Its approved commands and results pass transiently through\nthe relay over HTTPS, remain in bounded process memory, and are not an\nend-to-end encrypted project channel.\n\nServer-headless CAD is an explicit exception. An edit key created with the\nheadless grant authorizes PartMode to store committed projects under the\naccount. The stored record includes project ID, project name, revision, full\ndocument JSON, canonical document hash, and timestamps. Headless execution\nsessions are temporary and key-bound, but the committed documents survive\nsession expiry, key revocation, service restarts, and deployments. They remain\nuntil account deletion. Deleting the account closes active headless sessions,\nremoves these server records, and does not delete unrelated projects held in\nbrowser storage.\n\nHeadless sessions have no visible studio. `cad_artifact`, `cad_ui`, and\n`cad_events` are refused, and typed preview evidence is not a human approval.\nTheir dedicated artifact export currently produces STEP. Choose the\nbrowser-approved path whenever a person needs to see and approve each session\nor preview, or when the agent needs a browser-generated artifact such as\n`drawing-svg`.\n\nDownload important project files before clearing site data. Keep agent keys in secret storage, grant the smallest permissions needed, and revoke keys that are no longer used.\n"}]}
