Text→Image
Concept to plate
FLUX.2 klein 4B serving through ComfyUI. Photoreal or diagrammatic, at 1024² and up, with the prompt and seed kept alongside the output.
1024² · 4B fp8 diffusion weights
A private studio that makes things for you
nano-spatial takes your words or a photograph all the way to a finished creation — a picture, a 3D model, a precise part, a character that moves, a short film, music and voices, even a whole web page — made on a single computer of our own. Nothing is farmed out, and every way of making things says honestly whether it is ready before it takes your work.
The film
It began as a picture the studio made, became a 3D scene, then this film — with music and voices made the same way. Nothing came from a stock library, and no outside computer touched it.
Samples
Every picture below is real work from the studio. The full films and 3D models live in your home page once you're in — this page shows pictures so it loads fast.












These pictures are the opening frame of each clip; the finished clips themselves live in your home page.
The full trailer is 40 seconds, 1920×1072, 24 frames per second, in the studio's film look throughout, with music and voices — it lives in your home page, not on this page, so this page stays fast.
What it makes
Every way of making things is written down in one public list — what it needs, what it makes, and whether it is ready — so nothing here is a black box. The seven below are on that list today; the two newest ways, whole pages and screens and speaking voices, are being added to it.
Text→Image
FLUX.2 klein 4B serving through ComfyUI. Photoreal or diagrammatic, at 1024² and up, with the prompt and seed kept alongside the output.
1024² · 4B fp8 diffusion weights
Image→3D mesh
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
Image→CAD
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
Mesh→Rig
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.7 + CUDA · 2× RTX 5090 · bpy 5.0
Frames→Video
Frames to video on ffmpeg — 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 · no GPU
Text→Audio
The music is written by ACE-Step, characters speak with Dia and Qwen3-TTS voices, and the sound effects are made by the studio itself or come from free CC0 recordings — every piece is ours to use (Apache-2.0 and CC0), and the sound is shaped to fit your film.
ACE-Step · Dia · Qwen3-TTS · all Apache-2.0
Text→GLB
glbcoder turns a text prompt into a GLB through a headless page export — the same path that built the treasure chest, the energy sword, the stone well and the angelic mech in the samples below. One stream, loopback only, no hosted model.
llama.cpp + Chromium · loopback only
Pricing
Credits run $0.01–$0.025 each, depending on how you buy them — the bigger the pack or plan, the less each credit costs. Plans are monthly, with annual billing shown in parentheses. Pick a plan and ask to join — when your seat opens we email you, and you subscribe through Square. Checkout is live: plans and top-ups are paid through Square.
$0 / month
100 credits a month, to try the studio and make something real.
Includes 1 GB of file space · Personal use only
Ask to join — Explorer (free)$19 / month
1,000 credits a month for regular projects and experiments.
Includes 10 GB of file space · $15 / month billed annually
Ask to join — Hobby$49 / month
3,000 credits a month for people shipping work every week.
Includes 50 GB of file space · $39 / month billed annually
Ask to join — Creator$99 / month
8,000 credits a month for teams making a lot every week.
Includes 200 GB of file space · $79 / month billed annually
Ask to join — StudioTop up any time: $10 / 400 credits · $25 / 1,100 · $50 / 2,500 · $100 / 5,500. Packs never expire, and the per-credit price falls as the pack gets bigger — $0.025 a credit at $10, $0.018 at $100. Plans run cheaper still: Studio annual works out near $0.01 a credit.
File space: every plan includes room for your files — Explorer 1 GB · Hobby 10 GB · Creator 50 GB · Studio 200 GB. Need more? Extra space is $5 per 100 GB a month.
Runtime
The suite is eleven 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. The local GPU is the RTX PRO 6000 on this box; the registry also lists a remote RTX 4090 lane (appdev1, over SSH) and a workstation ROCm config — neither runs here, and the counts below say so: 3 of 7 engines are up on this box right now.
—LOC
Rust engine cores
—
Crates, mesh IO to API
—GiB
GPU memory, this box
—
Render outputs, 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.
{
"adapter": "trellis_cpp_image_to_3d_cuda_remote",
"input": ["image"],
"output": ["mesh"],
"valid": true,
"runtime": "trellis.cpp 0.8.1 CUDA on appdev1
(RTX 4090, 24 GB) over ssh"
}
Provenance
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_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": "studio-build",
"reason": "geometry generated locally with
Open CASCADE; no third-party source",
"ruled_at_unix": 1793905799
}]
}
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.
Commercial use, training use and reuse of the output are distinct rulings. A source cleared for one is not silently cleared for the others.
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.
Behind the scenes
Live status from the box's own probe — the numbers come from facts.json and are regenerated at deploy time, so a stale number can never stand in for a live one. The boards below are drawn from the latest probe.
nano-spatial is a private studio running on its own computers. Tell us what you want to make and we'll email you when your seat opens — the form takes a minute, and it says honestly what happens next.