Skip to main content
Create downloadable 3D models locally. Arka builds procedural meshes for common shapes and uses your configured LLM for custom objects.

Three.js model preference

For web scenes, Arka can check for an existing Three.js-compatible GLTF/GLB asset or library before generating new geometry:
Prefer a suitable verified asset when one exists; check its license and attribution, and preserve the project’s scale and performance conventions. Generate new geometry only when no suitable asset exists or originality is requested. The search workflow is native Arka logic inspired by baryhuang/mcp-threejs: Arka converts the request into a compact asset query, normalizes Sketchfab/MCP style results into one candidate shape, ranks downloadable GLB/GLTF assets first, and reports license/attribution/format metadata. If no provider is configured, Arka returns zero candidates and tells the agent not to invent model URLs. For recognizable objects such as satellites, prefer a realistic licensed GLTF/GLB model with material and texture maps. Do not replace it with simple boxes, spheres, or cylinders when an appropriate Three.js asset is available. Arka first applies a symbolic reality check, then gives the model a compact verification instruction; uncertain objects require a trusted catalog or a user-provided URL rather than a hallucinated asset URL.

Quick start

Text-to-3D providers

Use text_to_3d when the prompt is not a procedural shape and you want an AI text-to-mesh backend:
Default auto provider order is free/non-trial first:
  1. local Shap-E (shap-e) when installed;
  2. Hugging Face Shap-E (hf-shap-e) through gradio_client or HF_TOKEN;
  3. local OpenSCAD + LLM when available;
  4. LLM OBJ fallback.
Trial-credit or paid APIs such as Tripo and Meshy are still supported, but they are not in the default chain. Opt in explicitly with --backend tripo, or set:

Procedural shapes (no LLM required)

Quality tiers

Use --quality to control curve smoothness (segment count):
Human figures (boy, girl, person) use procedural capsule-based templates — not raw LLM vertex output — for consistent, printable meshes. 3D generation uses fallback orchestration. Configure a preferred chain when needed, for example MODEL_3D_BACKEND_CHAIN=tripo,shap-e,openscad,llm; each backend is tried in order and failures continue to the next backend. The LLM OBJ generator then uses Arka’s normal model fallback, and procedural templates remain the offline-safe fallback for supported shapes.

Free AI backends (better than procedural soup)

For organic shapes (dragon, vase with floral pattern, etc.), use external generators before the LLM OBJ fallback:

Backend priority (--backend auto)

  1. Local Shap-E — if torch + diffusers installed (SHAP_E_DEVICE=cuda optional)
  2. Tripo AITRIPO_API_KEY (platform.tripo3d.ai — 300 free credits)
  3. HF Shap-E SpaceHF_TOKEN and/or pip install -e '.[3d-ai]' (Gradio client)
  4. Meshy APIMESHY_API_KEY (API requires Pro+; web UI has 100 free credits/mo)
  5. Procedural templates — for known shapes (gear, boy, vase, …)
  6. LLM OBJ — last resort vertex output from your chat LLM
Known shape commands (gear, cube, …) stay procedural under --backend auto to save API credits. Pass --backend tripo (etc.) to force AI on a template.

Environment variables

Install optional extras:

Export formats

Models save to ~/Models/arka-generated/ by default. Override with MODEL_3D_OUTPUT_DIR.

Custom shapes (LLM fallback)

For objects when no free backend is configured, Arka asks your configured LLM to generate OBJ vertex data, then exports STL when faces parse cleanly.
Requires an LLM in .env (same stack as chat/compose_slides). Quality is lower than Tripo/HF — use --backend auto when possible.

Open your model

After generation, Arka prints file paths and tips:
  • macOS: open the OBJ/STL in Preview, or blender <file>
  • GLB: gltf-viewer.donmccurdy.com or Blender
  • Online: drag the file to 3dviewer.net
  • 3D printing: import the STL into Cura, PrusaSlicer, or Bambu Studio

Check setup