NANO/SPATIAL

Private asset studio

One box.
Every pipeline.

nano-spatial takes a prompt or a photograph all the way to a finished asset — image, mesh, CAD solid, rig, video, audio — on a single machine. One queue, no render farm, and every lane reports whether it is bound before it takes a job.

—/— engines up — adapter configs · — bound — assets — Rust crates

The film

Thirty seconds, cut from this box's own output.

A generated plate, the mesh built from it, the film rendered from that mesh, the unwrap and CAD lanes, then the console that stored every run. No stock library, no hosted model, no render farm.

0:30 · 1920×1080 · 30 fps · scored on the box — assets kept · — Rust crates

Pipelines

Six paths, prompt to asset.

Every lane is a registered adapter with declared inputs, outputs and runtime. Engines can be swapped without touching the job queue.

01—

Text→Image

Concept to plate

Qwen-Image 2.1 serving through ComfyUI. Photoreal or diagrammatic, at 1024² and up, with the prompt and seed kept alongside the output.

1024² · 20 steps · 6.9 GB diffusion weights

02—

Image→3D mesh

One photo to a solid

TRELLIS.2 through trellis.cpp, with Vulkan and ROCm backends selectable per job. Textured GLB out, at 1024 or 512.

10 GGUF weight files · ROCm or Vulkan

03—

Image→CAD

Photo to parametric part

Zero-to-CAD on Qwen3VL-2B reads a part and emits a parametric solid — dimensions you can edit, not just a mesh you can look at.

Qwen3VL-2B · CPU lane

04—

Mesh→Rig

Skeleton and skin, generated

SkinTokens builds a skeleton and skin weights directly from a raw mesh, so a scanned or generated model can be animated without hand-rigging.

torch 2.14 + ROCm 7.2 · gfx1151

05—

Frames→Video

Deterministic assembly

Frames to video on ffmpeg 9.0.2 — no model in the loop, so a re-render is byte-comparable and a bad frame is a bug you can fix, not a roll of the dice.

ffmpeg 9.0.2 · no GPU

06—

Text→Audio

Score and stems

Stable Audio 3 medium on Vulkan renders stereo beds and stingers, sized to the cut rather than licensed by the track.

sa3.cpp · Vulkan · GGUF stack

Runtime

Built to run where the work is.

The suite is ten Rust crates and a Next.js console. Engines declare themselves to the registry at boot and are probed before a job can be routed to them.

—LOC

Rust engine cores

—

Crates, mesh IO to API

—GiB

Unified memory, one GPU

—

Assets, versioned

Vulkan and ROCm live side by side: the same TRELLIS weights run on either backend, and a lane that cannot bind reports itself unbound rather than failing a job quietly in the dark.

Renders are queued, not babysat. The console tracks every job, every artifact and every engine version that produced it — so a result can be reproduced, not just admired.

registry sample — from engines.json
{
  "adapter": "trellis_cpp_image_to_3d_rocm",
  "input":   ["image"],
  "output":  ["mesh"],
  "valid":   true,
  "runtime": "trellis.cpp 0.8.1 prebuilt ROCm
              (ggml 0.24.0 hip), 10 GGUF weights 16 GB"
}

Provenance

Rights are a field, not a folder of PDFs.

Every asset carries its sources and a ruling per use. Anything unruled defaults to review — the studio does not pretend to know what it hasn't been told.

asset: cad-bracket-01
{
  "asset_id": "cad-bracket-01",
  "asset_version": 2,
  "source_refs": [{
    "source_id": "local-stl-sha256:8e194a61…",
    "commercial":    "approved",
    "training":      "approved",
    "output_reuse":  "approved"
  }],
  "rights_rulings": [{
    "operator":    "cluer-studio-agent",
    "reason":      "geometry generated locally with
                 Open CASCADE; no third-party source",
    "ruled_at_unix": 1793905799
  }]
}
a

Sources are content-addressed

A reference is a hash, not a filename. The same bytes are the same source everywhere, and an asset can always be traced back to what actually went in.

b

Three uses, judged separately

Commercial use, training use and reuse of the output are distinct rulings. A source cleared for one is not silently cleared for the others.

c

Rulings are re-rulable

Each ruling records who made it, when, and why — so a later decision replaces an earlier one with a reason attached, instead of overwriting the record.

Console

The workspace it all runs in.

Jobs, assets, generation and rights review in one console. These are captures from the running studio, not mockups.

studio / overview
nano-spatial studio overview showing six generation lanes and their bindings
Lanes report their runtime and binding state
studio / assets
Asset library listing stored assets with versions
Every artifact, versioned and traceable

Access is by request.

nano-spatial is a private studio running on one workstation. Write if you want a walkthrough, or a lane built for a pipeline you already have.

Request access →