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

  1. Register QEMU binfmt handlers: docker run --privileged tonistiigi/binfmt --install all (or the specific arch)
  2. In CI, add the setup-qemu step (actions/setup-qemu-action or equivalent) before running Dagger
  3. Run on a native host matching the target platform instead of relying on emulation
  4. 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

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


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/47d74fb7938a3268. Report an issue: GitHub.