dagger/dagger · error
no support for running processes with %s platform, supported
Error message
no support for running processes with %s platform, supported: %s
What it means
Dagger's container emulator setup (QEMU-based binfmt emulation for running foreign-arch processes) only supports a fixed set of platforms. getEmulator checks the host's binfmt registrations for amd64-capable emulators; when the requested platform has no registered amd64 handler it errors 'no support for running processes with <platform>, supported: <list>'.
Source
Thrown at core/container_emulator.go:115
func getEmulator(ctx context.Context, pp ocispecs.Platform) (*emulator, error) {
all := archutil.SupportedPlatforms(false)
pp = platforms.Normalize(pp)
for _, p := range all {
if platforms.Only(p).Match(pp) {
return nil, nil
}
}
if pp.Architecture == "amd64" {
if pp.Variant != "" && pp.Variant != "v2" {
var supported []string
for _, p := range all {
if p.Architecture == "amd64" {
supported = append(supported, platforms.Format(p))
}
}
return nil, errors.Errorf("no support for running processes with %s platform, supported: %s", platforms.Format(pp), strings.Join(supported, ", "))
}
}
a, ok := qemuArchMap[pp.Architecture]
if !ok {
a = pp.Architecture
}
fn, err := exec.LookPath("buildkit-qemu-" + a)
if err != nil {
bklog.G(ctx).Warn(err.Error()) // TODO: remove this with pull support
return nil, nil // no emulator available
}
return &emulator{path: fn}, nil
}
View on GitHub (pinned to 82ba2681db)
Solutions
- Register QEMU binfmt handlers: docker run --privileged tonistiigi/binfmt --install all (or the specific arch)
- In CI, add the setup-qemu step (actions/setup-qemu-action or equivalent) before running Dagger
- Run on a native host matching the target platform instead of relying on emulation
- Update Dagger/the engine image so the supported-platform list includes your target
Example fix
// before: fresh CI runner, no binfmt dagger call --platform linux/arm64 run-cmd # no support error // after $ docker run --privileged tonistiigi/binfmt --install all dagger call --platform linux/arm64 run-cmd
Defensive patterns
Strategy: validation
Validate before calling
// verify amd64 binfmt handlers exist before requesting foreign-arch execution
handlers, err := os.ReadFile("/proc/sys/fs/binfmt_misc/status")
if err == nil && string(handlers) == "enabled" {
entries, _ := filepath.Glob("/proc/sys/fs/binfmt_misc/qemu-*")
if len(entries) == 0 {
return errors.New("no qemu binfmt handlers registered; run tonistiigi/binfmt --install all")
}
} Type guard
func binfmtReady() bool {
entries, _ := filepath.Glob("/proc/sys/fs/binfmt_misc/qemu-*")
return len(entries) > 0
} Try / catch
ctr, err := client.Container().From(ref, dagger.ContainerFromOpts{Platform: "linux/arm64"})
if err != nil && strings.Contains(err.Error(), "no support for running processes with") {
return fmt.Errorf("emulation unavailable: install QEMU binfmt (docker run --privileged tonistiigi/binfmt --install all): %w", err)
} Prevention
- Install QEMU handlers on every host that runs foreign-arch containers (tonistiigi/binfmt)
- In GitHub Actions, add docker/setup-qemu-action before Dagger steps
- Prefer native-arch runners for heavy workloads; emulate only when needed
- Keep the Dagger engine image current so its supported-platform list is up to date
When it happens
Trigger: Executing a container for a non-amd64 platform (e.g. linux/arm64) on a host where binfmt_misc has no amd64 entries registered (qemu-x86_64 handler missing); Docker Desktop/VM without QEMU binfmt enabled.
Common situations: CI runners without docker/setup-qemu-action; fresh Linux hosts with no binfmt_misc entries; requesting arm64 execution on an amd64-only host without emulation installed.
Related errors
- no manifest for platform %s and tag %s
- cannot convert %T to Platform
- platform JSON decoded to unexpected type %T
- requested platform manifest %s is not present locally
- no manifest for platform %s in host store
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/47d74fb7938a3268.
Report an issue: GitHub.