pixelkiln 0.4.1 → 0.6.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/CONTRIBUTING.md +12 -0
- package/PROVIDERS.md +102 -11
- package/README.md +13 -19
- package/docs/AGENTS.md +7 -0
- package/docs/GETTING_STARTED.md +8 -7
- package/docs/PROVIDER_BENCHMARK.md +73 -14
- package/package.json +2 -1
- package/skills/pixelkiln/SKILL.md +13 -8
- package/skills/pixelkiln/references/mixed-providers.md +43 -0
- package/skills/pixelkiln/references/pixellab.md +37 -0
- package/skills/pixelkiln/references/retro-diffusion.md +47 -0
package/CONTRIBUTING.md
CHANGED
|
@@ -11,6 +11,7 @@ Requires Node.js 20 or newer.
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npm ci
|
|
14
|
+
npm run test:release
|
|
14
15
|
npm run typecheck
|
|
15
16
|
npm run test:docs
|
|
16
17
|
npm test
|
|
@@ -114,6 +115,17 @@ short-lived credential, and the npm CLI performs the exchange itself during
|
|
|
114
115
|
signed provenance attestation linking the tarball to its source commit and
|
|
115
116
|
workflow run.
|
|
116
117
|
|
|
118
|
+
The release job is serialized so two quick merges cannot publish concurrently,
|
|
119
|
+
and it times out after 20 minutes rather than holding publishing permission
|
|
120
|
+
indefinitely. `npm run test:release` checks the repository-side trust contract:
|
|
121
|
+
the OIDC permission, GitHub-hosted runner, registry configuration, full checkout
|
|
122
|
+
history, absence of an npm publishing token, and the expected release plugins.
|
|
123
|
+
|
|
124
|
+
The public `gfargo/skills` tap watches PixelKiln releases on an hourly schedule.
|
|
125
|
+
When a new tag appears, it mirrors the tagged `skills/pixelkiln/` directory,
|
|
126
|
+
bumps the games plugin, and publishes a games release. PixelKiln remains the
|
|
127
|
+
source of truth; the source repository needs no cross-repository write token.
|
|
128
|
+
|
|
117
129
|
Two conditions have to hold on the npm side, and neither lives in this
|
|
118
130
|
repository:
|
|
119
131
|
|
package/PROVIDERS.md
CHANGED
|
@@ -78,7 +78,58 @@ provider unit. Seeds are provider-specific, so equal seed numbers do not make
|
|
|
78
78
|
the outputs directly reproducible across services.
|
|
79
79
|
|
|
80
80
|
See the [environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) for the
|
|
81
|
-
|
|
81
|
+
twenty generated images, prompts, manifests, measured costs, and review. The
|
|
82
|
+
384×384 additions test a larger cliffside building and a full volcanic
|
|
83
|
+
background.
|
|
84
|
+
|
|
85
|
+
## Use both providers in one project
|
|
86
|
+
|
|
87
|
+
One manifest selects one provider. PixelKiln does not currently support a
|
|
88
|
+
provider override on an individual style or asset. The boundary is deliberate:
|
|
89
|
+
one command constructs one account adapter, and one `--budget` must have one
|
|
90
|
+
meaning. PixelLab generations and Retro Diffusion dollars cannot share a safe
|
|
91
|
+
ceiling.
|
|
92
|
+
|
|
93
|
+
A repository can still use both providers today. Give each provider its own
|
|
94
|
+
manifest, lockfile, and output directory:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
art/
|
|
98
|
+
pixelkiln.pixellab.manifest.json
|
|
99
|
+
pixelkiln.pixellab.lock.json
|
|
100
|
+
pixelkiln.retrodiffusion.manifest.json
|
|
101
|
+
pixelkiln.retrodiffusion.lock.json
|
|
102
|
+
pixelkiln.workspace.json
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Plan and authorize each manifest separately:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
pixelkiln plan --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelkiln.pixellab.lock.json
|
|
109
|
+
pixelkiln gen --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelkiln.pixellab.lock.json --budget <generations>
|
|
110
|
+
|
|
111
|
+
pixelkiln plan --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json
|
|
112
|
+
pixelkiln gen --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json --budget <usd>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Register both manifests in the workspace catalog for aggregate status and
|
|
116
|
+
complete claim checks. Keep the provider lockfiles separate. Package their
|
|
117
|
+
reviewed outputs independently, or combine explicit files with `pixelkiln pack
|
|
118
|
+
--inputs <file> --out <path>`.
|
|
119
|
+
|
|
120
|
+
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
|
|
123
|
+
route through PixelKiln today: its useful environment styles cap at 384×384,
|
|
124
|
+
while PixelLab `map` reaches 400×400. Its advantage is the model/style and
|
|
125
|
+
output type, not raw dimensions.
|
|
126
|
+
|
|
127
|
+
Native mixed-provider support inside one manifest would be a larger feature,
|
|
128
|
+
not a schema-only change. It needs provider selection on each style, plans and
|
|
129
|
+
confirmations grouped by provider and cost unit, separate budget ceilings,
|
|
130
|
+
per-provider polling and downloads, and an explicit provider for account-wide
|
|
131
|
+
commands. The lockfile already records a provider on every entry, so the state
|
|
132
|
+
format can support that direction without merging provider identities.
|
|
82
133
|
|
|
83
134
|
## Cost comparison
|
|
84
135
|
|
|
@@ -118,16 +169,56 @@ is interpreted in the active provider's unit. Providers without a balance or
|
|
|
118
169
|
account-management endpoint can still generate safely because the offline
|
|
119
170
|
estimate and hard budget remain enforced.
|
|
120
171
|
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
172
|
+
## What to build next
|
|
173
|
+
|
|
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.
|
|
180
|
+
|
|
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.
|
|
186
|
+
|
|
187
|
+
After that, Scenario is the best next hosted provider candidate.
|
|
188
|
+
|
|
189
|
+
| Candidate | What it adds | Fit with PixelKiln | Main cost or risk | Priority |
|
|
190
|
+
|---|---|---|---|---:|
|
|
191
|
+
| 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 |
|
|
193
|
+
| 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
|
+
|
|
195
|
+
Scenario deserves the first spike because its [custom generation API](https://docs.scenario.com/get-started/generation/third-party-model-generation)
|
|
196
|
+
returns an asynchronous job ID, its [generation surface](https://docs.scenario.com/get-started/documentation/key-capabilities-at-a-glance)
|
|
197
|
+
supports custom models and image references, and its
|
|
198
|
+
[Compute Unit guidance](https://help.scenario.com/articles/7934059476-api-usage-and-credits-compute-units)
|
|
199
|
+
documents free cost preflights. That combination adds something the current
|
|
200
|
+
providers do not: a project-specific visual model with a cost check that can be
|
|
201
|
+
captured before submission.
|
|
202
|
+
|
|
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
|
+
Recommended order:
|
|
212
|
+
|
|
213
|
+
1. Add per-style provider selection, provider-keyed budgets, and mixed-provider
|
|
214
|
+
integration tests.
|
|
215
|
+
2. Finish live Retro Diffusion multi-candidate, tileset, GIF, and spritesheet
|
|
216
|
+
smoke tests.
|
|
217
|
+
3. Build a narrow Scenario still-image spike with dry-run cost, submit, poll,
|
|
218
|
+
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,
|
|
131
222
|
palette, transparency, and reproducibility checks.
|
|
132
223
|
|
|
133
224
|
Midjourney is not an adapter target without an official public API. Automating
|
package/README.md
CHANGED
|
@@ -25,9 +25,9 @@ tileset, GIF, and spritesheet live runs remain. See
|
|
|
25
25
|
large environment and building workflows.
|
|
26
26
|
`FakeProvider` exercises the same contract deterministically in tests.
|
|
27
27
|
|
|
28
|
-
> **Release status:**
|
|
29
|
-
>
|
|
30
|
-
>
|
|
28
|
+
> **Release status:** PixelKiln is published on npm. Merges to `main` use
|
|
29
|
+
> Semantic Release and npm Trusted Publishing, with signed provenance and no
|
|
30
|
+
> long-lived npm publishing token.
|
|
31
31
|
|
|
32
32
|
## Why PixelKiln
|
|
33
33
|
|
|
@@ -76,21 +76,18 @@ a row unresolved. Nothing is applied when the window is closed without using
|
|
|
76
76
|
**Apply selections**. See the [CLI reference](docs/CLI.md#pick) for the complete
|
|
77
77
|
review workflow.
|
|
78
78
|
|
|
79
|
-
## Install
|
|
79
|
+
## Install
|
|
80
80
|
|
|
81
81
|
Requires Node.js 20 or newer.
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
npm ci
|
|
87
|
-
npm run pixelkiln -- help
|
|
88
|
-
npm test
|
|
84
|
+
npm install --save-dev pixelkiln
|
|
85
|
+
npx pixelkiln --help
|
|
89
86
|
```
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
For library use, both `import("pixelkiln")` and `require("pixelkiln")` are
|
|
89
|
+
supported. Contributors can still run `npm run pixelkiln -- …` from a checkout
|
|
90
|
+
to execute the TypeScript source directly.
|
|
94
91
|
|
|
95
92
|
## Five-minute start
|
|
96
93
|
|
|
@@ -114,14 +111,11 @@ RD_API_KEY=...
|
|
|
114
111
|
Validate locally, inspect exact work/cost, then generate with a hard ceiling:
|
|
115
112
|
|
|
116
113
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
npx pixelkiln doctor --dry-run
|
|
115
|
+
npx pixelkiln plan
|
|
116
|
+
npx pixelkiln gen --budget 120
|
|
120
117
|
```
|
|
121
118
|
|
|
122
|
-
Once installed from npm, those commands become `pixelkiln doctor`,
|
|
123
|
-
`pixelkiln plan`, and `pixelkiln gen`.
|
|
124
|
-
|
|
125
119
|
`gen` submits, polls, opens the candidate-review sheet when necessary,
|
|
126
120
|
downloads validated output, populates the recovery cache, and updates
|
|
127
121
|
`pixelkiln.lock.json`. Commit the manifest, lockfile, generated art, and any
|
|
@@ -342,7 +336,7 @@ writes, and offline provenance verification. See [Library API](./docs/LIBRARY.md
|
|
|
342
336
|
| [Manifest reference](./docs/MANIFEST.md) | Every style/asset field and generator constraint. |
|
|
343
337
|
| [Agent workflows](./docs/AGENTS.md) | Official skill install, operating model, and provider-aware safety. |
|
|
344
338
|
| [Generators](./docs/GENERATORS.md) | Capability choice, measured costs, palettes, style references, and tiles. |
|
|
345
|
-
| [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) |
|
|
339
|
+
| [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) | Twenty matched outputs comparing buildings, landmarks, large backgrounds, cost, and file readiness. |
|
|
346
340
|
| [Derived artifacts](./docs/ARTIFACTS.md) | Pack, mount, export, provenance, ownership, transactions, and recovery. |
|
|
347
341
|
| [Recovery](./docs/RECOVERY.md) | Restore, caches, adopt, salvage, claims, and purge safety. |
|
|
348
342
|
| [Quality gates](./docs/QUALITY.md) | Plan, doctor, audit, cache, JSON, and CI. |
|
package/docs/AGENTS.md
CHANGED
|
@@ -59,6 +59,13 @@ new project or a large environment asset. Once chosen, follow
|
|
|
59
59
|
[Set up PixelLab](./PIXELLAB.md) or
|
|
60
60
|
[Set up Retro Diffusion](./RETRO_DIFFUSION.md).
|
|
61
61
|
|
|
62
|
+
The installed skill keeps the shared safety workflow in `SKILL.md` and loads a
|
|
63
|
+
focused reference only when needed: PixelLab, Retro Diffusion, or a project that
|
|
64
|
+
uses both. Mixed-provider repositories should use separate manifests and
|
|
65
|
+
lockfiles so each plan and budget keeps its provider-specific unit. The
|
|
66
|
+
[provider comparison](../PROVIDERS.md#use-both-providers-in-one-project) has a
|
|
67
|
+
complete layout and command example.
|
|
68
|
+
|
|
62
69
|
## Recommended first prompt
|
|
63
70
|
|
|
64
71
|
```text
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -11,18 +11,16 @@ checks need provider access.
|
|
|
11
11
|
- Node.js 20 or newer
|
|
12
12
|
- A credential for the manifest's selected provider: `PIXELLAB_API_KEY` for
|
|
13
13
|
PixelLab or `RD_API_KEY` for experimental Retro Diffusion support
|
|
14
|
-
- A repository checkout until the first npm release in
|
|
15
|
-
[issue #1](https://github.com/gfargo/pixelkiln/issues/1) is complete
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
Install the published package in the project that owns the art:
|
|
18
16
|
|
|
19
17
|
```bash
|
|
20
|
-
npm
|
|
21
|
-
|
|
18
|
+
npm install --save-dev pixelkiln
|
|
19
|
+
npx pixelkiln --help
|
|
22
20
|
```
|
|
23
21
|
|
|
24
|
-
The rest of this guide uses `pixelkiln` for readability.
|
|
25
|
-
|
|
22
|
+
The rest of this guide uses `pixelkiln` for readability. With a project-local
|
|
23
|
+
installation, prefix commands with `npx` or call them from an npm script.
|
|
26
24
|
|
|
27
25
|
## Using an agent
|
|
28
26
|
|
|
@@ -71,6 +69,9 @@ provider options and current limits, or
|
|
|
71
69
|
[PixelLab vs. Retro Diffusion](../PROVIDERS.md) for selection guidance.
|
|
72
70
|
The provider setup guides give the shortest complete path for
|
|
73
71
|
[PixelLab](PIXELLAB.md) and [Retro Diffusion](RETRO_DIFFUSION.md).
|
|
72
|
+
If one repository needs both, use separate provider-specific manifests and
|
|
73
|
+
lockfiles. See
|
|
74
|
+
[Use both providers in one project](../PROVIDERS.md#use-both-providers-in-one-project).
|
|
74
75
|
|
|
75
76
|
Before spending anything, validate and price the selected work:
|
|
76
77
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Environment provider benchmark
|
|
2
2
|
|
|
3
|
-
This benchmark compares PixelLab and Retro Diffusion on
|
|
4
|
-
briefs
|
|
5
|
-
|
|
3
|
+
This benchmark compares PixelLab and Retro Diffusion on five game-art briefs.
|
|
4
|
+
Three briefs use 256×256 output; two use 384×384 to test larger buildings and
|
|
5
|
+
environment backgrounds. Each brief has two attempts. The test uses the same
|
|
6
|
+
prompt text and seed numbers for both providers, but seeds are not portable
|
|
7
|
+
between models.
|
|
6
8
|
|
|
7
9
|
The benchmark tests the adapters that PixelKiln ships. It does not rank every
|
|
8
10
|
model or endpoint sold by either provider.
|
|
@@ -14,10 +16,12 @@ model or endpoint sold by either provider.
|
|
|
14
16
|
| Mountain observatory | `map`, high top-down view | `rd_plus__isometric_asset` | Isolated building on a snowy ridge |
|
|
15
17
|
| River gate | `map`, low top-down view | `rd_plus__topdown_asset` | Isolated landmark spanning water |
|
|
16
18
|
| Alpine valley | `pixflux`, background kept | `rd_plus__environment` | Full scenic background |
|
|
19
|
+
| Cliffside fortress | `map`, high top-down view | `rd_plus__isometric_asset` | Large isolated building complex |
|
|
20
|
+
| Volcanic pass | `pixflux`, background kept | `rd_plus__environment` | Full scenic background with reusable depth planes |
|
|
17
21
|
|
|
18
|
-
Both manifests
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
Both manifests use seeds `31415` and `27182`. The provider-specific route or
|
|
23
|
+
style is allowed to do its job. No image was picked, edited, cropped, or
|
|
24
|
+
post-processed.
|
|
21
25
|
|
|
22
26
|
PixelLab rejected `view: "isometric"` on the `map` endpoint with HTTP 422. The
|
|
23
27
|
successful observatory attempts use the supported `high top-down` view while
|
|
@@ -93,15 +97,67 @@ For this brief, PixelLab wins on prompt coverage, graphic clarity, consistency,
|
|
|
93
97
|
and cost. Retro Diffusion wins if the desired result is a closer, more cinematic
|
|
94
98
|
scene.
|
|
95
99
|
|
|
100
|
+
## Cliffside fortress at 384×384
|
|
101
|
+
|
|
102
|
+
Prompt: `a large fortified monastery built into a sheer mountain cliff,
|
|
103
|
+
isometric three-quarter view, central stone keep, two side towers, terraced
|
|
104
|
+
stairs, copper roofs, isolated with no scenery`
|
|
105
|
+
|
|
106
|
+
| PixelLab A | PixelLab B | Retro Diffusion A | Retro Diffusion B |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
|  |  |  |  |
|
|
109
|
+
|
|
110
|
+
The larger canvas helped both providers. PixelLab used most of the frame and
|
|
111
|
+
kept the cliff, stairs, central keep, and tower structure legible. Attempt B is
|
|
112
|
+
the clearest match for a fortified monastery. Both outputs still include an
|
|
113
|
+
opaque gray field, and their 246 and 249 colors would need deliberate cleanup
|
|
114
|
+
for a tightly controlled palette.
|
|
115
|
+
|
|
116
|
+
Retro Diffusion improved markedly over its 256×256 observatory attempts. Both
|
|
117
|
+
results read as substantial cliffside compounds, and attempt B makes good use
|
|
118
|
+
of the full canvas. They are ready-to-place transparent cutouts with 75% and
|
|
119
|
+
52% transparent pixels and only 55 and 49 colors. PixelLab is more reliable on
|
|
120
|
+
the exact architectural brief. Retro Diffusion is closer to a finished modular
|
|
121
|
+
map asset.
|
|
122
|
+
|
|
123
|
+
## Volcanic pass at 384×384
|
|
124
|
+
|
|
125
|
+
Prompt: `a wide volcanic mountain pass at dawn, layered black peaks, glowing
|
|
126
|
+
lava river, basalt fortress in the middle distance, smoke plumes, full-bleed
|
|
127
|
+
parallax background with open sky`
|
|
128
|
+
|
|
129
|
+
| PixelLab A | PixelLab B | Retro Diffusion A | Retro Diffusion B |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
|  |  |  |  |
|
|
132
|
+
|
|
133
|
+
PixelLab produced broader compositions with open sky and visibly separated
|
|
134
|
+
mountain planes. Attempt A includes the smoke plume and a clear volcano; attempt
|
|
135
|
+
B simplifies the scene into a graphic basin. Neither attempt includes a
|
|
136
|
+
recognizable fortress. Attempt A also contains a generated signature-like mark
|
|
137
|
+
in the lower-right corner, so it is not usable without cleanup. The files use
|
|
138
|
+
44 and 26 colors.
|
|
139
|
+
|
|
140
|
+
Retro Diffusion made the pass and lava river unmistakable in both attempts. Its
|
|
141
|
+
narrow canyon framing is strong for a scene the player enters, but it leaves
|
|
142
|
+
less open sky and fewer obvious planes for a distant backdrop. It also dropped
|
|
143
|
+
the fortress and most of the smoke detail. The files use 26 and 25 colors.
|
|
144
|
+
|
|
145
|
+
None of these four files is a finished parallax package. They are flattened,
|
|
146
|
+
opaque scenes. PixelLab gives an artist clearer depth bands to cut apart; Retro
|
|
147
|
+
Diffusion gives the stronger single-frame canyon. A production workflow should
|
|
148
|
+
generate or extract the sky, distant peaks, middle ground, and foreground as
|
|
149
|
+
separate assets.
|
|
150
|
+
|
|
96
151
|
## Cost and operational results
|
|
97
152
|
|
|
98
153
|
| Provider | Successful images | Charged amount | Final balance |
|
|
99
154
|
|---|---:|---:|---:|
|
|
100
|
-
| PixelLab |
|
|
101
|
-
| Retro Diffusion |
|
|
155
|
+
| PixelLab | 10 | 10 generations | 4,411 generations |
|
|
156
|
+
| Retro Diffusion | 10 | $0.744 | $9.73 |
|
|
102
157
|
|
|
103
158
|
PixelLab charged one generation per image. Retro Diffusion quoted and charged
|
|
104
|
-
$0.058
|
|
159
|
+
$0.058 for each 256px RD Plus image and $0.099 for each 384px RD Plus image;
|
|
160
|
+
PixelKiln's hard ceiling rounds the latter to $0.10 per image.
|
|
105
161
|
|
|
106
162
|
The run also caught two integration details:
|
|
107
163
|
|
|
@@ -111,15 +167,16 @@ The run also caught two integration details:
|
|
|
111
167
|
$0.057768 to $0.058. PixelKiln now rounds offline estimates up to the live
|
|
112
168
|
quote precision, so planning remains a safe ceiling.
|
|
113
169
|
|
|
114
|
-
Both manifests now pass `doctor`, report a current plan, and have
|
|
170
|
+
Both manifests now pass `doctor`, report a current plan, and have ten healthy
|
|
115
171
|
PNG cache entries.
|
|
116
172
|
|
|
117
173
|
## Recommendation
|
|
118
174
|
|
|
119
175
|
For large isolated buildings or landmarks, start with PixelLab when prompt
|
|
120
176
|
coverage matters most. Budget for background cleanup. Start with Retro
|
|
121
|
-
Diffusion when a transparent,
|
|
122
|
-
|
|
177
|
+
Diffusion when a transparent, low-color asset matters more than capturing every
|
|
178
|
+
noun in a complex prompt. At 384×384, Retro Diffusion can fill the frame with a
|
|
179
|
+
substantial structure rather than the compact cutouts seen in the first brief.
|
|
123
180
|
|
|
124
181
|
For full scenic backgrounds, start with PixelLab Pixflux. These two attempts
|
|
125
182
|
were cheaper and more faithful to the brief. Try Retro Diffusion when you want
|
|
@@ -130,5 +187,7 @@ background, buildings, landmarks, and foreground pieces separately. Compose
|
|
|
130
187
|
them in the engine, then use integer nearest-neighbor scaling for display.
|
|
131
188
|
|
|
132
189
|
This sample is useful, not definitive. Two attempts expose obvious tendencies,
|
|
133
|
-
but they do not measure every style, prompt family, or model update.
|
|
134
|
-
|
|
190
|
+
but they do not measure every style, prompt family, or model update. The new
|
|
191
|
+
volcanic brief also shows why prompt coverage needs review at the object level:
|
|
192
|
+
all four images lost the requested fortress. Rerun the committed manifests when
|
|
193
|
+
either provider changes its models.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pixelkiln",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"typecheck": "tsc --noEmit",
|
|
30
30
|
"test": "vitest run",
|
|
31
31
|
"test:docs": "node scripts/check-docs.mjs",
|
|
32
|
+
"test:release": "node scripts/check-release.mjs",
|
|
32
33
|
"test:package": "node scripts/smoke-package.mjs",
|
|
33
34
|
"test:watch": "vitest",
|
|
34
35
|
"schema": "tsx scripts/gen-schema.ts",
|
|
@@ -12,9 +12,7 @@ submission, reviewed by a human, and recorded with exact provenance.
|
|
|
12
12
|
|
|
13
13
|
- Locate `pixelkiln.manifest.json` first. Paths are manifest-relative.
|
|
14
14
|
- Never inspect, print, or commit provider credentials. Read the manifest's
|
|
15
|
-
top-level `provider
|
|
16
|
-
`RD_API_KEY` for experimental `retrodiffusion` from `.env.local` beside the
|
|
17
|
-
manifest or from the current working directory.
|
|
15
|
+
top-level `provider`, then load the matching provider reference below.
|
|
18
16
|
- Run `pixelkiln doctor --dry-run` and `pixelkiln plan` before paid work. Report
|
|
19
17
|
actionable, recoverable, and estimated cost figures with their provider unit.
|
|
20
18
|
- Do not regenerate recoverable work. Use `pixelkiln restore` first.
|
|
@@ -43,11 +41,18 @@ debugging one phase. Use `restore` for missing bytes, `adopt` for exact matches
|
|
|
43
41
|
already in the provider account, and `salvage` for reviewed unclaimed objects.
|
|
44
42
|
Use `pack`, `mount`, or `export` only for the artifact format the project needs.
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
## Provider routing
|
|
45
|
+
|
|
46
|
+
Read only the reference needed for the current decision:
|
|
47
|
+
|
|
48
|
+
- For PixelLab configuration, generators, costs, alpha behavior, or account
|
|
49
|
+
operations, read [references/pixellab.md](references/pixellab.md).
|
|
50
|
+
- For Retro Diffusion styles, USD budgets, environment assets, animation, or
|
|
51
|
+
experimental limits, read
|
|
52
|
+
[references/retro-diffusion.md](references/retro-diffusion.md).
|
|
53
|
+
- When one game or repository needs both providers, read
|
|
54
|
+
[references/mixed-providers.md](references/mixed-providers.md).
|
|
55
|
+
|
|
51
56
|
`FakeProvider` is the deterministic test adapter. Do not describe Retro
|
|
52
57
|
Diffusion as production-ready until representative multi-candidate, tileset,
|
|
53
58
|
GIF, and spritesheet live smoke tests pass.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Mixed-provider projects
|
|
2
|
+
|
|
3
|
+
Read this reference when one game or repository needs assets from both PixelLab
|
|
4
|
+
and Retro Diffusion.
|
|
5
|
+
|
|
6
|
+
One manifest selects one top-level `provider`. Do not add undocumented
|
|
7
|
+
per-style provider fields: the current CLI constructs one account adapter for a
|
|
8
|
+
manifest run, and a single `--budget` has one provider-specific unit.
|
|
9
|
+
|
|
10
|
+
Use one manifest and lockfile per provider inside the same project:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
art/
|
|
14
|
+
pixelkiln.pixellab.manifest.json
|
|
15
|
+
pixelkiln.pixellab.lock.json
|
|
16
|
+
pixelkiln.retrodiffusion.manifest.json
|
|
17
|
+
pixelkiln.retrodiffusion.lock.json
|
|
18
|
+
pixelkiln.workspace.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Keep their output directories distinct. Plan and authorize them separately:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pixelkiln plan --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelkiln.pixellab.lock.json
|
|
25
|
+
pixelkiln gen --manifest art/pixelkiln.pixellab.manifest.json --lock art/pixelkiln.pixellab.lock.json --budget <generations>
|
|
26
|
+
|
|
27
|
+
pixelkiln plan --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json
|
|
28
|
+
pixelkiln gen --manifest art/pixelkiln.retrodiffusion.manifest.json --lock art/pixelkiln.retrodiffusion.lock.json --budget <usd>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Register both manifests in the workspace catalog so aggregate status and claim
|
|
32
|
+
checks see the whole project. A mixed-provider warning is expected because it
|
|
33
|
+
prevents account-wide commands from silently assuming one backend.
|
|
34
|
+
|
|
35
|
+
Package each manifest's reviewed outputs independently, or use `pixelkiln pack
|
|
36
|
+
--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.
|
|
39
|
+
|
|
40
|
+
A practical split is PixelLab for prompt-sensitive buildings and mature account
|
|
41
|
+
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.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# PixelLab
|
|
2
|
+
|
|
3
|
+
Read this reference when a manifest selects `pixellab`, when choosing between
|
|
4
|
+
providers, or before any PixelLab account operation.
|
|
5
|
+
|
|
6
|
+
## Operational boundary
|
|
7
|
+
|
|
8
|
+
- Credential: `PIXELLAB_API_KEY` in `.env.local` beside the manifest or in the
|
|
9
|
+
process environment. Never print or commit it.
|
|
10
|
+
- Status: production adapter. Generation and account workflows have live
|
|
11
|
+
coverage.
|
|
12
|
+
- Cost unit: subscription generations. Copy the exact `pixelkiln plan` total
|
|
13
|
+
into `--budget`; do not translate it into dollars.
|
|
14
|
+
- Account operations: balance, adopt, salvage, tag, and separately confirmed
|
|
15
|
+
purge are supported. Read `docs/RECOVERY.md` before using them.
|
|
16
|
+
|
|
17
|
+
## Generator choice
|
|
18
|
+
|
|
19
|
+
| Generator | Use it for | Measured cost |
|
|
20
|
+
|---|---|---:|
|
|
21
|
+
| `map` | One prop, icon, building, or landmark, up to 400×400 | 1 generation |
|
|
22
|
+
| `pixflux` | Closed palettes or full-bleed backgrounds | 1 generation |
|
|
23
|
+
| `1dir` | Reference-guided work or several candidates | 20–40 generations |
|
|
24
|
+
| `tiles` | Ground variations or connected structures | 20–40 generations |
|
|
25
|
+
|
|
26
|
+
In the committed environment benchmark, PixelLab followed complex building
|
|
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.
|
|
32
|
+
|
|
33
|
+
For setup and current field constraints, use
|
|
34
|
+
<https://pixelkiln.griffen.codes/docs/pixellab>. When working in the PixelKiln
|
|
35
|
+
repository, `docs/PIXELLAB.md` and `docs/ENDPOINTS.md` are the canonical local
|
|
36
|
+
sources. The provider sources are <https://www.pixellab.ai/> and
|
|
37
|
+
<https://api.pixellab.ai/v2/docs>.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Retro Diffusion
|
|
2
|
+
|
|
3
|
+
Read this reference when a manifest selects `retrodiffusion`, when evaluating
|
|
4
|
+
large scene work, or when using native animation and tileset output.
|
|
5
|
+
|
|
6
|
+
## Operational boundary
|
|
7
|
+
|
|
8
|
+
- Credential: `RD_API_KEY` in `.env.local` beside the manifest or in the
|
|
9
|
+
process environment. Never print or commit it.
|
|
10
|
+
- Status: experimental adapter. RD Fast and RD Plus single-candidate stills are
|
|
11
|
+
live-tested through quote, submit, download, provenance, and recovery.
|
|
12
|
+
Multi-candidate, tileset, GIF, and spritesheet paths remain mock-tested.
|
|
13
|
+
- Cost unit: USD. PixelKiln enforces the offline plan, then checks Retro
|
|
14
|
+
Diffusion's free authoritative quote before submission.
|
|
15
|
+
- Account operations: balance is supported. Listing, adopt, salvage, tagging,
|
|
16
|
+
and deletion are not exposed by the current adapter.
|
|
17
|
+
|
|
18
|
+
## Where it earns a place
|
|
19
|
+
|
|
20
|
+
- `rd_plus__environment` for one-point-perspective scenic backgrounds.
|
|
21
|
+
- `rd_plus__topdown_map` for 3/4 top-down maps.
|
|
22
|
+
- `rd_tile__scene_object` for 64–384px objects placed on tile maps.
|
|
23
|
+
- `rd_plus__topdown_asset` or `rd_plus__isometric_asset` for isolated assets.
|
|
24
|
+
- `rd_animation__*` and `rd_advanced_animation__*` for GIF or PNG spritesheet
|
|
25
|
+
output.
|
|
26
|
+
|
|
27
|
+
The useful environment styles currently top out at 384×384. PixelLab's `map`
|
|
28
|
+
route reaches 400×400, so Retro Diffusion is not the higher-resolution option
|
|
29
|
+
through PixelKiln today. Choose it for its scene styles, cleaner transparent
|
|
30
|
+
cutouts, smaller palettes, cinematic framing, or native animation. Build truly
|
|
31
|
+
large scenes from separately generated terrain, backdrop, landmark, building,
|
|
32
|
+
and foreground layers, then integer-upscale with nearest-neighbor filtering.
|
|
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
|
+
|
|
41
|
+
For setup, selectors, and option constraints, use
|
|
42
|
+
<https://pixelkiln.griffen.codes/docs/retro-diffusion>. The matched visual
|
|
43
|
+
evidence is at <https://pixelkiln.griffen.codes/docs/provider-benchmark>. When
|
|
44
|
+
working in the PixelKiln repository, the same canonical sources are
|
|
45
|
+
`docs/RETRO_DIFFUSION.md` and `docs/PROVIDER_BENCHMARK.md`. The provider sources
|
|
46
|
+
are <https://www.retrodiffusion.ai/> and
|
|
47
|
+
<https://www.retrodiffusion.ai/app/guide/api>.
|