Skip to content

Tonwhan/Voxen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

69 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Voxen

AI-powered CAD generator that produces assembly-aware 3D models as discrete, labeled parts โ€” not a single mesh blob. Powered by AMD MI300X with Qwen3-8B.

AMD AI Developers Hackathon 2026 ยท Oryxenlab


Voxen Banner


Overview

Most AI-to-3D tools output a single undifferentiated mesh. Voxen is different: it generates assembly-aware models where every part is named, dimensioned, material-annotated, and independently exportable. The result is a model you can actually use in downstream CAD workflows โ€” not just a blob to look at.

The system accepts a natural language description, runs it through an LLM agent on AMD MI300X, validates the output with Zod, and renders each part as a distinct 3D object with full interactive inspection.


Features

  • ๐ŸŽฏ Part-aware Generation โ€” LLM generates each component as a separate object with name, dimensions, and material
  • ๐Ÿ–ฑ๏ธ Interactive 3D Inspection โ€” Click any part to isolate it; others fade to wireframe
  • ๐Ÿ“ค CAD-ready Export โ€” Export as STL, OBJ, or STEP for use in Fusion 360, Blender, SolidWorks
  • ๐ŸŽฎ Free Camera Controls โ€” Orbit, zoom, and quick-view presets (Front/Top/Side/Iso)
  • โœ… Zod Validation โ€” All AI outputs validated before rendering
  • โšก AMD MI300X Powered โ€” Fast inference on cutting-edge GPU hardware

Tech Stack

Layer Technology Purpose
Framework Next.js 16 (App Router) Server & client rendering
Language TypeScript Type-safe development
UI Library Shadcn UI Component library
Styling Tailwind CSS Utility-first styling
3D Rendering React Three Fiber (R3F) React renderer for Three.js
3D Helpers @react-three/drei Edges
Validation Zod JSON schema validation
AI Backend Flask (Python) API server
ML Framework PyTorch LLM Fine-tuning & model optimization
Base Model Qwen 3 8B Foundation model for structured CAD generation
LLM Server vLLM High-throughput model serving
Hardware AMD MI300X GPU acceleration for training and inference
Auth Clerk Authentication & user management
Hosting Vercel Frontend deployment
VCS GitHub Source control

Stack Diagram

Stack Diagram


Architecture

Client (Browser)
    โ†“
Next.js 16 Frontend  โ†โ†’  Clerk (Auth)
    โ†“
Flask API (Python)
    โ†“
Qwen3-8B on AMD MI300X
    โ†“ generates
Zod-validated JSON (parts + metadata)
    โ†“
React Three Fiber renders parts + Dashboard
    โ†“
Export STEP / STL / OBJ

Data flow: User prompt โ†’ Flask receives request โ†’ Qwen3-8B generates structured part JSON โ†’ Zod validates schema โ†’ response sent to frontend โ†’ R3F renders each part as a discrete mesh โ†’ user inspects/exports individual parts.


Project Structure

voxen/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                    # Next.js 16 app router
โ”‚   โ”‚   โ”œโ”€โ”€ (auth)/             # Clerk-protected routes (sign-in, sign-up)
โ”‚   โ”‚   โ”œโ”€โ”€ (public)/           # Public landing page
โ”‚   โ”‚   โ”œโ”€โ”€ (workspace)/        # Main 3D CAD viewer and workspace
โ”‚   โ”‚   โ””โ”€โ”€ layout.tsx
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ home/               # Landing page sections (Hero, Mockup, Features)
โ”‚   โ”‚   โ”œโ”€โ”€ workspace/          # Generator page
โ”‚   โ”‚   โ”œโ”€โ”€ viewer/             # R3F canvas + controls (SceneCanvas, GearCanvas)
โ”‚   โ”‚   โ””โ”€โ”€ ui/                 # Shadcn UI components & animations
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ schemas/            # Zod schemas for part JSON
โ”‚   โ”‚   โ”œโ”€โ”€ api/                # API wrappers
โ”‚   โ”‚   โ””โ”€โ”€ export/             # STL / OBJ / STEP exporters
โ”‚   โ””โ”€โ”€ types/                  # TypeScript types from Zod
โ”œโ”€โ”€ backend/                    # Flask AI agent
โ”‚   โ”œโ”€โ”€ app.py
โ”‚   โ”œโ”€โ”€ agent/
โ”‚   โ”‚   โ”œโ”€โ”€ llm_client.py       # Qwen3-8B on AMD MI300X via vLLM
โ”‚   โ”‚   โ””โ”€โ”€ prompt_builder.py
โ”‚   โ””โ”€โ”€ validators/
โ”‚       โ””โ”€โ”€ assembly_schema.py  # Pydantic mirror of Zod schema
โ””โ”€โ”€ __tests__/                  # Vitest + React Testing Library

Getting Started

Prerequisites

  • Node.js 20+
  • Python 3.11+
  • Clerk account
  • AMD MI300X endpoint (or OpenAI-compatible vLLM server)

Installation

# Clone repository
git clone https://github.com/oryxenlab/voxen.git
cd voxen

# Install frontend dependencies (using pnpm)
pnpm install

# Install backend dependencies
cd backend
pip install -r requirements.txt
cd ..

Environment Variables

Create .env.local in project root:

# Clerk Auth
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...

# Flask Backend
FLASK_API_URL=http://localhost:5000

# AMD MI300X / Qwen3
LLM_API_BASE_URL=https://your-mi300x-endpoint
LLM_API_KEY=your_api_key
LLM_MODEL=Qwen/Qwen3-8B-Instruct

See .env.example for detailed comments on each variable.

Development

# Terminal 1 โ€” Frontend
pnpm dev

# Terminal 2 โ€” Backend
cd backend
python app.py

Frontend: http://localhost:3000
Backend: http://localhost:5000

Testing

# Run all tests
pnpm test

# Backend tests
cd backend && pytest

Part JSON Schema (Zod)

Every model the AI generates is validated against this schema before being sent to the renderer:

import { z } from 'zod'

const PartSchema = z.object({
  id: z.string(),
  name: z.string(),
  color: z.string().regex(/^#[0-9A-Fa-f]{6}$/),
  geometry: z.object({
    type: z.enum(['box', 'cylinder', 'sphere', 'custom']),
    dimensions: z.object({
      width: z.number().positive(),
      height: z.number().positive(),
      depth: z.number().positive(),
    }),
    position: z.object({ x: z.number(), y: z.number(), z: z.number() }),
  }),
  material: z.object({
    name: z.string(),
    description: z.string(),
  }),
  designIntent: z.string(),
  exportFormats: z.array(z.enum(['STL', 'OBJ', 'STEP'])),
})

export const AssemblySchema = z.object({
  assemblyName: z.string(),
  version: z.string(),
  parts: z.array(PartSchema).min(1),
  metadata: z.object({
    generatedAt: z.string().datetime(),
    promptSummary: z.string(),
  }),
})

Export Formats

Format Use Case
STL 3D printing, rapid prototyping
OBJ Blender, Cinema 4D, mesh editing
STEP Fusion 360, CATIA, SolidWorks

Roadmap

  • Multi-turn prompt refinement (iterative editing)
  • Constraint-based assembly (snap joints, axis alignment)
  • Parametric dimension editing in-browser
  • BOM (bill of materials) export
  • Fine-tuned Qwen3 on CAD-specific dataset
  • Collaborative workspaces

Team

Oryxenlab โ€” AMD AI Developers Hackathon 2026


License

MIT

About

Voxen: Assembly-Aware CAD Generation System Powered by Fine-Tuned Qwen3-8B on AMD MI300X

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors