HTMLApache-2.0Created Nov 3, 2026Last push 2d agoLatest release v1.6.3
Quick answers
What is sand3d?
3D modeling in Python, built for LLMs.
How popular is sand3d on GitHub?
Sandflow-ai/sand3d has 1,214 stars and 129 forks on GitHub.
What license does sand3d use?
Sandflow-ai/sand3d is released under the Apache-2.0 license.
Star history
since Nov 8, 2026
Star history is still being collected for this repository.
Contribution activity
commits per day, last 52 weeks
12 commits in the last yearLessMore
Signals and awards
derived from tracked data
Permissive license
Apache-2.0
Continuous integration
Automated checks passing
README
main branch
sand3d
3D modeling in Python, built for LLMs.
sand3d is a Python library for writing 3D objects as short programs: profiles, solids,
edits, frames, joints and assemblies, over Blender's bpy. A program says how a shape
is made, part by part and in its own words, so a model writes it in a few hundred tokens
and a person can read it.
Short. A part takes 2 to 6× fewer tokens than the same part in Blender Python, CadQuery or FeatureScript (details).
The whole API fits in a prompt, about 3,600 tokens (the API).
Named, not computed. Parts, edges and faces are reached by name, never by hand-computed coordinates.
Deterministic. The same program builds the same mesh, bit for bit.
A whole object, part by part
A front-loading washing machine in 38 lines of code (play it and read it):
the cabinet, the drum, the door with its glass and handle, the detergent drawer and the dial,
each a named part, and four joints that say how they move.
One call; the file's extension names the format; lengths in metres.
s3d.export(machine, "washer.glb") # or .urdf, .usda, .obj, .stl
format
what it carries
for
GLB
meshes, materials, the joints in each node's extras, at the current pose
the web, viewers, game engines
URDF
a link per moving part, its joints and their limits, at rest; OBJ meshes beside it
ROS, PyBullet, MuJoCo, Isaac
USDA
the same tree in OpenUSD (UsdGeom, UsdPhysics), with the materials
Omniverse, Isaac Sim, USD pipelines
OBJ, STL
the meshes alone, at the current pose: OBJ Y up, binary STL Z up
any 3D tool, slicers
.usd, .usdc and .usdz come from the .usda through USD's own tools (usdcat,
usdzip). The scene is also an ordinary Blender scene, for anything else Blender writes.
Install
Python 3.13 (recommended) or 3.11. Blender comes with it, as the bpy module: 5.2 LTS on
Python 3.13, 4.5 LTS on Python 3.11; CI runs bpy 5.2.
pip install sand3d # or, in a uv project: uv add sand3d
bpy has no wheel for Python 3.12, nor for Intel Macs from 5.2 on: there, use Python 3.11.
Put docs/api.md in the system prompt: the rules of the vocabulary, every
signature, and worked examples, in about 3 600 tokens; llms.txt points a
model at it. For objects of several parts, the guidelines give
the eight rules of an assembly program: the plan first, then the details, then the parts.
### Fixes
* A GLB holds only the root's tree, in metres: the rest of the scene no longer comes
along, and a placed or mirrored root keeps its offset and its mirror (#11, fixes #10)
Thanks to @alaabenfatma for the report and the fix.
Install: `pip install sand3d` · Website: https://sand3d.sandflow.ai/
First public release of sand3d: profiles, solids, edits, frames, joints and an
assembly layer over Blender's `bpy`, with export to GLB, URDF, USD (`.usda`,
UsdPhysics), OBJ and STL. `pip install sand3d` brings the `bpy` its Python takes:
bpy 4.5 on Python 3.11, bpy 5.2 on Python 3.13. The API is described in
[docs/api.md](docs/api.md).
Install: `pip install sand3d` · Website: https://sand3d.sandflow.ai/
Code frequency
additions and deletions
+22.2K lines added, -191 removed over the last year.
Commits per week
last 52 weeks
12 commits in the last 52 weeks.
When work happens
weekday and hour
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.