Polyform is a toolkit for developers and artists to load, generate, edit, and export 3D geometry with a focus on immutability, modularity, and procedural workflows.
Developers and artists are welcome to join the Discord to share feedback, get help, or discuss feature requests.
Try it now in your browser → Live Demo
To run it locally, you can download the latest release and run:
# Launches the node based editor
polyform edit
# If Golang is installed, clone and run:
go run ./cmd/polyform edit
# If Nix is installed, run:
nix run .#polyform edit
Packages that have spawned from polyform's undertaking and have since been refactored into their own repositories:
Learn how to create your own nodes for others to use.
You can at the different projects under the examples folder for different examples on how to procedurally generate meshes.
This was my submission for ProcJam 2022.

[Source Here] ![]() |
[Source Here] ![]() |
[Source Here] ![]() |
[Source Here] ![]() |
[Source Here] ![]() |
[Source Here] ![]() |
Reads in a obj and applies the cube marching algorithm over the meshes 3D SDF.
package main
import (
"github.com/EliCDavis/polyform/formats/obj"
"github.com/EliCDavis/polyform/modeling"
"github.com/EliCDavis/polyform/modeling/marching"
"github.com/EliCDavis/polyform/modeling/meshops"
"github.com/EliCDavis/vector"
)
func main() {
objScene := obj.Load("test-models/stanford-bunny.obj")
resolution := 10.
scale := 12.
transformedMesh := objScene.ToMesh().Transform(
meshops.CenterAttribute3DTransformer{},
meshops.ScaleAttribute3DTransformer{Amount: vector3.Fill(scale)},
)
canvas := marching.NewMarchingCanvas(resolution)
meshSDF := marching.Mesh(transformedMesh, .1, 10)
canvas.AddFieldParallel(meshSDF)
obj.SaveMesh("chunky-bunny.obj", canvas.MarchParallel(.3))
}
Results in:

You can use air to live reload.
# .air.toml
[build]
cmd = "go build -o ./tmp/main.exe ./cmd/polyform"
include_ext = ["go", "tpl", "tmpl", "html", "js"]
The run:
air edit
If you want to mess with modern web browser features and need https, I recommend taking a look at https://github.com/FiloSottile/mkcert
mkcert -install
mkcert -key-file key.pem -cert-file cert.pem localhost
air edit --port 8080 --ssl
# If you want to connect to a vr headset
air edit --port 8080 --ssl --host 0.0.0.0
Compile the polywasm app
go install ./cmd/polywasm
Build your app
GOOS=js GOARCH=wasm go build -ldflags="-w -s" -o main.wasm ./cmd/polyform
polywasm build --wasm main.wasm
Then serve
polywasm edit
If Polyform contributes to an academic publication, cite it as:
@misc{polyform,
title = {Polyform},
author = {Eli Davis},
note = {https://www.github.com/EliCDavis/polyform},
year = {2025}
}
$ claude mcp add polyform \
-- python -m otcore.mcp_server <graph>