pixelkiln 0.6.0 → 0.8.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/PROVIDERS.md CHANGED
@@ -1,18 +1,19 @@
1
- # PixelLab and Retro Diffusion
1
+ # Provider comparison
2
2
 
3
- PixelKiln can route one manifest through either PixelLab or Retro Diffusion.
3
+ PixelKiln can route one manifest through PixelLab, Retro Diffusion, or a
4
+ self-hosted ComfyUI server.
4
5
  The project model keeps planning, hard budgets, lockfile provenance, human
5
6
  review, recovery, and packaging. Each adapter owns its service's
6
7
  authentication, pricing, validation, request lifecycle, and output formats.
7
8
 
8
9
  PixelLab remains the default so existing manifests and spec hashes remain
9
- compatible. Select Retro Diffusion with the manifest's top-level `provider`
10
- field and keep its settings under `providerOptions.retrodiffusion`.
10
+ compatible. Select another backend with the manifest's top-level `provider`
11
+ field and keep its settings under the matching `providerOptions` key.
11
12
 
12
- Ready to configure a project? Use [Set up PixelLab](./docs/PIXELLAB.md) for the
13
- production provider or
14
- [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md) for the experimental
15
- adapter. This page focuses on choosing between them.
13
+ Ready to configure a project? Use [Set up PixelLab](./docs/PIXELLAB.md),
14
+ [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md), or
15
+ [Set up ComfyUI](./docs/COMFYUI.md). This page focuses on choosing between
16
+ them.
16
17
 
17
18
  ## Support status
18
19
 
@@ -20,6 +21,7 @@ adapter. This page focuses on choosing between them.
20
21
  |---|---|---|---|
21
22
  | PixelLab | Production; paid generation and account workflows live-tested | `PIXELLAB_API_KEY` | generations |
22
23
  | Retro Diffusion | Experimental; authenticated paid still generation, download, provenance, and recovery live-tested; advanced workflows pending | `RD_API_KEY` | USD |
24
+ | ComfyUI | Experimental; local single-image generation, four-candidate queue, provenance, and cache-only recovery live-tested on Apple MPS | none; optional `COMFYUI_BASE_URL` | free |
23
25
  | FakeProvider | Test-only deterministic lifecycle | none | free |
24
26
 
25
27
  Live tests now cover single-candidate RD Fast and RD Plus stills from cost quote
@@ -28,6 +30,10 @@ The RD Plus run covered isometric-asset, top-down-asset, and environment styles.
28
30
  Retro Diffusion's multi-candidate review, tileset, GIF, and spritesheet paths
29
31
  have mocked integration coverage but still need representative paid live runs.
30
32
 
33
+ ComfyUI's `free` unit means PixelKiln cannot identify a metered provider
34
+ charge. It does not count hardware, hosting, electricity, or model-license
35
+ costs.
36
+
31
37
  ## PixelLab vs. Retro Diffusion
32
38
 
33
39
  This comparison describes the adapters PixelKiln ships today, not every feature
@@ -52,17 +58,39 @@ is the desired look, or a USD quote is easier to budget. For a production batch,
52
58
  run one representative asset through the selected provider before expanding the
53
59
  scope.
54
60
 
61
+ ## Where ComfyUI fits
62
+
63
+ ComfyUI is different from the hosted providers. PixelKiln does not choose a
64
+ model or hide the graph. You commit an API-format workflow and declare the exact
65
+ prompt, size, batch, and optional seed inputs PixelKiln may replace.
66
+
67
+ | Decision | ComfyUI through PixelKiln |
68
+ |---|---|
69
+ | Best fit today | Private assets, local models, custom graph control, and teams that already maintain ComfyUI workflows |
70
+ | PixelKiln generator | `map` stills |
71
+ | Output | One PNG output node, with 1–16 review candidates |
72
+ | Cost model | `0 free`; local compute and hosting are outside PixelKiln's estimate |
73
+ | Reproducibility | Workflow content is hashed; model files, custom-node versions, and runtime settings must still be managed outside PixelKiln |
74
+ | Account lifecycle | Read-only connectivity check; no balance, remote object listing, tagging, or purge |
75
+ | Confidence | Full mocked coverage plus a live core-node single-image lifecycle, four-candidate queue, and cache-only restore on Apple MPS; pixel-art model benchmark pending |
76
+
77
+ ComfyUI is the strongest option when workflow ownership matters more than a
78
+ managed service. It is also the easiest provider to make irreproducible by
79
+ accident. Two machines can share the same graph but differ in checkpoint bytes,
80
+ custom-node versions, or sampler behavior. Commit the workflow and document the
81
+ external model stack used to validate it.
82
+
55
83
  ## Large environments, mountains, and buildings
56
84
 
57
85
  Start by deciding whether the result is an isolated map object or a complete
58
86
  background. That distinction matters more than raw canvas size.
59
87
 
60
- | Asset type | PixelLab through PixelKiln | Retro Diffusion through PixelKiln |
61
- |---|---|---|
62
- | Isolated house, building, mountain, or landmark | Start with `map`: arbitrary dimensions up to 400×400 and a measured one-generation cost. Live benchmark outputs had opaque backgrounds, so plan for cleanup. Use `1dir` only when references or candidate variety justify 20–40 generations and a square canvas. | Start with `rd_plus__topdown_asset`, `rd_plus__isometric_asset`, or `rd_tile__scene_object`, depending on perspective. `rd_tile__scene_object` is specifically intended for 64–384px objects placed on tile maps. |
63
- | Full scenic background | Use `pixflux` with `noBackground: false` when an exact palette matters, or `map` for a simple scene. Current PixelKiln routes top out at 400×400. | `rd_plus__environment` targets one-point-perspective scenes; `rd_plus__topdown_map` targets 3/4 top-down maps. These styles support up to 384×384. |
64
- | Style consistency across a set | `1dir` accepts a style reference and returns size-dependent candidates, but it is more expensive and capped at the square-object range. | RD Pro accepts up to nine references and has stronger prompt following, but its common styles top out at 256×256 and cost $0.18 per image. Environment-specific RD Plus styles trade references for a larger 384px canvas. |
65
- | Very large final scene | Generate reusable objects, terrain, and background layers separately; assemble them deterministically and integer-upscale the result. | Use the same layered approach. The API has a 512px overall ceiling, but the useful environment and scene-object styles currently cap at 384px. |
88
+ | Asset type | PixelLab | Retro Diffusion | ComfyUI |
89
+ |---|---|---|---|
90
+ | Isolated house, building, mountain, or landmark | Start with `map`: arbitrary dimensions up to 400×400 and a measured one-generation cost. Live benchmark outputs had opaque backgrounds, so plan for cleanup. Use `1dir` only when references or candidate variety justify 20–40 generations and a square canvas. | Start with `rd_plus__topdown_asset`, `rd_plus__isometric_asset`, or `rd_tile__scene_object`, depending on perspective. `rd_tile__scene_object` is intended for 64–384px objects placed on tile maps. | Choose a checkpoint or LoRA trained for the intended perspective, then keep background removal or segmentation in the workflow. The adapter accepts up to 4096px per edge, but useful size depends on the model and VRAM. |
91
+ | Full scenic background | Use `pixflux` with `noBackground: false` when an exact palette matters, or `map` for a simple scene. Current PixelKiln routes top out at 400×400. | `rd_plus__environment` targets one-point-perspective scenes; `rd_plus__topdown_map` targets 3/4 top-down maps. These styles support up to 384×384. | A custom workflow can use composition controls, tiled diffusion, or a generate-then-downscale path. PixelKiln does not configure those nodes; it binds the final size and records the graph hash. |
92
+ | Style consistency across a set | `1dir` accepts a style reference and returns size-dependent candidates, but it is more expensive and capped at the square-object range. | RD Pro accepts up to nine references and has stronger prompt following, but its common styles top out at 256×256 and cost $0.18 per image. Environment-specific RD Plus styles trade references for a larger 384px canvas. | LoRAs, reference adapters, ControlNet, and shared latent settings can live in the committed workflow. Reproducibility also depends on external model and custom-node versions. |
93
+ | Very large final scene | Generate reusable objects, terrain, and background layers separately; assemble them deterministically and integer-upscale the result. | Use the same layered approach. The API has a 512px overall ceiling, but the useful environment and scene-object styles currently cap at 384px. | The graph can tile, upscale, or composite beyond hosted-provider limits, but memory and seam quality become workflow concerns. Prefer reusable layers unless the scene truly needs one render. |
66
94
 
67
95
  For production environments, prefer a kit over a monolith: seamless terrain,
68
96
  separate landmarks/buildings, foreground occluders, and a distant backdrop.
@@ -77,12 +105,14 @@ edge cleanliness, tiling/layerability, prompt adherence, and usable results per
77
105
  provider unit. Seeds are provider-specific, so equal seed numbers do not make
78
106
  the outputs directly reproducible across services.
79
107
 
80
- See the [environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) for the
81
- twenty generated images, prompts, manifests, measured costs, and review. The
108
+ See the [hosted-provider environment benchmark](./docs/PROVIDER_BENCHMARK.md)
109
+ for the twenty generated images, prompts, manifests, measured costs, and review. The
82
110
  384×384 additions test a larger cliffside building and a full volcanic
83
- background.
111
+ background. ComfyUI needs a separate benchmark because model and workflow are
112
+ part of the provider configuration; comparing an unnamed graph would not be
113
+ repeatable.
84
114
 
85
- ## Use both providers in one project
115
+ ## Use multiple providers in one project
86
116
 
87
117
  One manifest selects one provider. PixelKiln does not currently support a
88
118
  provider override on an individual style or asset. The boundary is deliberate:
@@ -90,7 +120,7 @@ one command constructs one account adapter, and one `--budget` must have one
90
120
  meaning. PixelLab generations and Retro Diffusion dollars cannot share a safe
91
121
  ceiling.
92
122
 
93
- A repository can still use both providers today. Give each provider its own
123
+ A repository can still use multiple providers today. Give each provider its own
94
124
  manifest, lockfile, and output directory:
95
125
 
96
126
  ```text
@@ -99,6 +129,8 @@ art/
99
129
  pixelkiln.pixellab.lock.json
100
130
  pixelkiln.retrodiffusion.manifest.json
101
131
  pixelkiln.retrodiffusion.lock.json
132
+ pixelkiln.comfyui.manifest.json
133
+ pixelkiln.comfyui.lock.json
102
134
  pixelkiln.workspace.json
103
135
  ```
104
136
 
@@ -110,16 +142,20 @@ pixelkiln gen --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelki
110
142
 
111
143
  pixelkiln plan --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json
112
144
  pixelkiln gen --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json --budget <usd>
145
+
146
+ pixelkiln plan --manifest art/pixelkiln.comfyui.manifest.json --lock art/pixelkiln.comfyui.lock.json
147
+ pixelkiln gen --manifest art/pixelkiln.comfyui.manifest.json --lock art/pixelkiln.comfyui.lock.json --budget 0
113
148
  ```
114
149
 
115
- Register both manifests in the workspace catalog for aggregate status and
150
+ Register the manifests in the workspace catalog for aggregate status and
116
151
  complete claim checks. Keep the provider lockfiles separate. Package their
117
152
  reviewed outputs independently, or combine explicit files with `pixelkiln pack
118
153
  --inputs <file> --out <path>`.
119
154
 
120
155
  This is a useful split when PixelLab handles prompt-sensitive buildings and
121
- account recovery while Retro Diffusion handles environment-styled backdrops,
122
- clean cutouts, or native animation. Retro Diffusion is not a higher-resolution
156
+ account recovery, Retro Diffusion handles environment-styled backdrops, clean
157
+ cutouts, or native animation, and ComfyUI handles private or project-specific
158
+ model workflows. Retro Diffusion is not a higher-resolution
123
159
  route through PixelKiln today: its useful environment styles cap at 384×384,
124
160
  while PixelLab `map` reaches 400×400. Its advantage is the model/style and
125
161
  output type, not raw dimensions.
@@ -171,28 +207,30 @@ estimate and hard budget remain enforced.
171
207
 
172
208
  ## What to build next
173
209
 
174
- The highest-value next feature is native per-style provider routing, not a third
175
- adapter. The benchmark now shows a useful split: PixelLab follows dense
176
- building briefs more reliably, while Retro Diffusion returns cleaner cutouts
177
- and strong close environment framing. Two manifests make that combination
178
- possible, but awkward. One manifest should be able to send a building style to
179
- PixelLab and a background or animation style to Retro Diffusion.
210
+ The first ComfyUI release now has a live, versioned core-node reference
211
+ workflow. The remaining confidence gap is visual rather than transport: choose
212
+ and pin a pixel-art model or LoRA, then benchmark a large building and scenic
213
+ background against the hosted-provider briefs. A human still needs to complete
214
+ the live four-candidate selection and fetch path.
180
215
 
181
- This needs provider-keyed budgets and confirmations, not a provider field added
182
- in isolation. A safe plan must keep `4 generations` and `$0.40` separate,
183
- construct and rate-limit each adapter independently, and require an explicit
184
- provider for account-wide commands. The lockfile already records the provider
185
- on each entry, so its identity model is ready for the change.
216
+ Native per-style provider routing remains the highest-value orchestration
217
+ feature. One manifest should be able to send a building style to PixelLab, an
218
+ animation style to Retro Diffusion, and a private model workflow to ComfyUI.
219
+ That requires provider-keyed budgets and confirmations, independently
220
+ rate-limited adapters, and an explicit provider for account-wide commands. The
221
+ lockfile already records the provider on each entry.
186
222
 
187
- After that, Scenario is the best next hosted provider candidate.
223
+ Scenario remains the best next hosted provider candidate. The implementation
224
+ scope and acceptance criteria are tracked in
225
+ [GitHub issue #52](https://github.com/gfargo/pixelkiln/issues/52).
188
226
 
189
227
  | Candidate | What it adds | Fit with PixelKiln | Main cost or risk | Priority |
190
228
  |---|---|---|---|---:|
191
229
  | Scenario | Custom-trained style models, references, image editing, background removal, upscaling, and managed assets | Async jobs, asset IDs, and free `dryRun` cost estimates map closely to PixelKiln's plan/submit/poll/download lifecycle | API access requires a paid plan; auth uses both an API key and secret, so the provider factory must describe more than one credential | 1 |
192
- | ComfyUI local/cloud | Reproducible workflow graphs, broad model choice, local GPU execution, and a cloud path using a compatible API | Workflow JSON could become a durable provenance input; jobs and output downloads already resemble the current provider boundary | Local cost has no universal provider unit; the cloud API is marked experimental and requires a subscription | 2 |
230
+ | ComfyUI Cloud | Managed execution of workflow graphs without running a local GPU | Could reuse part of the workflow model, but authentication, endpoints, billing, and lifecycle must remain separate from the local adapter | Treating cloud as a base-URL swap would hide real security and cost differences | 2 |
193
231
  | fal | A large hosted model catalog, including pixel-art style controls, LoRAs, editing, upscaling, and background removal | Queue-based requests and model schemas are accessible through one client | Model-specific schemas and prices move the adapter toward a marketplace abstraction rather than one stable art workflow | 3 |
194
232
 
195
- Scenario deserves the first spike because its [custom generation API](https://docs.scenario.com/get-started/generation/third-party-model-generation)
233
+ Scenario is the next hosted spike because its [custom generation API](https://docs.scenario.com/get-started/generation/third-party-model-generation)
196
234
  returns an asynchronous job ID, its [generation surface](https://docs.scenario.com/get-started/documentation/key-capabilities-at-a-glance)
197
235
  supports custom models and image references, and its
198
236
  [Compute Unit guidance](https://help.scenario.com/articles/7934059476-api-usage-and-credits-compute-units)
@@ -200,25 +238,17 @@ documents free cost preflights. That combination adds something the current
200
238
  providers do not: a project-specific visual model with a cost check that can be
201
239
  captured before submission.
202
240
 
203
- ComfyUI should follow. Its [local server API](https://docs.comfy.org/development/overview)
204
- would cover private or offline GPU workflows, while the
205
- [cloud API](https://docs.comfy.org/development/cloud/overview) accepts the same
206
- workflow-shaped requests and exposes asynchronous jobs. The adapter needs an
207
- explicit budget policy before implementation. A local run could report planned
208
- image count and measured execution time, but it must not pretend those values
209
- are a portable dollar estimate.
210
-
211
241
  Recommended order:
212
242
 
213
- 1. Add per-style provider selection, provider-keyed budgets, and mixed-provider
243
+ 1. Select and benchmark a pinned pixel-art ComfyUI workflow, including a human-reviewed candidate fetch.
244
+ 2. Add per-style provider selection, provider-keyed budgets, and mixed-provider
214
245
  integration tests.
215
- 2. Finish live Retro Diffusion multi-candidate, tileset, GIF, and spritesheet
246
+ 3. Finish live Retro Diffusion multi-candidate, tileset, GIF, and spritesheet
216
247
  smoke tests.
217
- 3. Build a narrow Scenario still-image spike with dry-run cost, submit, poll,
248
+ 4. Build the Scenario still-image spike from issue #52 with dry-run cost, submit, poll,
218
249
  download, and one custom-model or reference-image benchmark.
219
- 4. Define local and cloud budget semantics for ComfyUI, then prototype one
220
- versioned workflow.
221
- 5. Consider general raster marketplaces only with explicit nearest-neighbor,
250
+ 5. Design ComfyUI Cloud as a separate authenticated and billable adapter.
251
+ 6. Consider general raster marketplaces only with explicit nearest-neighbor,
222
252
  palette, transparency, and reproducibility checks.
223
253
 
224
254
  Midjourney is not an adapter target without an official public API. Automating
package/README.md CHANGED
@@ -20,9 +20,13 @@ live-tested backend. An experimental Retro Diffusion adapter supports native
20
20
  pixel-art stills, candidate batches, tileset sheets, animated GIFs, and PNG
21
21
  spritesheets. Authenticated RD Fast and RD Plus single-candidate still paths
22
22
  have passed from quote through validated output and recovery. Multi-candidate,
23
- tileset, GIF, and spritesheet live runs remain. See
24
- [PixelLab vs. Retro Diffusion](./PROVIDERS.md) for the trade-offs, including
25
- large environment and building workflows.
23
+ tileset, GIF, and spritesheet live runs remain. An experimental ComfyUI adapter
24
+ runs committed API-format still-image workflows on a self-hosted server. Its
25
+ core-node smoke project has passed live generation, candidate queueing, and
26
+ cache-only recovery on Apple MPS. An SDXL plus Pixel Art XL workflow also has
27
+ four baseline samples and four refined transparency and palette samples. See
28
+ [provider comparison](./PROVIDERS.md) for the trade-offs, including large
29
+ environment and building workflows.
26
30
  `FakeProvider` exercises the same contract deterministically in tests.
27
31
 
28
32
  > **Release status:** PixelKiln is published on npm. Merges to `main` use
@@ -98,7 +102,7 @@ cp examples/minimal/pixelkiln.manifest.json ../my-game/pixelkiln.manifest.json
98
102
  cd ../my-game
99
103
  ```
100
104
 
101
- Put the provider credential in `.env.local` beside the manifest:
105
+ Put a hosted provider's credential in `.env.local` beside the manifest:
102
106
 
103
107
  ```dotenv
104
108
  # PixelLab (the default provider)
@@ -106,6 +110,9 @@ PIXELLAB_API_KEY=...
106
110
 
107
111
  # Or Retro Diffusion when `provider` is `retrodiffusion`
108
112
  RD_API_KEY=...
113
+
114
+ # Self-hosted ComfyUI needs no key; override its local URL only when needed
115
+ COMFYUI_BASE_URL=http://127.0.0.1:8188
109
116
  ```
110
117
 
111
118
  Validate locally, inspect exact work/cost, then generate with a hard ceiling:
@@ -130,9 +137,10 @@ pixelkiln plan
130
137
  ```
131
138
 
132
139
  See [Getting started](./docs/GETTING_STARTED.md) for new and existing projects.
133
- Use [Set up PixelLab](./docs/PIXELLAB.md) or
134
- [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md) for provider-specific
135
- credentials, manifest examples, and current limits.
140
+ Use [Set up PixelLab](./docs/PIXELLAB.md),
141
+ [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md), or
142
+ [Set up ComfyUI](./docs/COMFYUI.md) for provider-specific configuration,
143
+ manifest examples, and current limits.
136
144
 
137
145
  ## Agent skill
138
146
 
@@ -176,10 +184,11 @@ Styles are namespaces. Adding a second style re-derives the same asset ids into
176
184
  a separate output directory and separate lock keys without clobbering the first
177
185
  set. Generator choice, reference-image bytes, dimensions, palette, seed, and
178
186
  prompt settings participate in deterministic spec identity. A manifest may
179
- select `retrodiffusion` instead and pass namespaced `providerOptions`; see
187
+ select another provider and pass namespaced `providerOptions`; see
180
188
  [Set up PixelLab](./docs/PIXELLAB.md),
181
189
  [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md), and
182
- [PixelLab vs. Retro Diffusion](./PROVIDERS.md) for configuration, costs,
190
+ [Set up ComfyUI](./docs/COMFYUI.md). The
191
+ [provider comparison](./PROVIDERS.md) covers costs,
183
192
  current confidence, and limitations.
184
193
 
185
194
  The schema rejects unknown fields and invalid generator combinations before
@@ -226,8 +235,9 @@ replace a hard palette or reference-image constraint. See
226
235
 
227
236
  Generator names describe PixelKiln workflows; their exact capabilities and
228
237
  prices depend on the selected provider. Retro Diffusion also supports the
229
- provider-specific `animation` generator. Compare the adapters in
230
- [PixelLab vs. Retro Diffusion](./PROVIDERS.md).
238
+ provider-specific `animation` generator. ComfyUI currently supports `map`
239
+ through an operator-supplied workflow. Compare the adapters in the
240
+ [provider comparison](./PROVIDERS.md).
231
241
 
232
242
  ## Derived artifacts
233
243
 
@@ -332,11 +342,12 @@ writes, and offline provenance verification. See [Library API](./docs/LIBRARY.md
332
342
  | [Getting started](./docs/GETTING_STARTED.md) | First project, existing-art onboarding, everyday workflow, and what to commit. |
333
343
  | [Set up PixelLab](./docs/PIXELLAB.md) | Production-provider credentials, manifest, generators, and account workflows. |
334
344
  | [Set up Retro Diffusion](./docs/RETRO_DIFFUSION.md) | Experimental-provider credentials, styles, formats, cost checks, and limits. |
345
+ | [Set up ComfyUI](./docs/COMFYUI.md) | Experimental self-hosted server, workflow bindings, local cost semantics, and limits. |
335
346
  | [CLI reference](./docs/CLI.md) | Every command, flag, JSON mode, and exit contract. |
336
347
  | [Manifest reference](./docs/MANIFEST.md) | Every style/asset field and generator constraint. |
337
348
  | [Agent workflows](./docs/AGENTS.md) | Official skill install, operating model, and provider-aware safety. |
338
349
  | [Generators](./docs/GENERATORS.md) | Capability choice, measured costs, palettes, style references, and tiles. |
339
- | [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) | Twenty matched outputs comparing buildings, landmarks, large backgrounds, cost, and file readiness. |
350
+ | [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) | Twenty-eight outputs comparing providers, large scenes, transparency, palette size, and file readiness. |
340
351
  | [Derived artifacts](./docs/ARTIFACTS.md) | Pack, mount, export, provenance, ownership, transactions, and recovery. |
341
352
  | [Recovery](./docs/RECOVERY.md) | Restore, caches, adopt, salvage, claims, and purge safety. |
342
353
  | [Quality gates](./docs/QUALITY.md) | Plan, doctor, audit, cache, JSON, and CI. |
@@ -344,7 +355,7 @@ writes, and offline provenance verification. See [Library API](./docs/LIBRARY.md
344
355
  | [Library API](./docs/LIBRARY.md) | Public TypeScript contracts and examples. |
345
356
  | [Tiles](./docs/TILES.md) | Structural outputs and generic/Tiled/Godot formats. |
346
357
  | [Endpoint research](./docs/ENDPOINTS.md) | Measured PixelLab API behavior and recipes. |
347
- | [PixelLab vs. Retro Diffusion](./PROVIDERS.md) | Provider selection, costs, supported workflows, confidence, and limitations. |
358
+ | [Provider comparison](./PROVIDERS.md) | Provider selection, costs, supported workflows, confidence, and limitations. |
348
359
 
349
360
  The [public documentation site](https://pixelkiln.griffen.codes/docs) is built by
350
361
  the application in [`website/`](./website/README.md). It reads these Markdown