The self-hosted SDK docs say you need "a Docker daemon running," which makes it sound like Docker Desktop (or a Colima/OrbStack-style daemon) is the only option. But fern generate --local actually works fine on Apple's container runtime (macOS 26+, Apple Silicon) with no Docker Desktop at all.
It works because Fern shells out to the docker CLI and respects DOCKER_HOST (packages/cli/generation/local-generation/docker-utils/src/runDocker.ts) rather than talking to a socket directly. Apple's container doesn't expose a Docker socket of its own (apple/container#636), but socktainer puts a Docker-compatible API in front of it. Point DOCKER_HOST at socktainer and Fern is none the wiser — same trick as the OrbStack workaround in #2392.
I ran our Python SDK generation this way and it produced the exact same output as Docker Desktop, at basically the same speed. Even the historically flaky bit on alternative runtimes - the docker run --user root -v <binds> step that broke Colima/Rancher in #1998 - worked without issue.
Would be great to add a line to the self-hosted SDK page noting that any Docker-API-compatible runtime works (Docker Desktop, OrbStack, Colima, Podman, Apple container), with quick setup for the Apple container case:
brew install container socktainer
container system start
container system kernel set --recommended # one-time
brew services start socktainer
export DOCKER_HOST=unix://$HOME/.socktainer/container.sock
fern generate --group <group> --local
One optional extra, separate from the docs: --runner is currently limited to docker/podman. The DOCKER_HOST route sidesteps that, but if you'd want container as a first-class --runner value too, happy to send a PR.
The self-hosted SDK docs say you need "a Docker daemon running," which makes it sound like Docker Desktop (or a Colima/OrbStack-style daemon) is the only option. But
fern generate --localactually works fine on Apple'scontainerruntime (macOS 26+, Apple Silicon) with no Docker Desktop at all.It works because Fern shells out to the
dockerCLI and respectsDOCKER_HOST(packages/cli/generation/local-generation/docker-utils/src/runDocker.ts) rather than talking to a socket directly. Apple'scontainerdoesn't expose a Docker socket of its own (apple/container#636), but socktainer puts a Docker-compatible API in front of it. PointDOCKER_HOSTat socktainer and Fern is none the wiser — same trick as the OrbStack workaround in #2392.I ran our Python SDK generation this way and it produced the exact same output as Docker Desktop, at basically the same speed. Even the historically flaky bit on alternative runtimes - the
docker run --user root -v <binds>step that broke Colima/Rancher in #1998 - worked without issue.Would be great to add a line to the self-hosted SDK page noting that any Docker-API-compatible runtime works (Docker Desktop, OrbStack, Colima, Podman, Apple
container), with quick setup for the Applecontainercase:One optional extra, separate from the docs:
--runneris currently limited todocker/podman. TheDOCKER_HOSTroute sidesteps that, but if you'd wantcontaineras a first-class--runnervalue too, happy to send a PR.