A build pipeline for generated pixel art

Fire once.
Ship every sprite
with receipts.

Declare the sprites you need in one manifest. PixelKiln prices the run offline, lets you choose among candidates, and records a SHA-256 hash for every file you ship.

Offline planningHard budgetsExact provenance
pixelkiln planoffline
$pixelkiln plan --style base
PROJECTforge-kit
EST. COST2 generations
✓base/anvilcurrent
↻base/hammerrecoverable · free
+base/tongsmissing · 1 gen
△base/cruciblestale · 1 gen
#
PROVENANCE LOCKEDsha256 · 98f1…c42a
✓
04generation providers
38composable commands
00LLM calls in the loop

You choose every image.
PixelKiln does the polling, hashing, and file placement the same way every time.

Declare it. Price it. Generate it.
Review it. Ship it.

One committed manifest drives every step. Each step says what it reads and what it writes.

01

Declare

List each asset, its prompt, its provider, and an optional final-art quality profile in one file.

You write the manifest.pixelkiln.manifest.json
02

Plan

Compare the manifest with the lockfile and the files on disk. The plan shows what costs money and what you can restore for free, and it makes no provider calls.

Reads the manifest, lockfile, and disk. Spends nothing.pixelkiln plan
03

Generate

Pass a budget and PixelKiln submits, polls, and downloads. It saves each remote id before polling, so a failed download is recoverable work and not a second charge.

Writes the lockfile and the downloaded files.pixelkiln gen --budget 120
04

Review

Choose from a local candidate sheet, touch a sprite up in the gallery's editor, then approve the exact pixels you ship.

Writes your choice and approval to the lockfile.pixelkiln pick
05

Ship

Build atlases, Aseprite sheet JSON, Godot SpriteFrames, and tilesets for Tiled and Godot. A style with a palette rule never ships a color outside it. Quality-profile styles stay blocked until approval is current.

Writes sheets and exports with provenance.pixelkiln pack

Pick the image.
Approve the pixels.

pixelkiln pick opens a local page with every candidate. It preserves native aspect ratios and stays readable on ultrawide displays, and a frame set counts as one choice. PixelKiln records every candidate and leaves the decision to you.

PixelKiln asks providers for your palette, and enforcePalette makes it a rule: every downloaded sprite is snapped to the nearest palette color as it is written, while the provider's bytes stay in the cache. Turning the rule on or off later re-applies it to art you already paid for.

localhost pixelkiln pickhuman review
PixelKiln's local candidate review interface showing generated forge emblems
The local review page with generated brand sprites. No model chooses for you.

Paid work needs a paper trail.

Every provider object, prompt identity, output role, path, and byte hash survives in project state. A failed download remains recoverable work, not a reason to pay twice.

  • ✓ Remote identity saved before polling
  • ✓ Content-addressed local recovery cache
  • ✓ Hand edits kept beside the generated file
  • ✓ Replaced generations kept, restorable at no cost
  • ✓ Manual-edit and overwrite protection
  • ✓ Transactional atlas and export writes
Explore recovery guarantees
pixelkiln.lock.json
{"base/anvil": {"status": "downloaded","provider": "pixellab","specHash": "61c9…a071","cost": { "value": 1,"unit": "generations" },"outputs": [{"path": "art/base/anvil.png","sha256": "98f1…c42a"}]}}
◇ paid-work identity
◇ exact output bytes
A round orange robot drawn facing south, south-west, west, north-west, north, north-east, east, and south-east

Draw the base once.
Everything else follows it.

A character style holds a base drawn facing 4 or 8 directions, states that apply a pose or an outfit to every direction at once, and loops, one direction each. Every one is an asset with its own record and files, so plan prices the cast, one gen runs it in waves (bases, then states, then loops), and pack --format godot writes a SpriteFrames with every direction and every loop.

Start from a prompt on any of PixelLab's four engines, or from your own south-facing sprite: reference hands it over and pro-flash rotates it for one generation at 64px. Regenerate the base and its states and loops go stale, never silently mismatched. Characters already on your account come under the manifest with adopt, and the gallery shows the family: states under their base, loops with their direction, mirrors with their source.

  • ✓ A loop facing east is the west loop flipped. mirror makes it locally for nothing; eight directions of one walk cost 5, not 8.
  • ✓ Poses from a text edit, loops from a template or from text, with start and end poses you supply.
  • ✓ Concept images and style anchors on pro, style images with chosen traits on pro-flash.
  • ✓ Bust portraits and outfit transfer onto a loop, and one directions list that declares a loop and mirrors the rest.
pixelkiln.manifest.json
"cast": {"generator": "character", "mode": "pro-flash","template": "custom", "size": 96 },"bot": {"prompt": "small round orange robot, one blue eye","reference": "refs/bot-south.png" },"bot.dented": {"prompt": "shell dented, one arm hanging loose","state": { "of": "bot" } },"bot.walk.west": {"prompt": "walking in place, short legs stepping","animation": { "of": "bot", "direction": "west","frames": 12, "fps": 12 } },"bot.walk.east": { "mirror": "bot.walk.west" }
◇ 2 generations to rotate
◇ 0 for the mirror
Four moves on the same robot, animated from a sentence each on the v3 engine: two generations per loop, the resting pose kept as frame 0. Each is reviewed as one set in pick and packed as one looping animation at the fps the manifest records. The arrows and dots are yours; it also cycles on its own.

Effects on your own sprites,
rendered for free.

pixelkiln vfx drives PixelLab's VFX workbench. Start from one of its presets or layer its parts, build the effect around a character, and get a spritesheet, a GIF, an atlas, and a game pack with every piece as its own clip. The workbench renders a recipe instead of generating, so it costs nothing on a subscription, and the recipe it saves renders the same pixels again.

A shimmering bubble shield around the robot
shield_bubble preset
A crackling blue aura rising around the robot
aura preset, electric ramp
A lightning bolt striking the robot, with a shockwave ring
lightning_strike preset, one-shot
Stars circling over the robot's head
stun_stars part
terminal
pixelkiln vfx --preset lightning_strike --sprite robot.png --out fx/zap# writes fx/zap.png  .gif  .json  .vfx.jsonpixelkiln vfx --recipe fx/zap.vfx.json --out fx/zap-again
  • ✓ 17 presets and about 90 parts: explosions, slashes, auras, shields, status icons, weather.
  • ✓ Every effect is saved to your PixelLab account, where its sliders can be moved; --effect pulls the edit back down.
  • ✓ A .vfx.json record keeps the full recipe; re-rendering one gave a byte-identical sheet.

Latest updates
from our providers.

When a provider ships something PixelKiln can drive, it lands here with what it cost. The newest update shows real output from the project's own manifests, and each earlier one keeps a short note and its reference.

PixelLab 0.4.128
October 2026

A Pro price cut, Image to Pixel Art Pro Flash, and Create VFX

Every Pro tool dropped from 20, 25, or 40 generations to 10, 15, or 25, and pixelkiln plans with the new prices.

  • pixelkiln pixelate turns a photo, painting, or render into pixel art for 6 generations.
  • pixelkiln vfx renders animated effects from presets and parts, free on a subscription.

Four providers, one review flow.

PixelLab, Retro Diffusion, ComfyUI, and Scenario share the same review, lockfile, and recovery flow. The cards below show outputs from committed benchmark projects, one sample each. The ComfyUI card separates its model canvas from the recovered native pixel grid, because a large raster can still contain fake pixels. Its samples are diagnostics, not asset recommendations. A style.quality profile applies the same palette and approval gate after any single-image provider or an atomic ComfyUI frame set. ComfyUI and PixelLab both back controlled revisions, and PixelLab adds palette cleanup, animation, and interpolation of an existing asset. PixelKiln hashes the parent and mask bytes before a revision runs.

ProviderStatusBilled inWhat has run
PixelLabProductionGenerationsGeneration and account recovery against a live account.
Retro DiffusionExperimentalUSDSingle-candidate stills, live. Its other paths need paid runs.
ComfyUIExperimentalNothing (self-hosted)Local generation, candidate review, cache recovery, and grid refinement. Atomic frame sets have automated coverage, and PixelKiln saves each accepted frame prompt before it queues the next one. They still need a live pose recipe and benchmark. The tested SDXL graph needs manual cleanup and art review.
ScenarioExperimentalCompute unitsPaid single- and two-output generation, human review, and recovery. Ten more models, six tool models, reference-image edits, and multi-model chains ran once each.
Production

PixelLab

Generations
PixelLab result for a fortified monastery built into a mountain cliff
Large building, map generator
PixelLab result for an alpine valley background at dusk
Scenic background, pixflux generator

PixelLab kept more of each brief and made the scenic depth planes easier to separate. Its map objects were opaque, and one scenic attempt added a signature-like mark. Check alpha and stray marks before a batch.

Benchmark cost
1 generation each
Best fit
Prompt fidelity and account recovery
Experimental

Retro Diffusion

USD
Retro Diffusion result for a fortified monastery built into a mountain cliff
Large building, RD Plus
Retro Diffusion result for an alpine valley background at dusk
Scenic background, RD Plus

Both 384px building attempts had transparent backgrounds and used 49 to 55 colors. They also filled more of the frame than the earlier 256px attempt.

Benchmark cost
$0.058–$0.099 each
Best fit
Ready-to-place cutouts and native animation
Experimental

ComfyUI

Self-hosted
Transparent ComfyUI cliffside fortress refined onto a native 128 by 128 grid with a fixed palette
Refined to a native 128×128 grid, 15 colors, transparent
ComfyUI alpine valley refined onto a native 128 by 128 grid with a fixed palette
Refined to a native 128×128 grid, 24 colors

SDXL Base plus Pixel Art XL found workable compositions, but the raw files only imitated a pixel grid. Pixel Art Fixer recovers editable 1× assets and applies a fixed palette. A manifest quality profile makes those mechanical checks and approval part of planning and packaging. You still judge the drawing. Build large scenes from small parts that pass review.

Provider charge
None; hardware cost is external
Quality target
48–128px native per part
Best fit
Local composition, revisions, frame experiments, and custom graphs
Readiness
Still workflow live-tested; frame workflow awaits a live benchmark
Experimental

Scenario

Compute Units
Scenario BFL Flux 2 Dev result showing a stone keep on a mountain
Live smoke test, raw 512×512, opaque, 19,619 colors

BFL Flux 2 Dev produced a readable keep and completed the full PixelKiln lifecycle. The raw file imitates pixel art but carries a large RGB palette. Treat it as concept art or refinement input, not a finished game asset.

Measured cost
16 CU for one output; 32 CU for two
Best fit
Large or illustrative art, reference-image edits, and chains of hosted models
Readiness
Eleven image models, six tool models, and reference edits run once each; other schemas unverified

Scenario, measured: ten models, one chain, and where it fails.

We ran Scenario's catalogue through PixelKiln: ten text-to-image models priced from 1 to 11 compute units, six single-image tool models, reference-image edits, a three-model chain, and a real isometric pixel-art game's structures, covers, backdrops, and sound effects. Every paid request is preceded by a free quote and held under a ceiling you set. These are our own benchmark images, one sample each.

Price does not predict fit

A pixel-art stone keep on a mountain from FLUX.2 Klein 9b
1 CU FLUX.2 Klein 9b
A pixel-art mossy cave mountain from Krea 2 Turbo
2 CU Krea 2 Turbo
A pixel-art castle on a cliff from Ernie Image Turbo
3 CU Ernie Image Turbo
A detailed pixel-art stone keep with banners from GPT Image 2
11 CU GPT Image 2

The same brief, seed, and 512 px request to four models. The 1 and 2 CU models gave a usable silhouette and the most authentic pixel texture; GPT Image 2 followed the brief best. None returned a native-grid, closed-palette asset, and four ignored the requested canvas size.

Render, pixelate, cut out, refine

A knight rendered by FLUX.2 Klein 9b on a white background
1 CU render
The knight pixelated onto a 32-color palette
5 CU Pixelate
The pixelated knight with its background removed
2 CU Birefnet cutout
The final 64 by 64 transparent knight sprite after refinement
free refine, 64×64

One manifest, one pixelkiln gen, 8 CU: each step names its parent's style, so the chain runs in order and a 64×64 transparent sprite lands at the end, held at the same review gate as any other asset. On a real game's 240 px landmarks the same chain returned the sprite's exact size at high confidence with far more detail.

The same render, one PixelLab call

The same knight render, the source for both conversions
source the 1 CU render
The knight after Scenario's Pixelate
5 CU Scenario Pixelate
The knight after PixelLab's Image to Pixel Art Pro Flash, 108 by 109 pixels
6 gen PixelLab pixelate, 108×109

pixelkiln pixelate sends the same knight to PixelLab's Image to Pixel Art Pro Flash. PixelLab picked the 108×109 grid itself and returned it in one call for a flat 6 generations. Like Scenario's Pixelate, the result is opaque, here on near-white, so the cutout step still applies before it becomes a sprite.

What a real game taught us

  • Large art works. A 240 px landmark chain returned the existing sprite's exact size at high confidence, with far more detail, for 8 CU on the cheap model or 18 CU on the strongest.
  • A reference keeps the design. Sending the current sprite as a reference raised silhouette overlap from 0.39 to 0.66 to 0.93 to 1.00, at the same pixel scale. Some models shift colors.
  • Small sprites and tiles do not. 32 px props came back as different objects with holes after the cutout; terrain tiles and characters need tools built for them.
  • Backdrops need the prompt to say flat. An isometric prompt lay on a diagonal plane; asking for a front-facing horizontal strip gave the exact grid. A mist fade needs a better cutout route.
  • The pixelate grid is not always literal. On a 960 px render, asking for 240 made 2 px blocks and asking for 120 made the 240 cells wanted. Check one image first.
  • Sound effects need one event each. A two-part impact worked only as two sounds layered, and only on the pricier model; the cheap one returned ambience.
  • Quotes were exact, the balance is not visible. Every quote matched its bill, but the adapter cannot read the account balance, and a hand tally ran about 5% under it.
pixelkiln.manifest.json
"assets": {"knight": { "styles": ["render"], "prompt": "…" },"knight-px": {"styles": ["pixelate"],"prompt": "pixelate","revision": {"mode": "image-to-image","from": "knight","fromStyle": "render"}}}

revision.fromStyle lets a style that uses one model revise another style's output, so a chain across models is declared, priced, and ordered instead of stitched by hand.

Where it fits
Large landmarks, covers and key art with legible text, flat backdrops, image-to-image edits at 1 CU, and cheap sound effects
Where it does not
32 px props, characters, terrain tiles and cliff blocks, which stay on a tool built for them
Cost control
A free quote before every paid call, a per-style ceiling, and a command budget

The same sprite can cost 1 generation or 25.

Measured PixelLab costs vary by up to 25×. Retro Diffusion bills in USD, Scenario in compute units, and self-hosted ComfyUI has no provider charge. PixelKiln keeps those units separate.

GeneratorBest forMeasured cost
mapStandalone props and icons 1 gen
pixfluxExact closed palettes 1 gen
imageProNon-square or larger scenes, style transfer, a target palette 10–25 gen by canvas
1dirReferences and candidate variety 10–25 gen
tilesGround and structural sets 10–25 gen
terrainTwo-terrain tilesets, connected sets, and sidescroller platforms 15 gen Pro (25 at 64px), 3 standard or sidescroller
isometricTileA single elevation tile, such as a mesa or a cliff block 1 gen
characterA base in 8 directions, its poses, its loops 1–25 gen per base by engine, 1–4 per template loop, mirrors free
objectProA skeleton-free prop's base, poses, and loops about 6 gen per base at 64px, 1 per loop (unmeasured)
imageProFlashStyled stills on the Pro Flash model, 16–256px 5–9 gen (quoted)
uiAssetUI panels, buttons, and bars from pieces and elements 10–25 gen (20 measured before PixelLab's price cut)
uiElementOne UI element from a description, 16px and up 10–25 gen (unmeasured)
vfxAnimated effects: explosions, spells, auras, hits, on their own or around a sprite free from presets, 1 gen and up when described
animationRetro Diffusion GIFs and sprite sheetsUSD quote
framesControlled ComfyUI still sequences0 provider units

Give your agent the PixelKiln workflow.

The skill tells compatible agents when to plan, when to ask for a budget, when to restore existing work, when to stop for human review, and how to verify output.

Agent setupLibrary quickstart