The short answer
If you upload an .FCStd to a chat window, the model gets a zip archive full of XML and BREP geometry it cannot reason about as a model. You can paste a Python snippet, a screenshot or a property dump and Claude will answer sensibly — but it is answering about a copy, and every change still has to be typed back into FreeCAD by hand.
The useful configuration is the reverse: the model lives inside FreeCAD as a workbench and reads the live document through the FreeCAD Python API. I built that plugin — FreeGAD — because I kept copy-pasting Python between a browser tab and the FreeCAD console and wanted the assistant next to the model instead. This note is what it actually does, so you can decide whether the same pattern fits your work.
What the model sees
Every conversation starts with a compact snapshot of the active document: objects, their types and dependencies, bounding boxes, volumes, placements and the current selection. It is kept small and stable on purpose, so prompt caching works and repeated questions stay cheap.
When it needs more, the model calls read tools over the live document: every property, expressions, sketch geometry and constraints, spreadsheet cells, face and edge data. And there is one tool AutoCAD does not get: take_screenshot renders the 3D view and sends the image to the model, so it can check shape, orientation and its own edits visually.
It can also measure — distances between objects or sub-elements, face areas, edge lengths, radii — instead of estimating from a picture.
What the model can change
Write tools: run_python (the full FreeCAD API, one undo step, recompute afterwards), set_property, set_expression, delete_object, set_visibility, select and recompute.
Every write opens a confirmation dialog with the exact code or change before anything happens. There is an Auto-approve edits tick box in the panel for when you trust the session — off by default. Each tool call is one transaction, so anything the model did can be undone with normal Undo.
What it does not do
- It does not model a part for you from a sentence. It reads, measures and edits what exists through the same API you would script by hand; the design intent still comes from you.
- It does not write anything into the
.FCStd. Notes and chat history live in%APPDATA%\FreeGAD, keyed by the documentUid, so they survive renames and moves without touching the file. - It does not run on Linux or macOS yet. The plugin, installer and key storage (Windows DPAPI) are Windows-only today; FreeCAD 1.0 and 1.1 are the supported hosts.
Memory across sessions
remember stores per-user notes (conventions, printer, materials, how you like answers) and per-document notes (design intent, which sketch drives what). They are injected into later sessions, so the assistant stops asking the same questions. FreeGAD → Memory… lists and deletes what it remembers; you can also just say "remember that …" or "forget that …".
Models and cost
The default model is claude-opus-5 through the Anthropic API with your own key; any OpenAI-compatible endpoint works too — OpenAI, OpenRouter or a local server, which also answers the "can this stay offline?" question. You pay your provider per token; the plugin itself is free under AGPL. The client is raw HTTP on the standard library, no SDK, because FreeCAD ships its own embedded Python and pip-installing into it is fragile across versions. The key is stored DPAPI-encrypted for the current Windows user, never in plain text.
Guard rails for scripts
A runaway boolean or tessellation loop can push Windows into swapping so hard that only a reboot helps. run_python therefore has a script time limit (120 s by default, 0 to disable) and a memory guard that aborts a script once it grows FreeCAD's memory past half the machine's RAM or leaves less than about 8 % free. Both are on by default and can be switched off in Settings.
Telemetry, honestly
Usage statistics are on by default and can be turned off in Settings… → Collect anonymous usage data. What is sent per turn: model and effort, token counts, API and tool latencies, how long the GUI thread was blocked, memory growth per script, error class, plugin, FreeCAD and OS versions, object count, keyed by a random install id. Never sent: prompts, answers, code, file names, document contents, the API key.
Installing it
Download the installer: it installs per-user into %APPDATA%\FreeCAD\Mod\FreeGAD without admin rights and asks for the provider and API key. Start FreeCAD — a FreeGAD menu and toolbar button appear in every workbench, plus a FreeGAD workbench of its own. Developers can install from the repo with install.ps1. The project page has the summary; the design notes for FreeGAD and its AutoCAD sibling explain the architecture.
What I'd do differently, and what's next
I would have shipped the screenshot tool first: it is the feature people react to, and it caught more of the model's own mistakes than any text check. Next are Linux support if people ask for it, and a short video of a sketch → constraint → measure → edit loop.