filippofinke/cad-studio

πŸ“ Describe a part, get a printable model: a native macOS CAD studio powered by Claude Code and build123d.

Swift

22

86 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a CAD app on top of Claude Code: it writes build123d models, checks its own drawings and simulates mechanisms (r/ClaudeAI)

**What I built:** CAD Studio, a native macOS app where you describe a part and get a printable parametric CAD model. It's free and open source: https://github.com/filippofinke/cad-studio **How Claude is used:** the app runs Claude Code headless (`claude -p --output-format stream-json`) inside each…

1

Oct 9, 2026

CAD Studio – describe a part in plain English, get parametric CAD you can 3D print (macOS, SwiftUI, build123d) (r/coolgithubprojects)

1

Oct 9, 2026

I built a Mac app where you describe a part in plain English and get a printable, parametric CAD model (r/SideProject)

I 3D print a lot and got tired of modeling every small bracket and latch by hand, so I built CAD Studio. You type something like "a push-to-open drawer latch with a printed spring". CAD Studio runs the coding agent you already have (Claude Code or Codex) inside a project folder. The agent writes a…

2

Oct 9, 2026

Show HN: CAD Studio – Describe a part, get parametric CAD you can print (macOS)

2

Oct 9, 2026

README

CAD Studio

CAD Studio

Describe a part, get a printable model. A native macOS CAD studio powered by the coding agent on your Mac (Claude Code or Codex) and build123d.

Type "a print-in-place planetary gearbox with four colors, animated with real gear ratios" and CAD Studio has your coding agent write a parametric model.py, run it with build123d and hand you a 3D model, an ISO technical drawing and files ready for your slicer. Every change is a new version you can go back to.

CAD Studio demo

Website Β· β–ΆοΈŽ Watch the narrated demo (MP4, with sound)

Features

  • Chat with an agent that writes and fixes parametric build123d scripts for you
  • Live 3D viewer with orbit, zoom, pan, grid, wireframe and multi-color 3MF parts
  • Measure distances and cut sections through the model
  • Animate mechanisms with a physics simulation (masses, springs, friction) and per-frame collision checks
  • Multi-part models: assembled, exploded or print-plate view, show, hide or keep parts together
  • Print plate with every part oriented and laid out for printing (plate.3mf, opened in your slicer)
  • Floating parameter panel with sliders: tweak dimensions without calling the agent
  • ISO technical drawings (first-angle projection): assembly with parts list plus one sheet per part, as a multi-page PDF
  • Version history: jump back to any generation, chat and context included, and compare versions in 3D
  • Attach or paste (⌘V) reference images, sketches, PDFs and STEP/STL files to the chat
  • Export STEP, 3MF, STL, PDF drawing and model.py as one ZIP
  • Printer-aware design rules for FDM, multi-material, resin and SLS, in mm, cm, m or inches
  • Drag panels anywhere: chat left, right or at the bottom, layout saved per project
  • English, Italian, German and French

Screenshots

Every screenshot below is from the same project: a print-in-place planetary gearbox, from the first launch to version 2.

Set up once, then describe your part. Pick your printer and units on first launch, create a project and type what you need.

First launchDescribe the part
Printer and units setupPrompt
The agent at workThe finished gearbox
Agent workingGenerated gearbox

Parts, motion and drawings. Explode the assembly, play the simulated motion and flip through the drawing sheets.

Exploded viewSimulated motion
Exploded viewAnimation
Edit parameters without the agentMeasure distances
ParametersMeasure
Section viewOne sheet per part
SectionDrawing sheets
Ask for a change: version 2Compare with version 1
Version 2Compare versions
Chat on the rightChat at the bottom
Chat on the rightChat at the bottom

Quick Start

Prerequisites

  • macOS 15 or later
  • Claude Code signed in (run claude once in Terminal), or Codex CLI signed in (codex login); pick one in Settings β†’ Agent
  • uv or Python 3.10–3.13, used to install build123d on first launch

Download

Grab CADStudio.dmg from the latest release and drag CAD Studio into Applications. The app isn't notarized, so the first time macOS blocks it: open System Settings β†’ Privacy & Security and click Open Anyway, or run:

xattr -dr com.apple.quarantine "/Applications/CAD Studio.app"

Build from source (needs Xcode 16 or later)

git clone https://github.com/filippofinke/cad-studio.git
cd cad-studio
./build.sh --install

This builds a universal CAD Studio.app, copies it to /Applications and launches it. ./build.sh --dmg builds build/CADStudio.dmg. You can also open CADStudio.xcodeproj and press ⌘R.

How it works

Every project is a folder. CAD Studio runs the agent installed on your Mac in headless mode (claude -p --output-format stream-json, or codex exec --json in its workspace sandbox) inside that folder, with a CAD system prompt that asks for a single parametric model.py. The agent runs the script with a dedicated Python environment (~/Library/Application Support/CAD Studio/venv, with build123d, matplotlib and numpy) until it produces:

<Project>/
β”œβ”€β”€ model.py              # parametric build123d script
β”œβ”€β”€ references/           # images attached in the chat
β”œβ”€β”€ output/
β”‚   β”œβ”€β”€ model.3mf         # main model, with part colors
β”‚   β”œβ”€β”€ model.stl
β”‚   β”œβ”€β”€ model.step
β”‚   β”œβ”€β”€ plate.3mf         # parts laid out ready to print
β”‚   β”œβ”€β”€ schematic.svg / .png / .pdf   # page 1 + multi-page PDF
β”‚   β”œβ”€β”€ schematic-2.svg …  # one sheet per part
β”‚   β”œβ”€β”€ animation.json    # optional: simulated motion, values and collisions
β”‚   └── manifest.json     # size, volume, parameters, warnings
└── .cadstudio/           # chat, session, logs and versions

The app streams the agent's text and tool calls into the chat, watches output/ and reloads the 3D view and the drawing as soon as files change. Each successful generation is copied to .cadstudio/versions/<n>/ together with the chat and a forked Claude session, so going back to a version also restores what the agent remembers.

Notes

  • Generations use your Claude Code or Codex plan. A simple part takes one to two minutes; a complex mechanism can take half an hour.
  • By default the agent ignores your personal configuration (Claude Code hooks, plugins and MCP servers, Codex config.toml). Turn this off in Settings β†’ Advanced if your login depends on them.
  • Settings β†’ Agent β†’ Restricted Bash (Claude Code) limits the agent to the project's Python interpreter and read-only commands.
  • Files are always in millimeters; the chosen unit is used in replies and drawings.

Contributing

Open a pull request against main with a Conventional Commits title (feat: …, fix: …). PRs are squash-merged, and release-please turns them into a release PR that bumps the version and updates the changelog. Merging it publishes a GitHub release with the DMG attached.

Author

πŸ‘€ Filippo Finke

Show your support

Give a ⭐️ if this project helped you!

Buy Me A McFlurry

πŸ“ License

Copyright Β© 2026 Filippo Finke.
This project is MIT licensed.


Not affiliated with Anthropic.

3d-printing
3mf
ai
ai-agents
anthropic
build123d
cad
claude
claude-code
llm
macos
parametric-design
python
realitykit
step
stl
swift
swiftui
technical-drawing

filippofinke/cad-studio

πŸ“ Describe a part, get a printable model: a native macOS CAD studio powered by Claude Code and build123d.

Swift

22

86 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a CAD app on top of Claude Code: it writes build123d models, checks its own drawings and simulates mechanisms (r/ClaudeAI)

**What I built:** CAD Studio, a native macOS app where you describe a part and get a printable parametric CAD model. It's free and open source: https://github.com/filippofinke/cad-studio **How Claude is used:** the app runs Claude Code headless (`claude -p --output-format stream-json`) inside each…

1

Oct 9, 2026

CAD Studio – describe a part in plain English, get parametric CAD you can 3D print (macOS, SwiftUI, build123d) (r/coolgithubprojects)

1

Oct 9, 2026

I built a Mac app where you describe a part in plain English and get a printable, parametric CAD model (r/SideProject)

I 3D print a lot and got tired of modeling every small bracket and latch by hand, so I built CAD Studio. You type something like "a push-to-open drawer latch with a printed spring". CAD Studio runs the coding agent you already have (Claude Code or Codex) inside a project folder. The agent writes a…

2

Oct 9, 2026

Show HN: CAD Studio – Describe a part, get parametric CAD you can print (macOS)

2

Oct 9, 2026

README

CAD Studio

CAD Studio

Describe a part, get a printable model. A native macOS CAD studio powered by the coding agent on your Mac (Claude Code or Codex) and build123d.

Type "a print-in-place planetary gearbox with four colors, animated with real gear ratios" and CAD Studio has your coding agent write a parametric model.py, run it with build123d and hand you a 3D model, an ISO technical drawing and files ready for your slicer. Every change is a new version you can go back to.

CAD Studio demo

Website Β· β–ΆοΈŽ Watch the narrated demo (MP4, with sound)

Features

  • Chat with an agent that writes and fixes parametric build123d scripts for you
  • Live 3D viewer with orbit, zoom, pan, grid, wireframe and multi-color 3MF parts
  • Measure distances and cut sections through the model
  • Animate mechanisms with a physics simulation (masses, springs, friction) and per-frame collision checks
  • Multi-part models: assembled, exploded or print-plate view, show, hide or keep parts together
  • Print plate with every part oriented and laid out for printing (plate.3mf, opened in your slicer)
  • Floating parameter panel with sliders: tweak dimensions without calling the agent
  • ISO technical drawings (first-angle projection): assembly with parts list plus one sheet per part, as a multi-page PDF
  • Version history: jump back to any generation, chat and context included, and compare versions in 3D
  • Attach or paste (⌘V) reference images, sketches, PDFs and STEP/STL files to the chat
  • Export STEP, 3MF, STL, PDF drawing and model.py as one ZIP
  • Printer-aware design rules for FDM, multi-material, resin and SLS, in mm, cm, m or inches
  • Drag panels anywhere: chat left, right or at the bottom, layout saved per project
  • English, Italian, German and French

Screenshots

Every screenshot below is from the same project: a print-in-place planetary gearbox, from the first launch to version 2.

Set up once, then describe your part. Pick your printer and units on first launch, create a project and type what you need.

First launchDescribe the part
Printer and units setupPrompt
The agent at workThe finished gearbox
Agent workingGenerated gearbox

Parts, motion and drawings. Explode the assembly, play the simulated motion and flip through the drawing sheets.

Exploded viewSimulated motion
Exploded viewAnimation
Edit parameters without the agentMeasure distances
ParametersMeasure
Section viewOne sheet per part
SectionDrawing sheets
Ask for a change: version 2Compare with version 1
Version 2Compare versions
Chat on the rightChat at the bottom
Chat on the rightChat at the bottom

Quick Start

Prerequisites

  • macOS 15 or later
  • Claude Code signed in (run claude once in Terminal), or Codex CLI signed in (codex login); pick one in Settings β†’ Agent
  • uv or Python 3.10–3.13, used to install build123d on first launch

Download

Grab CADStudio.dmg from the latest release and drag CAD Studio into Applications. The app isn't notarized, so the first time macOS blocks it: open System Settings β†’ Privacy & Security and click Open Anyway, or run:

xattr -dr com.apple.quarantine "/Applications/CAD Studio.app"

Build from source (needs Xcode 16 or later)

git clone https://github.com/filippofinke/cad-studio.git
cd cad-studio
./build.sh --install

This builds a universal CAD Studio.app, copies it to /Applications and launches it. ./build.sh --dmg builds build/CADStudio.dmg. You can also open CADStudio.xcodeproj and press ⌘R.

How it works

Every project is a folder. CAD Studio runs the agent installed on your Mac in headless mode (claude -p --output-format stream-json, or codex exec --json in its workspace sandbox) inside that folder, with a CAD system prompt that asks for a single parametric model.py. The agent runs the script with a dedicated Python environment (~/Library/Application Support/CAD Studio/venv, with build123d, matplotlib and numpy) until it produces:

<Project>/
β”œβ”€β”€ model.py              # parametric build123d script
β”œβ”€β”€ references/           # images attached in the chat
β”œβ”€β”€ output/
β”‚   β”œβ”€β”€ model.3mf         # main model, with part colors
β”‚   β”œβ”€β”€ model.stl
β”‚   β”œβ”€β”€ model.step
β”‚   β”œβ”€β”€ plate.3mf         # parts laid out ready to print
β”‚   β”œβ”€β”€ schematic.svg / .png / .pdf   # page 1 + multi-page PDF
β”‚   β”œβ”€β”€ schematic-2.svg …  # one sheet per part
β”‚   β”œβ”€β”€ animation.json    # optional: simulated motion, values and collisions
β”‚   └── manifest.json     # size, volume, parameters, warnings
└── .cadstudio/           # chat, session, logs and versions

The app streams the agent's text and tool calls into the chat, watches output/ and reloads the 3D view and the drawing as soon as files change. Each successful generation is copied to .cadstudio/versions/<n>/ together with the chat and a forked Claude session, so going back to a version also restores what the agent remembers.

Notes

  • Generations use your Claude Code or Codex plan. A simple part takes one to two minutes; a complex mechanism can take half an hour.
  • By default the agent ignores your personal configuration (Claude Code hooks, plugins and MCP servers, Codex config.toml). Turn this off in Settings β†’ Advanced if your login depends on them.
  • Settings β†’ Agent β†’ Restricted Bash (Claude Code) limits the agent to the project's Python interpreter and read-only commands.
  • Files are always in millimeters; the chosen unit is used in replies and drawings.

Contributing

Open a pull request against main with a Conventional Commits title (feat: …, fix: …). PRs are squash-merged, and release-please turns them into a release PR that bumps the version and updates the changelog. Merging it publishes a GitHub release with the DMG attached.

Author

πŸ‘€ Filippo Finke

Show your support

Give a ⭐️ if this project helped you!

Buy Me A McFlurry

πŸ“ License

Copyright Β© 2026 Filippo Finke.
This project is MIT licensed.


Not affiliated with Anthropic.

3d-printing
3mf
ai
ai-agents
anthropic
build123d
cad
claude
claude-code
llm
macos
parametric-design
python
realitykit
step
stl
swift
swiftui
technical-drawing