Generate parametric 3D CAD models from text descriptions
Browser-based text-to-CAD tool that generates parametric 3D models from natural language, with real-time preview and multi-format export.
Maintainer of this project? Claim this page to edit the listing.
0.3.0Add to Favorites
Why it matters
Transform natural language descriptions and reference images into fully parametric 3D CAD models that can be instantly previewed in the browser, adjusted with interactive sliders, and exported as STL, SCAD, or DXF files for manufacturing or 3D printing.
Outcomes
What it gets done
Convert plain English descriptions into OpenSCAD code with BOSL/BOSL2/MCAD library support
Extract adjustable dimensions automatically and generate interactive parameter controls
Render 3D previews in real-time using WebAssembly-powered OpenSCAD in the browser
Export production-ready files in multiple formats (STL for printing, SCAD for editing, DXF for 2D)
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/adam-cad-cadam | bash Overview
CADAM
CADAM is a browser-based text-to-CAD generator that transforms plain English descriptions and reference images into fully parametric 3D models. It produces OpenSCAD code with automatically extracted dimension controls, real-time preview, and exports to STL, SCAD, or DXF formats - all running in your browser via WebAssembly with no installation required. Use CADAM when you need to rapidly prototype mechanical parts, brackets, enclosures, or assemblies from a verbal description and want parametric controls for instant dimension tweaks. It excels at generating complex multi-part machines (V8 engines, turbofan jets, radial aircraft engines) and clean parametric fundamentals (knurled knobs, threaded bolts, honeycomb brackets) from single prompts. Do NOT use CADAM if you require precise engineering tolerances for production parts without manual verification, or if you need native support for STEP/IGES industry-standard exchange formats (only STL, S
What it does
CADAM is a browser-based text-to-CAD generator that transforms plain English descriptions and reference images into fully parametric 3D models. It produces OpenSCAD code with automatically extracted dimension controls, real-time preview, and exports to STL, SCAD, or DXF formats - all running in your browser via WebAssembly with no installation required.
When to use - and when NOT to
Use CADAM when you need to rapidly prototype mechanical parts, brackets, enclosures, or assemblies from a verbal description and want parametric controls for instant dimension tweaks. It excels at generating complex multi-part machines (V8 engines, turbofan jets, radial aircraft engines) and clean parametric fundamentals (knurled knobs, threaded bolts, honeycomb brackets) from single prompts. The benchmarks directory demonstrates outputs ranging from twisted hexagonal vases to 9-cylinder radial engines with 15+ adjustable dimensions.
Do NOT use CADAM if you require precise engineering tolerances for production parts without manual verification, or if you need native support for STEP/IGES industry-standard exchange formats (only STL, SCAD, and DXF are available).
Inputs and outputs
You provide natural language descriptions of your desired 3D model ("Design a 90-degree angle mounting bracket with 80x80 mm flanges that are 5 mm thick, lightened with a hexagonal honeycomb cutout pattern") and optionally upload reference images to guide generation. CADAM returns parametric OpenSCAD code with interactive sliders for every extracted dimension, a live 3D preview that updates instantly when you adjust parameters, and downloadable files in STL (for 3D printing), SCAD (for further editing), or DXF (for 2D profiles).
Integrations
CADAM runs OpenSCAD via WebAssembly for in-browser execution and includes BOSL, BOSL2, and MCAD library support. The stack uses React 19.1 for the UI, Supabase for backend services, and built-in Geist font support for text features in models.
Setup example
To run CADAM locally:
# Clone the repository
git clone https://github.com/Adam-CAD/CADAM.git
cd CADAM
# Install dependencies
npm install
# Start Supabase
npx supabase start
npx supabase functions serve --no-verify-jwt
# Start the development server
npm run dev
Configure your environment with API keys for your chosen AI provider and Supabase credentials. For local webhook testing, use ngrok to expose your development server and set WEBHOOK_BASE_URL to the public tunnel URL.
Who it's for
CADAM serves makers, hardware engineers, and product designers who need to quickly iterate on mechanical concepts without learning OpenSCAD syntax. It's ideal for 3D printing enthusiasts prototyping functional parts, educators teaching parametric design principles, and engineering teams exploring design variations through natural language. The live demo at adam.new/cadam requires no setup - generate and export models in seconds directly from your browser.
Source README
โฎ The Open Source Text to CAD Web App โฎ
๐ Try it live
๐ adam.new/cadam. Generate a CAD model in seconds, right in your browser. No install required.
โจ Features
- ๐ค AI-Powered Generation - Transform natural language and images into 3D models
- ๐๏ธ Parametric Controls - Interactive sliders for instant dimension adjustments
- ๐ฆ Multiple Export Formats - Export as .STL, .SCAD, or .DXF files
- ๐ Browser-Based - Runs entirely in your browser using WebAssembly
- ๐ Library Support - Includes BOSL, BOSL2, and MCAD libraries
๐ฏ Key Capabilities
| Feature | Description |
|---|---|
| Natural Language Input | Describe your 3D model in plain English |
| Image References | Upload images to guide model generation |
| Real-time Preview | See your model update instantly with Three.js |
| Parameter Extraction | Automatically identifies adjustable dimensions |
| Smart Updates | Efficient parameter changes without AI re-generation |
| Custom Fonts | Built-in Geist font support for text in models |
๐บ Screenshots
๐งช Benchmarks
A showcase of what CADAM builds from a single plain-language description - from full multi-part machines down to clean parametric parts. Each model below started from the prompt shown and came out as fully parametric OpenSCAD, ready to export as .STL, .SCAD, or .DXF. The source and a short write-up for each live in benchmarks/; the orbiting previews are rendered with benchmarks/render.sh.
Complex machines & assemblies
| Model | Prompt | Controls | Output |
|---|---|---|---|
| V8 engine | A complete V8 internal combustion engine: two banks of four cylinders in a 90ยฐ V, cylinder heads with ribbed valve covers, an intake manifold in the valley, exhaust headers down each bank, a crankshaft with counterweights, pistons and connecting rods, a front pulley, and an oil pan. | 22 dims 8 colors |
![]() |
| 9-cylinder radial aircraft engine | Design a 9-cylinder radial aircraft engine: a central round crankcase with nine finned cylinders arranged evenly in a star pattern around it, each cylinder with stacked cooling fins and a domed cylinder head, and a central propeller shaft hub at the front. | 15 dims 6 colors |
![]() |
| Turbofan jet engine | A complete high-bypass turbofan: a front fan you can see into, a bypass cowl, an internal core with compressor/turbine stages, outlet guide vanes, and an exhaust plug. | 2 dims 10 colors |
![]() |
| Axial turbine blisk | Model an axial-flow turbine blisk (bladed disk) like a jet engine compressor stage: a central hub with a shaft bore and a single ring of about 28 thin aerofoil blades around the rim, each blade clearly twisted along its height from root to tip like a real turbine blade. | 14 dims 1 color |
![]() |
Parametric fundamentals
| Model | Prompt | Controls | Output |
|---|---|---|---|
| Twisted hexagonal vase | Design a twisted hexagonal vase: a hollow shell about 150 mm tall that tapers from a 70 mm base to a 50 mm mouth, with the hexagonal cross-section twisting 120 degrees from bottom to top, a 2 mm wall, and a closed bottom. | 6 dims 1 color |
![]() |
| Knurled control knob | Make a knurled control knob 40 mm in diameter and 22 mm tall with a diamond-knurled grip, a raised pointer mark on top, a 6 mm D-shaped shaft bore, and an M3 set-screw hole through the side. | 15 dims 2 colors |
![]() |
| Hex bolt & nut - real threads | Create an M12 hex bolt 45 mm long with a real threaded shaft and a standard hex head, plus its matching hex nut, placed side by side. | 3 dims 2 colors |
![]() |
| Honeycomb lightweight bracket | Design a 90-degree angle mounting bracket with 80x80 mm flanges that are 5 mm thick, lightened with a hexagonal honeycomb cutout pattern on both faces, four M5 mounting holes, and a filleted inside corner. | 13 dims 1 color |
![]() |
| NACA 2412 tapered wing | Model a tapered aircraft wing section using a real NACA 2412 airfoil: 120 mm root chord tapering to 80 mm tip over a 200 mm span, with two spanwise spar tubes and a few lightening holes. | 9 dims 1 color |
![]() |
| Threaded jar & screw-on lid | Create a small storage jar with external screw threads at the neck and a matching screw-on lid with internal threads. Jar body 60 mm diameter, 70 mm tall, 2.5 mm walls; show the lid unscrewed and sitting beside the jar. | 9 dims 2 colors |
![]() |
| Right-angle bevel gear drive | Build a right-angle bevel gear drive: a 24-tooth bevel gear on a vertical shaft meshing at 90 degrees with a 16-tooth bevel pinion on a horizontal shaft, each on a short stub shaft. | 9 dims 3 colors |
![]() |
| Centrifugal pump impeller | Design a centrifugal pump impeller: a 90 mm diameter back-plate with a central 12 mm bore and a raised hub, and seven backward-curved blades that sweep from the hub out to the rim, each blade curving smoothly along its path. | 10 dims 1 color |
![]() |
| Herringbone planetary gear stage | Model a herringbone planetary gear stage at module 1.5: a central sun gear with 18 teeth, three planet gears with 18 teeth each meshing around it, an internal ring gear with 54 teeth, and a carrier plate linking the three planet axles. Color the sun, planets, ring, and carrier differently. | 10 dims 4 colors |
![]() |
๐ Quick Start
# Clone the repository
git clone https://github.com/Adam-CAD/CADAM.git
cd CADAM
# Install dependencies
npm install
# Start Supabase
npx supabase start
npx supabase functions serve --no-verify-jwt
# Start the development server
npm run dev
๐ Prerequisites
- Node.js ^20.19.0 or >=22.12.0, with npm 10+
- Supabase CLI
- ngrok (for local webhook development)
๐ง Setting Up Environment Variables
1. Frontend Environment:
- Copy
.env.local.templateto.env.local - Update all required keys in
.env.local:VITE_SUPABASE_ANON_KEY="<Test Anon Key>" VITE_SUPABASE_URL='http://127.0.0.1:54321'
2. Server Environment:
- Add server-side keys to
.env.local, including:ANTHROPIC_API_KEY="<Test Anthropic API Key>" OPENROUTER_API_KEY="<Test OpenRouter API Key>" OPENAI_API_KEY="<Test OpenAI API Key>" GOOGLE_API_KEY="<Test Google API Key>" FAL_KEY="<Test FAL API Key>" SUPABASE_SERVICE_ROLE_KEY="<Test Service Role Key>" BILLING_SERVICE_URL="<Test Billing Service URL>" BILLING_SERVICE_KEY="<Test Billing Service Key>" ENVIRONMENT="local" ADAM_URL="<Adam URL or dev URL>" # Checkout and portal redirect target WEBHOOK_BASE_URL="<Public TanStack App URL>" # Your app URL for /cadam/api callbacks NGROK_URL="<NGROK URL>" # Optional local Supabase Storage tunnel for provider-readable signed URLs
๐ Setting Up ngrok for Local Development
CADAM uses public URLs for provider callbacks and local signed storage URLs:
Install ngrok if you haven't already:
npm install -g ngrok # or brew install ngrokStart an ngrok tunnel pointing to your TanStack Start dev server:
ngrok http 3000Copy the generated ngrok URL (e.g., https://xxxx-xx-xx-xxx-xx.ngrok.io) and add it to your
.env.localfile:WEBHOOK_BASE_URL="https://xxxx-xx-xx-xxx-xx.ngrok.io"If a provider must fetch local Supabase Storage signed URLs, run a second tunnel to Supabase and set
NGROK_URLto that URL.Ensure
ENVIRONMENT="local"is set in the same file.
๐ป Development Workflow
Install Dependencies
npm i
Start Supabase Services
npx supabase start
npm run dev
๐ ๏ธ Built With
- Frontend: React 19 + TypeScript + TanStack Start + Vite
- 3D Rendering: Three.js + React Three Fiber
- CAD Engine: OpenSCAD WebAssembly
- Backend: TanStack Start server routes + Supabase PostgreSQL/Auth/Storage
- AI: Anthropic Claude API
- Styling: Tailwind CSS + shadcn/ui
- Libraries: BOSL, BOSL2, MCAD
๐ค Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also open an issue.
See the CONTRIBUTING.md for instructions and code of conduct.
๐ Credits
This app wouldn't be possible without the work of:
๐ License
This distribution is licensed under the GNU General Public License v3.0 (GPLv3). See LICENSE.
Components and attributions:
- Portions of this project are derived from
openscad-web-gui(GPLv3). - This distribution includes unmodified binaries from OpenSCAD WASM under
GPL v2 or later; distributed here under GPLv3 as part of the combined work.
Seesrc/vendor/openscad-wasm/SOURCE-OFFER.txt.
๐ Star History
Live chart by RepoStars - click for the interactive version.
Discussion
Questions & comments ยท 0
Sign In Sign in to leave a comment.












