Sculpo is a browser-based solid modeller for 3D printing — drag primitives onto a workplane, mark them solid or hole, group to cut, and export STL. Tinkercad-shaped, self-hosted, and yours.
The friendly way to model for a printer shouldn't live in someone else's cloud. Sculpo keeps the Tinkercad way of working — and puts every part of it on your side of the wire.
Every boolean, every mesh, every preview renders on your machine. The optional server stores only the scene graph as JSON — it never touches a mesh, which is why a NAS is all it needs.
The Tinkercad mental model: any shape can be a hole, group it with a solid and the cut happens. Groups nest, so the result is just another shape to cut with.
Installable as an offline PWA — model on a plane, in the shop, wherever. Point it at your server and projects sync across devices on their own; there is no save button.
Accounts are closed by default: admins register with a secret, everyone else needs a single-use invite code — hashed, shown once, expiring. Your instance stays yours.
Sixteen primitives, real booleans, and the measuring tools that make parts actually fit.
Box to torus, gear to thread to 3D text — placed by click, snapped against neighbours, moved by gizmo or exact numbers.
Mark any shape a hole, group it with a solid, and the boolean runs — drill with a cylinder, notch with a box.
Scribble a closed outline freehand, then extrude it to a solid — or revolve it around an axis for turned parts.
STL, OBJ, and SVG come in cleanly — dense scans are decimated on the way, so a 700k-triangle download stays editable.
A snapping ruler, droppable datums with live offsets, axis alignment, mirroring, and your printer's real build plate.
Export binary STL or OBJ — the whole scene or just your selection — ready for the slicer.
Saved designs appear as rendered isometric previews, not filenames — drawn by the browser, framed to the model.
The interface follows whichever input you last used — and a native iPad app wraps the same build.
Give it a server and projects flow across your devices on their own — bcrypt accounts, hashed sessions, owner-scoped queries.
Run Sculpo with no backend at all — projects live in your browser. Add the server later and it does exactly one job: sync scene-graph JSON between your devices. It never sees a mesh, which is why the whole thing is happy on a NAS.
The name is Latin: sculpo — "I carve."
The modeller runs anywhere a browser does. Docker adds the sync server when you want projects on every device.
One compose command brings up the web app, API, and Postgres.
Admins sign up with the admin secret; everyone else gets a single-use invite code.
Drag shapes, cut with holes, export STL — projects sync on their own.
For a real deployment, use docker-compose.portainer.yml behind your reverse proxy, and set SECRET_KEY, ADMIN_USERS, and ADMIN_SIGNUP_SECRET.