KILN turns text into smooth, stylised 3D game models. Your AI agent writes a model as simple shapes that blend like clay; KILN meshes, paints, rigs and animates it, and your game gets glTF files and Godot scenes. No image generator, no GPU, no Blender.
Looking for pixel art? Try PAGAN. Audio? SEGAN. Same design, same workflow.
drag to turn
7,642 triangles, rigged, 3 animations, from this 56-line filemodels/pilot.kiln.yaml
name: pilot
description: bean crew member in a pilot's cap with the airline's wings
class: character
tags:[crew]status: approved
style_version:1parts:
- capsule:{from: [0,0.32,0],to: [0,0.74,0],radius: 0.3}color: red
material: plastic
- capsule:{from: [0.12,0.1,0],to: [0.12,0.26,0],radius: 0.1}id: leg_l
mirror: x
mirror_id: leg_r
blend:0.05color: red
material: plastic
- capsule:{from: [0.3,0.6,0],to: [0.42,0.38,0.08],radius: 0.08}id: arm_l
mirror: x
mirror_id: arm_r
blend:0.04color: red
material: plastic
- box:{at: [0,0.56,0.29],size: [0.09,0.22,0.05],round: 0.015}color: navy
material: fabric
pattern:{type: stripes,color: gold,size: 0.06,width: 0.3,axis: y }
- sphere:{at: [0.1,0.84,0.23],radius: 0.1}mirror: x
color: white
material: plastic
- sphere:{at: [0.11,0.85,0.32],radius: 0.042}mirror: x
color: black
material: plastic
- cylinder:{at: [0,1.08,0],radius: 0.25,height: 0.15,round: 0.03}id: cap
color: navy
material: fabric
decal:{image: decals/wings.png,axis: z,at: [0,1.09,0.25],size: [0.2,0.1]}
- cylinder:{at: [0,1.0,0.07],radius: 0.27,height: 0.03,round: 0.012}id: cap
color: navy_dark
material: fabric
rig:leg_l:{pivot: [0.12,0.26,0]}arm_l:{pivot: [0.3,0.6,0]}cap:{pivot: [0,1.0,0],meta: {detachable: true },separate: true }skin: soft
animations:walk:{fps: 12,cycle: {type: waddle }}wave:{fps: 8,cycle: {type: wave,arms: [arm_r]}}idle:{fps: 6,cycle: {type: breathe }}variants:copilot:{swap: {red: teal }}
The translation layer
You describe it. Your agent writes it.
With the KILN skill (Claude) or the MCP server (any agent), your AI agent becomes the modeller between what you want and the models your game loads.
You English
"A bean pilot for my airline game. Waddles, waves."
Agent Claude + KILN skill / MCP
plans it in metres, writes pilot.kiln.yaml
runs kiln lint
looks at the turntable
fixes what's off
KILN the kiln
meshes and paints it
rigs and animates it
applies the style
deterministic builds
Your game any engine
pilot.glb
pilot.tscn
manifest.json
One model, any style
Same text. Your game's look.
A project picks a style: smooth or faceted shapes, triangle budgets, material presets and the look kit (sky, sun, tonemapping, toon bands, outlines). Switch it and every model follows on the next build. These are the same model files, built three times.
Five presets ship (soft toy, low poly, toon, clay, diorama). For your own, give the agent 3-6 screenshots of games you like: it writes a style that extends the closest preset, makes one test model, and puts it beside your inspirations with kiln preview --vs until you say yes.
# styles/cozy.style.tomlextends="soft_toy"notes="Chunky pastel props, heads 0.6 of the body, no outlines"[look]saturation=0.9sky_top="#f2b8c6"
drag to turn
Why KILN
Built for a whole game's worth of models
Every picture below is KILN's own output, from the demo project in this site's repository: its previews, its lint, its build.
1 Shapes that blend like clay
Eleven primitives (spheres, capsules, rounded boxes, cylinders, cones, tori, tubes, lathes, extrusions, wedges) that join smoothly where you ask, cut each other, mirror and repeat in rows and rings. Colours are palette names; stripes, bands, dots and checks have clean edges; PAGAN images go on as decals.
Text the agent writes and you can read, diff and review in a pull request.
parts:
- capsule:{from: [0,0.32,0],to: [0,0.74,0],radius: 0.3}color: red # a palette name
- capsule:{from: [0.3,0.6,0],to: [0.42,0.38,0.08],radius: 0.08}id: arm_l
mirror: x # write the left one...mirror_id: arm_r # ...the right is its own partblend:0.04# melts into the body, like clay
- box:{at: [0,0.56,0.29],size: [0.09,0.22,0.05],round: 0.015}pattern:{type: stripes,color: gold,size: 0.06,axis: y }
- cylinder:{at: [0,0.81,0],radius: 0.26,height: 0.04}cut: true # holes and openings
2 It looks at its own work
Previews render on any machine, no GPU or display: a turntable from 8 sides and 3 heights, close-ups of any part, animation filmstrips, a line-up at one scale. The skill tells the agent to look before it reports, because nobody judges proportions blind.
3 It checks its own work
A linter for 3D: floating pieces, parts too thin to mesh, models off the ground, wrong size for the class, blown triangle budgets. A real one, from the archer's first draft:
W103 the model is 2 separate pieces: a floating part, or a gap between parts that should touch
Give a part an id and a pivot and it moves. Rigid skins for machines and props; soft skins for creatures, one mesh that bends where its parts blend. Write poses frame by frame, or let a cycle write them. Gameplay data rides along: meta: { hitzone: head } becomes node metadata in the engine.
rig:arm:{pivot: [0,1.78,0],meta: {fires: true }}skin: rigid # or soft: one mesh that bendsanimations:fire:fps:12loop: false
poses:
- {}
- {arm: {rotate: [35,0,0]}}
- {arm: {rotate: [80,0,0]}}
- {arm: {rotate: [120,0,0]}}# or a cycle: walk, waddle, hop, bob, spin,# swing, breathe, wave, chain
5 Game-ready output
kiln build writes binary glTF (.glb) with parts, skins, animations, variants and LODs, within the style's triangle budget. For Godot: a scene per model with the style's materials (toon bands, outlines, rim light) and a look kit per style (sky, sun, tonemapper, SSAO, glow). kiln build --verify-godot loads it all in headless Godot. manifest.json is the contract for any engine.
add_child(load("res://assets/kiln/looks/soft_toy.tscn").instantiate()) # once per scene
var pilot = load("res://assets/kiln/models/pilot.tscn").instantiate()
add_child(pilot)
pilot.get_node("AnimationPlayer").play("wave")
Models are written in metres. kiln lineup stands them on one ground line beside a 1 m bar, so a 1.2 m bean doesn't end up taller than the door. Lint W108 flags sizes that don't fit their class.
7 Free asset packs, in your style
Text is bad at dense foliage and realistic rocks. For those, bring in CC0 packs (Kenney, KayKit, Quaternius): KILN scales them, stands them on the ground, snaps their colours to your palette and gives them your style's materials, so they match. CREDITS.md writes itself.
Licences that forbid it (NC, ND, "no AI") are refused by the skill.
8 A project that remembers
BRIEF.md (what the game needs, every decision) and STYLE.md (how it looks) are the agent's memory between sessions. Models carry a status and a style version; kiln style bump flags older models for review, and kiln status lists what's left.
9 Built for agents
A Claude skill that teaches the workflow, an MCP server (20 tools, previews come back as images) for any agent, --json on every command, and kiln.api for generator scripts: walls with merlons, fences, stairs, forests, crowds.
How it compares
Three ways to get 3D from an agent
Facts as of October 2026. Pick what fits your game.
A neural model generates a mesh from a prompt or an image
The agent drives Blender step by step through tool calls
The agent writes a source file in a text notation that KILN compiles
Models are stored as
Meshes (.glb, .fbx)
.blend files
Text in git: diffable, reviewable, editable by hand or by agent
Cost / access
Cloud credits or a subscription; open-weight models need a large GPU
Free; needs Blender installed
Free, MIT, offline, CPU only
Meshes
Dense or uneven triangles; often needs clean-up
Whatever the agent builds
Closed meshes within the style's triangle budget, LODs on request
Style across a game
Per prompt / reference image
None built in
Project-wide styles and palettes; change one, every model follows
Rigs and animation
Auto-rigging on some services, mostly humanoids
Possible, by hand
Pivots, rigid or soft skins, poses and cycles in the notation
Quality checks
None
None built in
A linter and previews the agent reads, so it fixes its own mistakes
Engine output
glTF / FBX
Whatever Blender exports
glTF + manifest.json for any engine; Godot scenes, materials and look kits
Deterministic
No
Depends on the agent
Yes: same text, same model
Where KILN loses: it isn't a sculptor. Realistic or finely detailed models (faces, hands, foliage) are beyond simple blended shapes: use a CC0 pack or a generator for those. KILN wins on a whole game's worth of stylised models that match, move and stay maintainable.
Gallery
The demo project
A toy airline and a toy siege: nine models in the soft toy style, each a real .glb with its source. Pick one, drag to turn it, play its animations.
drag to turn
Install
One line, then ask
Requires Python 3.11+. Pin a tag so your models build the same way next year (v0.2.0 is current).
$ pip install "kiln @ git+https://github.com/lukasgolino/KILN@v0.2.0" # install KILN (Python 3.11+)$ kiln skill install # copy the skill into this repo's .claude/skills/
Then ask Claude: "I'm making a cosy siege game in the style of these screenshots; start with a bean knight that waddles."
$ pip install "kiln[mcp] @ git+https://github.com/lukasgolino/KILN@v0.2.0" # KILN with the MCP server$ claude mcp add kiln -- kiln mcp --project ./art # or in any client: command `kiln mcp --project <dir>`
Works with Claude Desktop, Claude Code, Cursor or your own agent. Previews come back as images. Add --allow-godot to let it verify builds in headless Godot.
$ pip install "kiln @ git+https://github.com/lukasgolino/KILN@v0.2.0" # install$ kiln init my-art --style soft_toy # a project: kiln.toml, palette, models/, styles/$ cd my-art && kiln new model pilot --template bean # a rigged bean to edit$ kiln lint && kiln preview pilot && kiln build # check it, look at it, build it
Every command takes --json and exits non-zero on errors.
Open source
Free, for good
KILN is MIT-licensed. Every released version stays free to use, change and ship, commercially or not. No account, no telemetry, no cloud: it runs on your machine.
Contributing: open an issue first for notation changes; every feature lands with tests, builds stay deterministic, and anything that changes the notation or built models gets a version bump.
Game repos pin a tag, so your models never change under you.
Sister libraries: PAGAN (pixel art) and SEGAN (audio), same design, same workflow. KILN reads PAGAN palettes and puts PAGAN images on models as decals.
MIT · free forever · made with KILN
FAQ
Straight answers
Is KILN an AI 3D generator?
No. KILN doesn't generate: it compiles. Your AI agent writes KILN source files (shapes, colours, rigs, animations); KILN checks them, meshes them and builds them. The quality comes from the agent's modelling and KILN's mesher, not from a neural network, so results are exact, repeatable and editable.
What does it cost?
Nothing beyond the agent you already use. KILN is MIT-licensed and runs on your CPU: no credits, no API key, no GPU. If you have a Claude subscription, that's all you need.
Do I need Blender?
No. KILN meshes, paints, rigs and exports by itself, and its previews render without a GPU or display. Blender is still handy for one-off hand edits of a built .glb.
Can it match the look of a game I like?
Yes, within stylised 3D. Give your agent 3-6 screenshots; it writes a style that extends the closest preset (soft toy, low poly, toon, clay, diorama), tunes shapes, materials and lighting, and compares a test model beside your screenshots until you approve. Inspirations are reference only: never copy another game's characters.
What can't it do well?
Realism and fine detail: faces with expressions, fingers, dense foliage, realistic rocks. Use free CC0 packs for those (KILN recolours them to your palette and style), or a generator.
Which agents work with it?
Any agent that speaks MCP (Claude Code, Claude Desktop, Cursor, your own). The KILN skill, which teaches the full workflow, is for Claude. Without either, the CLI's --json output is easy for any program to drive.
Which engines?
Any engine that loads glTF: manifest.json describes every model, part, pivot, animation and variant. Godot 4 also gets scenes with the style's materials and a look kit per style, verified in headless Godot.
How is it related to PAGAN?
KILN is PAGAN's 3D sibling: PAGAN writes pixel art as text, KILN writes smooth 3D. They share the palette format and the workflow (BRIEF.md, STYLE.md, lint, previews, build), and PAGAN images go on KILN models as decals. SEGAN does the same for audio.
Who owns the models?
You do. KILN runs locally; nothing is uploaded and nothing is claimed.