dmr is the standalone Docker Model Runner: a single binary that bundles
both the inference daemon and the full model management CLI, with no
dependency on Docker Desktop or a running Docker Engine.
dmr serve # start the daemon (foreground)
dmr pull ai/gemma3 # pull a model
dmr run ai/gemma3 "Hi" # run it
dmr ls # list local models
dmr ps # list running models
dmr rm ai/gemma3 # remove a local model
dmr serverunspkg/serverdirectly, in-process — the same daemon used by thedocker-model-runnercontainer and by Docker Desktop's bundled runner. It listens on TCP port12434by default (or a Unix socket via--socket); seedmr serve --help.- Every other
dmrsubcommand is the same command tree as thedocker modelCLI plugin (cmd/cli/commands), so it has full feature parity (run,pull,push,tag,inspect,logs,bench,configure, ...). Seecmd/cli/README.mdfor full command documentation. dmralways talks to its daemon overMODEL_RUNNER_HOST(defaulthttp://localhost:12434), which forces the "manual host" code path incmd/cli/desktop/context.go. This is what makesdmrengine-independent: unlikedocker model, it never probes a Docker Engine connection or checks for Docker Desktop.- Docker-Engine-only commands that manage a
docker-model-runnercontainer (install-runner,start-runner,stop-runner,restart-runner,reinstall-runner,uninstall-runner) are hidden fromdmr, sincedmr servereplaces them — there's no container to manage.
make build-dmr # native build, output ./dmr (or dmr.exe on Windows)
make build-dmr-cross # cross-compile every published target into dist/dmr/<os>-<arch>/
dmr has no cgo dependencies, so it cross-compiles cleanly for macOS
(arm64), Linux (amd64/arm64), and Windows (amd64) from any host. See
../../packaging/README.md for how these
builds are released via Homebrew (brew install docker/tap/dmr) and WinGet
(winget install Docker.dmr).