- 🤖 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 or .SCAD files
- 🌐 Browser-Based - Runs entirely in your browser using WebAssembly
- 📚 Library Support - Includes BOSL, BOSL2, and MCAD libraries
| 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 |
🎬 Try it live: https://adam.new/cadam
# Clone the repository
git clone https://github.com/Adam-CAD/CADAM.git
cd CADAM
# Install dependencies
npm install
# Start Supabase (Requires Docker Desktop)
npx supabase start
npx supabase functions serve --no-verify-jwt
# Start the development server
npm run devNote: Ensure Docker Desktop is installed and running before executing
npx supabase start. Supabase CLI requires Docker to run local services.
- Node.js and npm (v18+)
- Docker Desktop - Required for running Supabase locally (Supabase CLI uses Docker containers)
- ngrok (for local webhook development) - Optional, only needed for image URLs to external AI services
- 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'
-
Copy
supabase/functions/.env.templatetosupabase/functions/.env -
Update all required keys in
supabase/functions/.env, including:OPENROUTER_API_KEY="<OpenRouter API Key>" ENVIRONMENT="local" NGROK_URL="<NGROK URL>" # Your ngrok tunnel URL, e.g., https://xxxx-xx-xx-xxx-xx.ngrok.ioAbout OPENROUTER_API_KEY:
- This is a unified API key for accessing multiple AI providers through OpenRouter
- Used for all cloud-based models: Google Gemini, Anthropic Claude, and OpenAI GPT
- Note: LM Studio models (local) don't require this key
Optional for LM Studio:
LMSTUDIO_URL="http://host.docker.internal:1234/v1/chat/completions" # Only needed if default doesn't work
CADAM uses ngrok to send image URLs to external AI services (for Anthropic/OpenRouter to access Supabase storage URLs):
-
Install ngrok if you haven't already:
npm install -g ngrok # or brew install ngrok -
Start an ngrok tunnel pointing to your Supabase instance:
ngrok http 54321
-
Copy the generated ngrok URL (e.g., https://xxxx-xx-xx-xxx-xx.ngrok.io) and add it to your
supabase/functions/.envfile:NGROK_URL="https://xxxx-xx-xx-xxx-xx.ngrok.io" -
Ensure
ENVIRONMENT="local"is set in the same file.
Note: LM Studio uses host.docker.internal to connect directly to your host machine - no ngrok needed for LM Studio!
npm iImportant: Make sure Docker Desktop is running before starting Supabase services.
npx supabase start
npx supabase functions serve --no-verify-jwt- Frontend: React 18 + TypeScript + Vite
- 3D Rendering: Three.js + React Three Fiber
- CAD Engine: OpenSCAD WebAssembly
- Backend: Supabase (PostgreSQL + Edge Functions)
- AI: OpenRouter API (Google Gemini, Anthropic Claude, OpenAI GPT) + LM Studio (local models)
- Styling: Tailwind CSS + shadcn/ui
- Libraries: BOSL, BOSL2, MCAD
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This app wouldn't be possible without the work of:
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.
See
src/vendor/openscad-wasm/SOURCE-OFFER.txt.


