{"record":{"id":"badc1aa3b2cdd516","repo":"dagger/dagger","slug":"no-manifest-for-platform-s-in-host-store","errorCode":null,"errorMessage":"no manifest for platform %s in host store","messagePattern":"no manifest for platform (.+?) in host store","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/schema/host.go","lineNumber":702,"sourceCode":"\nfunc resolveHostStoreManifest(\n\tctx context.Context,\n\tstore content.Store,\n\tdesc ocispec.Descriptor,\n\tplatform ocispec.Platform,\n) (*ocispec.Descriptor, error) {\n\tmatcher := platforms.Only(platforms.Normalize(platform))\n\ttarget, matched, err := resolveHostStoreManifestMatch(ctx, store, desc, matcher)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif target != nil {\n\t\treturn target, nil\n\t}\n\tif matched {\n\t\treturn nil, fmt.Errorf(\"requested platform manifest %s is not present locally\", platforms.Format(platform))\n\t}\n\treturn nil, fmt.Errorf(\"no manifest for platform %s in host store\", platforms.Format(platform))\n}\n\nfunc resolveHostStoreManifestMatch(\n\tctx context.Context,\n\tstore content.Store,\n\tdesc ocispec.Descriptor,\n\tmatcher platforms.MatchComparer,\n) (*ocispec.Descriptor, bool, error) {\n\tswitch desc.MediaType {\n\tcase ocispec.MediaTypeImageManifest, images.MediaTypeDockerSchema2Manifest:\n\t\tif _, err := store.Info(ctx, desc.Digest); err != nil {\n\t\t\tif cerrdefs.IsNotFound(err) {\n\t\t\t\treturn nil, true, nil\n\t\t\t}\n\t\t\treturn nil, false, fmt.Errorf(\"stat host manifest %s: %w\", desc.Digest, err)\n\t\t}\n\t\treturn &desc, true, nil\n","sourceCodeStart":684,"sourceCodeEnd":720,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/core/schema/host.go#L684-L720","documentation":"The host content store contains the image index but no manifest at all matching the requested platform. Unlike error 1832 (a partial/near match existed), here the index had no compatible manifest entry for the platform, so resolution of the host-store image fails outright.","triggerScenarios":"Calling Host.containerImage(name, platform: X) where the local OCI index for that image lists only manifests for platforms other than X.","commonSituations":"Multi-arch image cached locally with only the host's native architecture; requesting a different platform (e.g. windows/amd64) that the upstream image never published, or running with remote resolution disabled.","solutions":["Pull the multi-arch image for the requested platform (dag.Container().from with the platform) so the manifest lands in the host store.","Verify the image actually publishes a manifest for the requested platform (docker manifest inspect / crane manifest).","Drop the explicit platform argument to fall back to the default platform available locally."],"exampleFix":"// before\nconst img = dag.host().containerImage(\"alpine\", {platform: \"linux/riscv64\"})\n// after\nconst img = await dag.container({platform: \"linux/riscv64\"}).from(\"alpine\") // ensures the platform is fetched","handlingStrategy":"fallback","validationCode":"// verify the image publishes the platform before requesting\n// docker manifest inspect <image> | jq '.manifests[].platform'","typeGuard":null,"tryCatchPattern":"try { img = await dag.host().containerImage(name, {platform}) } catch (e) { if (String(e).includes(\"no manifest for platform\")) { img = await dag.container().from(name) } else throw e }","preventionTips":["Check upstream images actually publish manifests for the requested platforms.","Omit the platform argument when only the default platform is needed.","Enable remote resolution/pulls instead of relying solely on the host store."],"tags":["oci","platform","image","manifest"],"backgroundTag":"platform-manifest-not-found","analyzedSha":"82ba2681dbe30d3547a1dc50ea495900ab5b6047","analyzedAt":"2026-09-05T07:21:37.930Z","contentChangedAt":"2026-09-05T07:21:37.930Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}