BULLPRINTLAB
READY
AI-NATIVE CAD · PROMPT TO PRINTABLE GEOMETRY

TURN AN IDEA INTO A PRINTABLE 3D DESIGN.

Describe the part. BullPrintLab infers the dimensions, clearances and manufacturing assumptions, builds real parametric geometry, and lets you change any of it by typing. Every design is a spec, not a picture.

DIMENSIONS AUTO MATERIAL PETG METHOD FDM TOLERANCE 0.4 MM

ADVANCED FIELDS ARE OPTIONAL — EVERY ASSUMPTION IS SHOWN AND EDITABLE AFTER GENERATION

TRY ONE
01
INTERPRET

The prompt becomes typed intent — dimensions, constraints, fasteners, tolerances.

02
BULLSPEC

A validated JSON spec. The editable source of truth for the part.

03
GENERATE

A deterministic CAD engine emits OpenSCAD, then solid geometry.

04
VALIDATE

Wall thickness, overhang, manifold, bed fit — checked before export.

05
EXPORT

STL now, STEP and 3MF next. Parameters travel with the file.

The model never emits triangles directly. It emits BullSpec — a typed JSON description of parameters and features — and a deterministic CAD engine turns that into geometry. That is why "make it 20 mm wider" changes one number instead of producing an unrelated part.

BULLPRINTLAB.COM · AI-NATIVE CAD PHASE 1 INTERFACE · GEOMETRY IS MOCKED, PIPELINE IS SPECIFIED © 2026 BULLPRINT LAB
BULLPRINTLAB
READY
DESIGN CONVERSATION 0 TURNS
100.0 MM 50.0 MM
CAM 34° / 22° · ISO
DRAG TO ORBIT · MOCKED GEOMETRY, PHASE 1
BBOX 100 × 50 × 4 MM
VOL ≈ 20 CM³
{
  "name": "Wall Bracket",
  "units": "mm",
  "manufacturing_method": "FDM",
  "material": "PETG",
  "parameters": {
    "width": 100,
    "height": 50,
    "thickness": 4,
    "wall_thickness": 3,
    "clearance": 0.4
  },
  "features": [
    {
      "type": "base_plate",
      "width": 100,
      "height": 50,
      "thickness": 4
    },
    {
      "type": "hole_pattern",
      "hole_type": "through",
      "diameter": 5,
      "count": 4,
      "spacing": 70
    }
  ]
}
BULLPRINTLAB.COM · AI-NATIVE CAD PHASE 1 INTERFACE · GEOMETRY IS MOCKED, PIPELINE IS SPECIFIED © 2026 BULLPRINT LAB
BULLPRINTLAB
READY

PROJECTS

Every part is reproducible from its BullSpec. Open one to keep editing where you left off.

BULLPRINTLAB.COM · AI-NATIVE CAD PHASE 1 INTERFACE · GEOMETRY IS MOCKED, PIPELINE IS SPECIFIED © 2026 BULLPRINT LAB
BULLPRINTLAB
READY
SOVEREIGN COMPUTE · GPU-01 + GPU-02 · ON OUR FLOOR

ONE CARD HOLDS THE WHOLE MODEL.

BrAhMa runs on Muse-Glimmer-30B, resident on the 96 GB card at Q8_0 and never leaving it — 28 GB of weights against 96 GB of board, so there is no eviction, no cold load between jobs, and 66 GB still free for context and a second model. A 24 GB RTX 3090 registers as gpu-02 and takes overflow at a lower quantisation, so a queue degrades precision rather than dropping the job. Geometry itself never touches the GPU: OpenSCAD and CadQuery run deterministic on the CPU, so a render burst can't block a part from generating.

THE RACK
GPU-01RTX PRO 6000 BLACKWELL · 96 GB · BrAhMa RESIDENT
GPU-02RTX 3090 · 24 GB · OVERFLOW
CPUXEON W9-3475X 36C/72T · RYZEN 9 5900X 12C/24T
RAM251 GB + 62 GB DDR5
STORAGE1.8 TB + 915 GB NVME · MODELS + ASSETS
RUNTIMELLAMA.CPP B2271 · CUDA 12.8 · SM_120
QUEUEREDIS · CELERY · CAPABILITY-ROUTED
ISOLATIONCAD RUNS IN A NO-NETWORK CONTAINER
WORKER REGISTRATION — SCHEDULER ROUTES BY CAPABILITY
{
  "worker": "gpu-01",
  "gpu": "RTX PRO 6000 Blackwell",
  "vram": 96,
  "cpu": "Xeon w9-3475X",
  "ram_gb": 251,
  "capabilities": [
    "text",
    "vision",
    "structured-output"
  ]
}

Adding gpu-02 is a registration, not a rewrite — the app never couples to one card. Generated code executes in a container with no network, hard time and memory limits, and file-size caps.

VRAM BUDGET — GPU-01 · 96 GB, FULLY RESIDENT Q8_0 · llama.cpp
Muse-Glimmer-30B · Q8_0
INTERPRETER — the model under BrAhMa: prompt → BullSpec → OpenSCAD
28 GB
KV CACHE · 16K CTX
Long design conversations without re-reading the spec each turn
2 GB
HEADROOM
Context growth, a perception encoder, and a second model without eviction
66 GB
THE MODEL CALL

Muse-Glimmer-30B at Q8_0 is the model under BrAhMa — near-lossless, because BullSpec generation is a structured-output problem where precision on the numbers matters more than parameter count. It is too new for vLLM and for Ollama's bundled runtime, so it runs on llama.cpp built from master against CUDA 12.8 for sm_120; that is the price of being early, and it is paid once. Qwen3.8-27B holds gpu-02 at Q4_K_M so overflow degrades quantisation rather than dropping the job. Concept render and image-to-3D are specified but not deployed — no card in the fleet holds them today. No open model emits trustworthy triangles — the models write specs, the CAD engine writes geometry. That split is the product.

JOB PIPELINE QUEUED INTERPRETING GENERATING_GEOMETRY RENDERING VALIDATING COMPLETE STREAMED TO THE UI OVER SSE