5 min read

Text-to-CAD: Design 3D-Printable Parts by Asking Your AI Agent (GitHub, Scanned)

Ask Claude Code, Codex or Cursor for a part and get a real CAD model, a STEP or STL file and a print-ready check.

Text-to-CAD logo
✅
Scan: safe. Nothing malicious. The install pipes a script to your shell, and the JavaScript lockfile has seven high advisories, mostly denial of service in build tooling. Scanned Nov 3, 2026; the full report is below.

Text-to-CAD turns your coding agent into a CAD designer. You describe a part, a bracket with two M4 holes or an enclosure for a board, and the agent writes it as a Python script with build123d, a real CAD kernel, then builds it into STEP, GLB, STL or 3MF files and shows the result in a 3D viewer that updates on every change. Because the model is code, an edit is a sentence, not an afternoon of clicking.

It goes past the shape. Skills check printability (wall thickness, overhangs, support volume), review a part for sheet metal or CNC, draw dimensioned engineering drawings as a PDF, find off-the-shelf parts like screws and bearings, slice to G-code with OrcaSlicer and send prints to Bambu Lab printers. It works in Claude Code, Codex, Cursor, Gemini and Grok, is MIT-licensed, and has about 25,000 stars since its April 2026 start, with version 0.10 out this week.

One thing to know up front: it asks about telemetry. The installer and the viewer's settings both let you keep or switch off anonymous usage data and crash reports, and the install command takes a --no-telemetry flag.

Who it is for

Makers with a 3D printer, hardware hobbyists and engineers who want a quick first version of a part, and robotics builders who need URDF or simulator files without learning a CAD package.

Getting started

1. macOS and Linux (installs uv if missing and sets up every agent app it finds)

curl -fsSL https://texttocad.dev/install.sh | sh -s -- --dry-run

2. Happy with the plan? Run it for real (add --no-telemetry to opt out)

curl -fsSL https://texttocad.dev/install.sh | sh

3. Restart your agent app, then ask for a part

Design a wall hook for a 20 mm rail, as STL

On Windows the installer runs in PowerShell; the README has the command. The dry run prints exactly what it will add to each agent app before changing anything.

Safety scan

We cloned earthtojake/text-to-cad at commit 244eecd on Nov 3, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secret hits across 2,086 files and 438,000 lines, mostly Python with JavaScript and TypeScript for the viewer. No binaries committed.
  • The recommended install pipes a script from texttocad.dev to your shell. It is 213 lines in scripts/install/install.sh, uses no sudo and does not edit your shell profile, and it has a --dry-run mode; read it or run the dry run first.
  • package-lock.json has 944 packages with 16 advisories: seven high, six moderate, three low. The highs are denial of service in body-parser, brace-expansion and zod, and a Windows command injection in systeminformation, all in tooling for the viewer and the build rather than in the CAD files you make.
  • Six workflows, none using pull_request_target; four third-party action uses, none pinned to a commit. Dependabot, a security policy and a licence are present.
  • Network hosts in the code are texttocad.dev and api.texttocad.dev (the version feed and the telemetry receiver, which forwards to PostHog), astral.sh for uv, api.step.parts for the parts search, and test hosts. The telemetry is asked about at setup and can be switched off.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious code15 pattern hits found and read; every one is listed under the raw findings.
Install-time code2 setup.py files with custom install logic. 3 installer scripts (one fetches and runs a remote script)
Committed binariesNone.
CI workflows6 workflows. None use pull_request_target. 4 of 4 third-party actions pinned to a tag rather than a commit.
Network hosts40 distinct hosts referenced from source; most often github.com, cad.invalid, one.test, cad.test. No URLs to bare IP addresses.
Known vulnerabilities16 advisories across 891 pinned packages: 0 critical, 7 high, 6 moderate, 3 low. package-lock.json: 944 packages, 16 advisories; requirements-dev.txt: 2 packages, 0 advisories.
Project hygieneHas security policy, automated dependency updates, licence file, contributing guide. Missing CodeQL.
OpenSSF ScorecardNot scored: the project is not in Scorecard's weekly index.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Pattern hits (15)
WhereRuleMatch
apps/docs/src/lib/content.ts:31download-piped-to-shell{ system: "macOS and Linux", language: "bash", command: "curl -fsSL https://texttocad.dev/install.sh | sh" },
packages/cad-mcp/src/cad_mcp/engine.py:481download-piped-to-shell"failed: run the install command, `curl -fsSL https://texttocad.dev/install.sh | sh`")
packages/cad-server/src/cad_server/updates.py:55download-piped-to-shellINSTALL = "curl -fsSL https://texttocad.dev/install.sh | sh" # installs or updates text-to-cad: macOS and Linux
scripts/install/dev_install.py:77download-piped-to-shellINSTALL_COMMANDS = ("curl -fsSL https://texttocad.dev/install.sh | sh", "irm https://www.texttocad.dev/install.ps1 | iex")
scripts/install/install.ps1:50download-piped-to-shellWrite-Host 'On macOS and Linux: curl -fsSL https://texttocad.dev/install.sh | sh'
scripts/install/install.sh:4download-piped-to-shell# curl -fsSL https://texttocad.dev/install.sh | sh
scripts/install/install.sh:33download-piped-to-shellcurl -fsSL https://texttocad.dev/install.sh | sh
scripts/install/install.sh:34download-piped-to-shellcurl -fsSL https://texttocad.dev/install.sh | sh -s -- --dry-run
scripts/install/install.sh:79download-piped-to-shellsay " curl -LsSf https://astral.sh/uv/install.sh | sh"
scripts/install/install.sh:80download-piped-to-shellcurl -LsSf https://astral.sh/uv/install.sh | sh
scripts/install/install.sh:82download-piped-to-shellsay " wget -qO- https://astral.sh/uv/install.sh | sh"
scripts/install/install.sh:83download-piped-to-shellwget -qO- https://astral.sh/uv/install.sh | sh
tests/python/global/test_plugin_manifests.py:98download-piped-to-shell (test/example)["curl -fsSL https://texttocad.dev/install.sh | sh", "irm https://www.texttocad.dev/install.ps1 | iex"])
tests/python/packages/cad_server/mcp/test_server.py:1059download-piped-to-shell (test/example)r"app here, run: (curl -fsSL https://texttocad\.dev/install\.sh \| sh|"
tests/python/packages/cad_server/test_updates.py:81download-piped-to-shell (test/example)"app here, run: curl -fsSL https://texttocad.dev/install.sh | sh")
Installer scripts (3)
Worst known vulnerabilities (16 of 16)
AdvisorySeverityPackageSummary
GHSA-27r3-jxmh-p828highbody-parser@2.3.0body-parser vulnerable to Denial of Service via trailing bytes after a compressed request body
GHSA-6j4f-fj2g-mc7phighbrace-expansion@5.0.9brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-qhr7-859c-m2p7highbrace-expansion@5.0.9brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-6j4f-fj2g-mc7phighbrace-expansion@1.1.18brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-qhr7-859c-m2p7highbrace-expansion@1.1.18brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-3f7j-7jwc-fxfjhighsysteminformation@5.33.15systeminformation vulnerable to Windows command injection in services() through Unicode quotation marks
GHSA-mrhx-c7xc-m3w5highzod@4.5.4Zod can exhaust memory while validating oversized constrained collections
GHSA-g3hv-75wg-m249moderateminimatch@10.2.6minimatch has potential denial of service via globparts amplification
GHSA-q2hr-2g5m-vwhrmoderatebrace-expansion@5.0.9brace-expansion: Quadratic-time expansion of the `{a},b}` rewrite causes CPU denial of service
GHSA-w74x-v6f9-j3xgmoderatefast-uri@3.1.8fast-uri vulnerable to URI scheme spoofing via percent-encoded scheme decoding
GHSA-wjr9-j795-jxcrmoderatefast-uri@3.1.8fast-uri vulnerable to host confusion via unchecked WHATWG host canonicalization
GHSA-g3hv-75wg-m249moderateminimatch@3.1.5minimatch has potential denial of service via globparts amplification
GHSA-q2hr-2g5m-vwhrmoderatebrace-expansion@1.1.18brace-expansion: Quadratic-time expansion of the `{a},b}` rewrite causes CPU denial of service
GHSA-gcqx-w48m-w2h4lowdeepmerge@4.3.1deepmerge mergeObject() allows prototype poisoning of returned objects
GHSA-333x-w4r6-6crplowfast-uri@3.1.8fast-uri vulnerable to scheme injection via an unescaped first-segment colon in suffix references
GHSA-xhq7-xmqj-769hlowfast-uri@3.1.8fast-uri vulnerable to improper path equivalence in relative reference normalization

By the numbers

Stars25.1K
Forks2,390
Contributors31
Commits1,485
Open issues16
Open pull requests33
Releases93
Latest releasev0.10.0
LicenceMIT
Main languagePython
Project age6 months
Last pushNov 3, 2026
Tracked files2,086
Lines of code438.2K
Checkout size27 MB

Lines by language: Python 271.7K, JavaScript 93.9K, Markdown 27.3K, TypeScript 20.1K, JSON 18.6K, Shell 3,021.

Questions

Is Text-to-CAD free?

Yes, MIT-licensed with no paid tier. Your only cost is the tokens your agent spends writing the model, plus any fabrication service you choose to order from.

Do I need to know CAD?

No. You describe the part in plain language, or show it a picture, and the agent writes the model. Knowing the dimensions you need helps more than knowing CAD.

Can it send a part straight to my printer?

Yes for Bambu Lab printers, through Bambu Connect or Bambu Studio. For other printers it slices to G-code with OrcaSlicer using your own presets, or exports STL and 3MF for your usual slicer.

Is this the same as Zoo's Text-to-CAD?

No. Zoo's Text-to-CAD is a hosted web tool with its own listing in our directory. This Text-to-CAD is an open-source plugin by earthtojake that runs inside your own coding agent, on your own machine.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.