nexu-io/open-design · error · Error
Vela model ${wireModel} does not publish quality ${tier}; su
Error message
Vela model ${wireModel} does not publish quality ${tier}; supported: ${published.qualityValues.join(', ')} What it means
Thrown by qualityArgs() when the model does publish a quality capability (qualityValues is non-null) but the requested tier does not case-insensitively match any published value. The error lists the supported tiers so the caller can correct the request. matchPublishedValue folds case, so '2k' matches '2K'; a mismatch means a genuinely unsupported tier name.
Source
Thrown at apps/daemon/src/media/vela.ts:247
* request for a tier the model publishes sends it verbatim; a request the
* model cannot honour fails here, before it costs anything, with the tiers it
* does publish.
*/
function qualityArgs(
requested: string | undefined,
published: VelaPublishedImageCapabilities,
wireModel: string,
): string[] {
const tier = requested?.trim();
if (!tier) return [];
if (!published.qualityValues) {
throw new Error(
`Vela model ${wireModel} does not publish a quality capability, so quality ${tier} cannot be requested`,
);
}
const publishedTier = matchPublishedValue(tier, published.qualityValues);
if (!publishedTier) {
throw new Error(
`Vela model ${wireModel} does not publish quality ${tier}; supported: ${published.qualityValues.join(', ')}`,
);
}
return ['--quality', publishedTier];
}
// Vela owns which shapes and tiers a model can actually deliver, so read the
// published capabilities per request instead of caching a copy here: a
// catalogue that gained or lost one must take effect immediately, and one
// extra CLI call is nothing beside the generation it precedes.
async function fetchPublishedImageCapabilities(
input: VelaImageRenderInput,
edits: boolean,
wireModel: string,
runCommand: VelaCommandRunner,
): Promise<VelaPublishedImageCapabilities | null> {
const stdout = await runCommand(['media', 'models', '--json'], {
...velaWorkspaceCommandOptions(input.workspaceId),View on GitHub (pinned to 5be4028344)
Solutions
- Read the supported list in the error message and use one of those exact values
- Check `vela media models --json` for the model's current quality.values
- If the tier name was correct before, the catalogue may have changed — update the caller
Example fix
// before
await renderVelaImage({ ...input, quality: 'ultra' }); // only standard/high published
// after
await renderVelaImage({ ...input, quality: 'high' }); Defensive patterns
Strategy: validation
Validate before calling
function qualityIsPublished(tier: string, published: string[] | null): boolean {
if (!published) return false;
const folded = tier.toLowerCase();
return published.some(v => v.toLowerCase() === folded);
}
if (requestedQuality && !qualityIsPublished(requestedQuality, published?.qualityValues ?? null)) {
// correct the tier or drop it
} Try / catch
try {
const args = qualityArgs(requestedQuality, published, wireModel);
} catch (err) {
if (err instanceof Error && /does not publish quality/.test(err.message)) {
// parse the supported list from the message and pick one, or drop quality
} else throw err;
} Prevention
- Read the supported quality values from the catalogue before offering them in the UI
- Treat the catalogue as the source of truth — do not hardcode tier names per model
- Provide a dropdown of published tiers so users cannot type unsupported values
When it happens
Trigger: input.quality is a string that is not in the model's published qualityValues list (e.g. requesting 'ultra' when only 'standard' and 'high' are published).
Common situations: Typo in the quality tier; tier renamed in a newer catalogue; caller copied a tier name from a different model; case-only differences are handled but spelling differences are not.
Related errors
- Vela model ${wireModel} does not publish a quality capabilit
- Vela model ${wireModel} does not publish output profiles, so
- Vela model ${wireModel} does not publish aspect ${aspect}; s
- Vela model ${wireModel} does not publish resolution ${reques
- Vela model ${wireModel} is not in the published image catalo
AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12).
Data as JSON: /api/errors/6dde4ad7a4b0bb89.
Report an issue: GitHub.