Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
Chat3D is an AI-powered prompt-to-CAD workspace
Translation pending
DesignTypeScript · PythonGitHub @kreuzhoferOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Build 3D models with natural language.
Chat3D is an AI-powered prompt-to-CAD workspace. Describe a part in plain English, and Chat3D generates production-ready 3D models (STL, STEP, 3MF) using an agent-based LLM pipeline and Build123d under the hood. Preview results in-browser, iterate through conversation, and download files when ready.Read the full README ↗Build 3D models with natural language.
Chat3D is an AI-powered prompt-to-CAD workspace. Describe a part in plain English, and Chat3D generates production-ready 3D models (STL, STEP, 3MF) using an agent-based LLM pipeline and Build123d under the hood. Preview results in-browser, iterate through conversation, and download files when ready.
The UI is organized into three persistent panes so you never lose context:
| Contexts | Thread | 3D Preview |
|---|---|---|
| All your chat contexts in one sidebar. Switch between projects instantly. | The full conversation with generated code, output files, and download links. | Interactive 3D preview powered by Three.js. Rotate, zoom, and inspect geometry in real time. |
Browser (React + Three.js + Tailwind)
|
| REST API + SSE
v
Express API Server
|
|-- PostgreSQL 16 + pgvector (users, chats, workbench, knowledge, experiments)
|-- Redis 7 (SSE event bus, notifications)
|-- LLM providers (OpenAI / Anthropic / xAI / DeepSeek / Bedrock / Minimax / Ollama)
|
|-- Build123d Rendering Service (Python, 2 replicas)
| |-> STL / STEP / 3MF files
|
|-- Screenshot Service (Pyrender, 2 replicas)
|-> Multi-angle screenshots for VLM evaluation
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS 4, shadcn/ui, Three.js, Recharts, i18next |
| Backend | Express, TypeScript, Prisma (PostgreSQL 16 + pgvector) |
| LLM abstraction | Vercel AI SDK (OpenAI, Anthropic, xAI, DeepSeek, Amazon Bedrock, Minimax, Ollama) |
| 3D rendering | Build123d (Python, containerized, 2 replicas) |
| Screenshots | Pyrender-based STL screenshot service (containerized, 2 replicas) |
| Vector search | pgvector with HNSW indexes for embeddings |
| Job queue | pg-boss (knowledge pipeline), in-memory queue (workbench batching) |
| Real-time | Server-Sent Events via Redis pub/sub + Web Push (VAPID) |
| Auth | JWT + bcrypt |
| Infrastructure | Docker Compose |
git clone https://github.com/kreuzhofer/chat3d-app.git
cd chat3d-app
npm install
cp example.env .env
Edit .env and set your LLM API keys and other configuration. See Environment Variables below.
docker compose up --build
This starts PostgreSQL, Redis, the Build123d rendering service, the backend API, and the frontend (nginx).
Navigate to http://localhost. On first launch, a setup wizard will guide you through creating the admin account.
Copy example.env to .env and configure:
| Variable | Purpose |
|---|---|
DB_PASSWORD | PostgreSQL password |
JWT_SECRET | Secret key for JWT signing |
BUILD123D_URL | Build123d service URL (default: http://build123d:80) |
SCREENSHOT_SERVICE_URL | Screenshot service URL (default: http://screenshot-service:80) |
QUERY_RENDER_MODE | live (default) or mock — controls real vs stubbed 3D rendering |
QUERY_LLM_MODE | live (default) or mock — controls real vs stubbed LLM calls |
FRONTEND_PORT | Host port for the frontend (default: 80) |
LOG_LEVEL | Logging level: fatal, error, warn, info (default), debug, trace, silent |
LOG_FORMAT | Log output format: json (default in Docker) or pretty (human-readable) |
LLM Provider Configuration: API keys, endpoint URLs, model assignments, and purpose mappings are all managed via the Admin UI → Providers tab, not environment variables.
See example.env for the full list including SMTP, Redis, concurrency, security, and worker configuration.
| Service | Purpose | Port |
|---|---|---|
postgres | PostgreSQL 16 database (pgvector) | 5432 |
redis | SSE event bus | 6379 |
build123d | Build123d Python rendering service (2 replicas) | internal |
screenshot-service | Pyrender STL screenshot service (2 replicas) | internal |
backend | Express API server (proxied via nginx, not exposed to host) | internal |
frontend | React SPA + API reverse proxy (nginx) | 80 |
account-deletion-worker | Scheduled cleanup of deactivated accounts | -- |
# Run backend in dev mode (requires postgres + redis running)
cd packages/backend && npm run dev
# Run frontend in dev mode
cd packages/frontend && npm run dev
# Run backend tests
npm --workspace @chat3d/backend run test
# Run frontend tests
npm --workspace @chat3d/frontend run test
# Typecheck
npm --workspace @chat3d/frontend run typecheck
For selective Docker rebuilds during development:
# Rebuild only the frontend
docker compose build frontend && docker compose up -d frontend
# Rebuild only the backend
docker compose build backend && docker compose up -d backend
chat3d-app/
packages/
shared/ # Shared TypeScript types (events, traces, domain models)
backend/ # Express API server (Prisma, 85+ service files)
prisma/ # Schema + migrations
src/
routes/ # 17 route files
services/ # Business logic (pipeline, eval, workbench, experiments, ...)
frontend/ # React SPA (Vite + Tailwind)
src/
components/ # 70+ components (chat, admin, gallery, workbench, UI primitives)
hooks/ # 12 custom hooks (SSE, streaming, scroll, pull-to-refresh)
api/ # 14 API client modules
services/
build123d/ # Build123d rendering container
screenshot-service/ # Pyrender STL screenshot container
workbench/ # Seed data for workbench categories and prompts
docker-compose.yml
All routes (except auth, setup, waitlist, and public) require Authorization: Bearer <token>. Admin routes require the admin role. 230+ endpoints total across 17 route files.
| Method | Path | Description |
|---|---|---|
POST | /api/setup/init | Initial setup (creates first admin) |
POST | /api/auth/login | Login (returns JWT) |
POST | /api/auth/register | Create account |
GET | /api/auth/me | Current user profile |
GET | /api/chat/contexts | List chat contexts |
POST | /api/chat/contexts | Create chat context |
GET | /api/chat/contexts/:id/items | Get chat items |
POST | /api/query/submit | Submit a modeling query (async) |
POST | /api/query/regenerate | Regenerate a previous response |
POST | /api/query/stop | Stop a running query |
POST | /api/query/re-render | Re-render with tweaked parameters |
GET | /api/events/stream | SSE event stream (real-time updates) |
GET/POST | /api/files/* | File upload, download, delete |
POST | /api/profile/* | Account management (password, email, delete, export) |
GET | /api/llm/models | List available LLM models |
GET | /health | Health check |
GET | /ready | Readiness check |
| Method | Path | Description |
|---|---|---|
GET | /api/public/config | Public app configuration |
GET | /api/public/gallery/categories | List gallery categories |
GET | /api/public/gallery/categories/:id/models | List models in category |
GET | /api/public/gallery/models/:id | Model detail |
GET | /api/public/gallery/search | Search gallery models |
GET | /api/public/gallery/models/:id/screenshot/:angle | Model screenshot |
GET | /api/public/gallery/models/:id/download/:format | Download model (stl/3mf/step/b123d) |
POST | /api/gallery/remix | Remix a gallery model into a new chat |
POST | /api/waitlist/join | Join the waitlist |
| Group | Endpoints | Description |
|---|---|---|
| Users | GET/PATCH/DELETE /api/admin/users/* | User management, activation, password reset |
| Waitlist | GET/PATCH/DELETE /api/admin/waitlist/* | Waitlist approvals and management |
| Settings | GET/PATCH /api/admin/settings | App-level configuration (waitlist, invitations) |
| LLM Providers | CRUD /api/admin/llm-providers/* | Provider configuration (API keys, endpoints) |
| LLM Models | CRUD /api/admin/llm-models/* | Model registration and capabilities |
| LLM Purposes | GET/PATCH /api/admin/llm-purposes/* | Purpose-to-model assignments |
| Generation Settings | GET/PATCH/DELETE /api/admin/generation-settings/* | Pipeline tuning knobs |
| Curation | GET/PATCH/POST /api/admin/curation/* | Candidate review, distillation, tagging, approval |
| Usage Analytics | GET /api/admin/usage/* | Token/cost analytics (summary, timeseries, export) |
| Pipeline Analytics | GET /api/admin/pipeline/* | Generation performance metrics and breakdowns |
| Workbench | CRUD /api/admin/workbench/* | Categories, prompts, examples, batch generation, embeddings, export/import |
| Experiments | CRUD /api/admin/experiments/* | Create, run, compare LLM model experiments |
| Backups | GET/DELETE /api/admin/backups/* | Database backup management |
All rights reserved.