pixelkiln 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/README.md CHANGED
@@ -12,6 +12,7 @@ This source also renders at
12
12
  | [Getting started](./GETTING_STARTED.md) | Install from a checkout, create or adopt a project, run the everyday workflow, and decide what belongs in Git. |
13
13
  | [Set up PixelLab](./PIXELLAB.md) | Configure the production provider, choose a generator, and use its account workflows. |
14
14
  | [Set up Retro Diffusion](./RETRO_DIFFUSION.md) | Configure the experimental provider, choose a style, and understand its live-tested boundary. |
15
+ | [Set up ComfyUI](./COMFYUI.md) | Connect a self-hosted server, install the tested SDXL pixel-art stack, and bind a committed workflow. |
15
16
  | [CLI reference](./CLI.md) | Every command and flag, offline/provider requirements, JSON output, and exit behavior. |
16
17
  | [Manifest reference](./MANIFEST.md) | Every style and asset field, inheritance, generator-specific constraints, mounting, and schema validation. |
17
18
  | [Agent workflows](./AGENTS.md) | Install the official skill and pair agent guidance with the deterministic CLI. |
@@ -21,7 +22,7 @@ This source also renders at
21
22
  | Guide | Use it for |
22
23
  |---|---|
23
24
  | [Generators](./GENERATORS.md) | Choose between `map`, `1dir`, `pixflux`, and `tiles`; understand measured costs and capability trade-offs. |
24
- | [Environment provider benchmark](./PROVIDER_BENCHMARK.md) | Compare PixelLab and Retro Diffusion on buildings, landmarks, backgrounds, cost, transparency, and prompt coverage. |
25
+ | [Environment provider benchmark](./PROVIDER_BENCHMARK.md) | Compare PixelLab, Retro Diffusion, and a named ComfyUI model stack on buildings and backgrounds. |
25
26
  | [Derived artifacts](./ARTIFACTS.md) | Pack, mount, and export; provenance companions; ownership; force takeover; transactional and crash recovery. |
26
27
  | [Recovery and account safety](./RECOVERY.md) | Restore, caches, adopt, salvage, cross-project claims, tagging, and confirmed purge. |
27
28
  | [Quality gates](./QUALITY.md) | Plan, doctor, audit, cache checks, JSON contracts, and CI usage. |
@@ -34,7 +35,7 @@ This source also renders at
34
35
  | [Library API](./LIBRARY.md) | Public TypeScript imports for planning, auditing, providers, packing, exporting, and managed artifact writes. |
35
36
  | [Tiles and engine exports](./TILES.md) | Structural tile roles, provider rule preservation, generic JSON, Tiled Wang sets, and Godot terrain sets. |
36
37
  | [Measured PixelLab endpoints](./ENDPOINTS.md) | Live-account cost and payload research, endpoint recipes, limits, and unresolved API behavior. |
37
- | [PixelLab vs. Retro Diffusion](../PROVIDERS.md) | Provider selection, costs, adapter capabilities, confidence, and next work. Start with the provider-specific setup guides above when you are ready to configure a project. |
38
+ | [Provider comparison](../PROVIDERS.md) | Provider selection, costs, adapter capabilities, confidence, and next work. Start with the provider-specific setup guides above when you are ready to configure a project. |
38
39
 
39
40
  ## Project policies
40
41
 
@@ -103,7 +103,7 @@ building, landmark, and foreground layers.
103
103
 
104
104
  The [environment benchmark](./PROVIDER_BENCHMARK.md) found clean transparent,
105
105
  low-color Retro Diffusion cutouts, while PixelLab followed the more complex
106
- building prompts more closely. Read [PixelLab vs. Retro Diffusion](../PROVIDERS.md)
106
+ building prompts more closely. Read the [provider comparison](../PROVIDERS.md)
107
107
  before committing to a large batch.
108
108
 
109
109
  Retro Diffusion publishes its API examples and pricing formulas in the
@@ -0,0 +1,24 @@
1
+ # ComfyUI smoke project
2
+
3
+ This example uses only ComfyUI core nodes and the public Stable Diffusion 1.5
4
+ checkpoint from Comfy's first-generation guide. It exists to verify the local
5
+ submit, poll, download, provenance, and recovery path. It is not the visual
6
+ benchmark model.
7
+
8
+ Install `v1-5-pruned-emaonly-fp16.safetensors` in ComfyUI's `checkpoints`
9
+ model folder, then copy this directory into a scratch project. From the copy:
10
+
11
+ ```bash
12
+ pixelkiln doctor --dry-run
13
+ pixelkiln doctor
14
+ pixelkiln plan
15
+ pixelkiln gen --budget 0
16
+ pixelkiln audit --check
17
+ ```
18
+
19
+ The workflow is already in API format. Its bindings match the node and input
20
+ IDs in `pixelkiln.manifest.json`. Editing either file changes the resolved asset
21
+ identity.
22
+
23
+ The checkpoint is not part of this repository. Its model card and license are
24
+ published by [Comfy Org on Hugging Face](https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive).
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "../../schema/manifest.schema.json",
3
+ "name": "pixelkiln-comfyui-smoke",
4
+ "provider": "comfyui",
5
+ "styles": {
6
+ "smoke": {
7
+ "generator": "map",
8
+ "outDir": "output/smoke",
9
+ "promptPrefix": "pixel art game asset",
10
+ "promptSuffix": "isolated on a plain background, crisp silhouette, limited color palette",
11
+ "seed": 31415,
12
+ "providerOptions": {
13
+ "comfyui": {
14
+ "workflowFile": "workflow-api.json",
15
+ "outputNodeId": "9",
16
+ "numImages": 1,
17
+ "bindings": {
18
+ "prompt": { "nodeId": "6", "input": "text" },
19
+ "width": { "nodeId": "5", "input": "width" },
20
+ "height": { "nodeId": "5", "input": "height" },
21
+ "batchSize": { "nodeId": "5", "input": "batch_size" },
22
+ "seed": { "nodeId": "3", "input": "seed" }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "assets": {
29
+ "anvil": {
30
+ "prompt": "a compact blacksmith anvil",
31
+ "width": 256,
32
+ "height": 256
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "3": {
3
+ "class_type": "KSampler",
4
+ "inputs": {
5
+ "seed": 31415,
6
+ "steps": 24,
7
+ "cfg": 7,
8
+ "sampler_name": "euler_ancestral",
9
+ "scheduler": "normal",
10
+ "denoise": 1,
11
+ "model": ["4", 0],
12
+ "positive": ["6", 0],
13
+ "negative": ["7", 0],
14
+ "latent_image": ["5", 0]
15
+ }
16
+ },
17
+ "4": {
18
+ "class_type": "CheckpointLoaderSimple",
19
+ "inputs": {
20
+ "ckpt_name": "v1-5-pruned-emaonly-fp16.safetensors"
21
+ }
22
+ },
23
+ "5": {
24
+ "class_type": "EmptyLatentImage",
25
+ "inputs": {
26
+ "width": 256,
27
+ "height": 256,
28
+ "batch_size": 1
29
+ }
30
+ },
31
+ "6": {
32
+ "class_type": "CLIPTextEncode",
33
+ "inputs": {
34
+ "text": "pixel art game asset",
35
+ "clip": ["4", 1]
36
+ }
37
+ },
38
+ "7": {
39
+ "class_type": "CLIPTextEncode",
40
+ "inputs": {
41
+ "text": "photograph, text, watermark, signature, blurry",
42
+ "clip": ["4", 1]
43
+ }
44
+ },
45
+ "8": {
46
+ "class_type": "VAEDecode",
47
+ "inputs": {
48
+ "samples": ["3", 0],
49
+ "vae": ["4", 2]
50
+ }
51
+ },
52
+ "9": {
53
+ "class_type": "SaveImage",
54
+ "inputs": {
55
+ "filename_prefix": "pixelkiln/comfyui-smoke",
56
+ "images": ["8", 0]
57
+ }
58
+ }
59
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -80,6 +80,7 @@
80
80
  "game-assets",
81
81
  "pixellab",
82
82
  "retro-diffusion",
83
+ "comfyui",
83
84
  "image-generation",
84
85
  "asset-pipeline",
85
86
  "generative",
@@ -33,8 +33,8 @@
33
33
  },
34
34
  "size": {
35
35
  "type": "integer",
36
- "minimum": 32,
37
- "maximum": 256
36
+ "minimum": 16,
37
+ "maximum": 8192
38
38
  },
39
39
  "view": {
40
40
  "type": "string"
@@ -191,12 +191,12 @@
191
191
  "width": {
192
192
  "type": "integer",
193
193
  "minimum": 16,
194
- "maximum": 400
194
+ "maximum": 8192
195
195
  },
196
196
  "height": {
197
197
  "type": "integer",
198
198
  "minimum": 16,
199
- "maximum": 400
199
+ "maximum": 8192
200
200
  },
201
201
  "size": {
202
202
  "type": "integer",
@@ -50,7 +50,9 @@ Read only the reference needed for the current decision:
50
50
  - For Retro Diffusion styles, USD budgets, environment assets, animation, or
51
51
  experimental limits, read
52
52
  [references/retro-diffusion.md](references/retro-diffusion.md).
53
- - When one game or repository needs both providers, read
53
+ - For a self-hosted ComfyUI workflow, node bindings, local cost semantics, or
54
+ portable output recovery, read [references/comfyui.md](references/comfyui.md).
55
+ - When one game or repository needs more than one provider, read
54
56
  [references/mixed-providers.md](references/mixed-providers.md).
55
57
 
56
58
  `FakeProvider` is the deterministic test adapter. Do not describe Retro
@@ -58,6 +60,6 @@ Diffusion as production-ready until representative multi-candidate, tileset,
58
60
  GIF, and spritesheet live smoke tests pass.
59
61
 
60
62
  When working in the PixelKiln repository, consult `docs/GETTING_STARTED.md` for
61
- the full workflow, `docs/PIXELLAB.md` or `docs/RETRO_DIFFUSION.md` for provider
62
- setup, `docs/CLI.md` for flags, `docs/MANIFEST.md` for the schema, and
63
+ the full workflow, the matching provider setup guide, `docs/CLI.md` for flags,
64
+ `docs/MANIFEST.md` for the schema, and
63
65
  `docs/RECOVERY.md` before account adoption, salvage, discard, or purge.
@@ -0,0 +1,46 @@
1
+ # ComfyUI
2
+
3
+ Read this reference before operating a PixelKiln manifest whose provider is
4
+ `comfyui`.
5
+
6
+ ComfyUI is self-hosted and needs no provider credential. Never assume the
7
+ server is running or reachable. `pixelkiln doctor --dry-run` validates the
8
+ workflow and bindings offline; `pixelkiln doctor` checks the configured server
9
+ through its read-only system-stats route. The default URL is
10
+ `http://127.0.0.1:8188`; `COMFYUI_BASE_URL` overrides it. Do not advise exposing
11
+ an unauthenticated ComfyUI server to a public network.
12
+
13
+ The style's `providerOptions.comfyui` must name a committed API-format workflow,
14
+ one image output node, the expected candidate count, and bindings for prompt,
15
+ width, height, and batch size. A seed binding is required when the style
16
+ declares a seed. Node IDs and model filenames are workflow-specific. Check the
17
+ exported JSON instead of guessing them.
18
+
19
+ Planning parses and hashes the workflow file without contacting ComfyUI. A
20
+ workflow content change makes affected assets stale. The adapter supports only
21
+ the `map` generator, PNG output from one node, 1–16 candidates, and dimensions
22
+ from 16–4096px. Manifest `styleImages` and `palette` are unsupported; those
23
+ controls belong in the workflow.
24
+
25
+ For the tested higher-quality pixel-art stack, use SDXL Base 1.0 as
26
+ `sd_xl_base_1.0.safetensors` and Pixel Art XL as
27
+ `pixel-art-xl.safetensors`. The repository's
28
+ `benchmarks/provider-environments/comfyui/` project names both files and uses
29
+ core nodes only. Its workflows sample at 1024×1024, then use `ImageScale` with
30
+ `nearest-exact`; width and height bindings point to the scale node so the saved
31
+ PNG still matches the manifest dimensions. The isolated workflow uses LoRA
32
+ strength 1.0, while the environment workflow uses 0.85. Read
33
+ `docs/COMFYUI.md` for download links, checksums, licenses, and measured limits.
34
+
35
+ The plan reports `0 free` and generation uses `--budget 0`. Explain that this
36
+ means no metered API charge. Hardware, electricity, hosting, and model licenses
37
+ can still cost money.
38
+
39
+ The lockfile records a prompt ID, output node, workflow hash, and portable
40
+ `comfyui://` source. Restore from the validated content cache first. If the
41
+ cache is missing, the current ComfyUI server must still retain the history
42
+ output so PixelKiln can resolve the portable source.
43
+
44
+ For the complete setup, quality stack, benchmark, and troubleshooting, use
45
+ `docs/COMFYUI.md` or
46
+ <https://pixelkiln.griffen.codes/docs/comfyui>.
@@ -1,7 +1,7 @@
1
1
  # Mixed-provider projects
2
2
 
3
- Read this reference when one game or repository needs assets from both PixelLab
4
- and Retro Diffusion.
3
+ Read this reference when one game or repository needs assets from PixelLab,
4
+ Retro Diffusion, ComfyUI, or another combination of providers.
5
5
 
6
6
  One manifest selects one top-level `provider`. Do not add undocumented
7
7
  per-style provider fields: the current CLI constructs one account adapter for a
@@ -15,6 +15,8 @@ art/
15
15
  pixelkiln.pixellab.lock.json
16
16
  pixelkiln.retrodiffusion.manifest.json
17
17
  pixelkiln.retrodiffusion.lock.json
18
+ pixelkiln.comfyui.manifest.json
19
+ pixelkiln.comfyui.lock.json
18
20
  pixelkiln.workspace.json
19
21
  ```
20
22
 
@@ -26,18 +28,24 @@ pixelkiln gen --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelki
26
28
 
27
29
  pixelkiln plan --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json
28
30
  pixelkiln gen --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json --budget <usd>
31
+
32
+ pixelkiln plan --manifest art/pixelkiln.comfyui.manifest.json --lock art/pixelkiln.comfyui.lock.json
33
+ pixelkiln gen --manifest art/pixelkiln.comfyui.manifest.json --lock art/pixelkiln.comfyui.lock.json --budget 0
29
34
  ```
30
35
 
31
- Register both manifests in the workspace catalog so aggregate status and claim
36
+ Register every manifest in the workspace catalog so aggregate status and claim
32
37
  checks see the whole project. A mixed-provider warning is expected because it
33
38
  prevents account-wide commands from silently assuming one backend.
34
39
 
35
40
  Package each manifest's reviewed outputs independently, or use `pixelkiln pack
36
41
  --inputs <file> --out <path>` with an explicit JSON list when the final sheet
37
- must combine files from both providers. Never merge the two lockfiles or add
38
- generation counts to USD. Each entry must retain the provider that produced it.
42
+ must combine files from multiple providers. Never merge their lockfiles or add
43
+ generation counts, USD, and `free` plans. Each entry must retain the provider
44
+ that produced it.
39
45
 
40
46
  A practical split is PixelLab for prompt-sensitive buildings and mature account
41
47
  recovery, then Retro Diffusion for environment-styled backdrops, clean cutouts,
42
- or native animation. The committed benchmark is evidence for those tendencies,
43
- not a guarantee; run one representative asset before expanding either batch.
48
+ or native animation. ComfyUI fits private work, local models, and custom graph
49
+ control, but its result depends on the exact workflow, model, nodes, and
50
+ hardware. The committed hosted-provider benchmark is evidence for tendencies,
51
+ not a guarantee. Run one representative asset before expanding any batch.
@@ -24,9 +24,11 @@ providers, or before any PixelLab account operation.
24
24
  | `tiles` | Ground variations or connected structures | 20–40 generations |
25
25
 
26
26
  In the committed environment benchmark, PixelLab followed complex building
27
- prompts more closely and produced the stronger scenic background. Its 256px map
28
- objects were opaque despite the route's transparency claim, so inspect alpha on
29
- one representative result before a batch.
27
+ prompts more closely and produced broader, more separable depth bands in scenic
28
+ backgrounds. Its 256px and 384px map objects were opaque despite the route's
29
+ transparency claim, so inspect alpha on one representative result before a
30
+ batch. Inspect scenic outputs for stray marks too: one untouched 384px attempt
31
+ contained a generated signature-like glyph.
30
32
 
31
33
  For setup and current field constraints, use
32
34
  <https://pixelkiln.griffen.codes/docs/pixellab>. When working in the PixelKiln
@@ -31,6 +31,13 @@ cutouts, smaller palettes, cinematic framing, or native animation. Build truly
31
31
  large scenes from separately generated terrain, backdrop, landmark, building,
32
32
  and foreground layers, then integer-upscale with nearest-neighbor filtering.
33
33
 
34
+ The committed 384px benchmark produced substantially larger isometric
35
+ buildings than the earlier 256px brief while retaining 52% to 75%
36
+ transparency and 49 to 55 colors. Its volcanic backgrounds made the pass and
37
+ lava path clear, but dropped a requested fortress and favored close canyon
38
+ framing over separable distant planes. Use a representative large asset before
39
+ assuming prompt details or layerability will survive a batch.
40
+
34
41
  For setup, selectors, and option constraints, use
35
42
  <https://pixelkiln.griffen.codes/docs/retro-diffusion>. The matched visual
36
43
  evidence is at <https://pixelkiln.griffen.codes/docs/provider-benchmark>. When