nexu-io/open-design · error · Error

Vela model ${wireModel} is not in the published image catalo

Error message

Vela model ${wireModel} is not in the published image catalogue, so quality ${requestedQuality} cannot be requested

What it means

Thrown near the top of renderVelaImage when a quality tier was requested and the catalogue fetch was performed but the model was not found in the published image catalogue (published is null). This differs from error 490 (model found, no quality capability) and error 491 (tier not in list): here the model itself is absent from the `vela media models` output, so its capabilities are entirely unknown.

Source

Thrown at apps/daemon/src/media/vela.ts:356

  const edits = input.imageRefs.length > 0;
  const requestedQuality = input.quality?.trim();
  // One catalogue read serves both the output profile and the quality tier.
  // Skip it entirely when the caller named neither, so an unqualified request
  // still costs exactly one CLI spawn.
  const published = input.aspect?.trim() || requestedQuality
    ? await fetchPublishedImageCapabilities(input, edits, wireModel, runCommand)
    : null;
  const profile = selectImageOutputProfile(
    published,
    input.aspect?.trim() || undefined,
    input.resolution?.trim() || undefined,
    wireModel,
  );
  const quality = requestedQuality && published
    ? qualityArgs(requestedQuality, published, wireModel)
    : [];
  if (requestedQuality && !published) {
    throw new Error(
      `Vela model ${wireModel} is not in the published image catalogue, so quality ${requestedQuality} cannot be requested`,
    );
  }
  const tempDir = await mkdtemp(path.join(os.tmpdir(), 'open-design-vela-image-'));
  const outputPath = path.join(tempDir, 'result.bin');
  try {
    const stagedImageRefs = await stageInputImages(input.imageRefs, tempDir);
    const command = edits ? 'edit' : 'gen';
    const args = [
      'image',
      command,
      '--model',
      wireModel,
      '--prompt',
      input.prompt,
      ...stagedImageRefs.flatMap((image) => ['--image', image.abs]),
      ...(profile
        ? ['--aspect-ratio', profile.aspectRatio, '--resolution', profile.resolution]

View on GitHub (pinned to 5be4028344)

Solutions

  1. Omit input.quality if the model legitimately lacks catalogue metadata
  2. Verify the model id appears in `vela media models --json` with kind 'image'
  3. Correct the model/wireModel alias so it matches a catalogue entry
  4. If the model should be in the catalogue, provision or report it to Vela

Example fix

// before
await renderVelaImage({ ...input, model: 'vela/unknown-model', quality: 'high' });
// after
await renderVelaImage({ ...input, model: 'vela/known-model', quality: 'high' });
Defensive patterns

Strategy: validation

Validate before calling

function modelInCatalogue(published: VelaPublishedImageCapabilities | null): boolean {
  return published != null;
}

if (requestedQuality && !modelInCatalogue(published)) {
  // drop quality, or correct the model id
}

Try / catch

try {
  const result = await renderVelaImage(input);
} catch (err) {
  if (err instanceof Error && /not in the published image catalogue/.test(err.message)) {
    // verify model id via `vela media models --json`, then drop quality or fix the id
  } else throw err;
}

Prevention

When it happens

Trigger: input.quality is set, which triggers fetchPublishedImageCapabilities; the returned published is null because parsePublishedProfiles found no matching model entry (model + kind=image) in the catalogue. The qualityArgs guard is skipped, and this explicit guard fires.

Common situations: Model id is wrong or not yet provisioned in the catalogue; model was removed; the wireModel aliasing produced an id the catalogue does not contain; catalogue fetch was for edits but model only publishes generations.

Related errors


AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12). Data as JSON: /api/errors/927ed1a6b8a281e6. Report an issue: GitHub.