Docker CLI Support

Stackie’s daemon (stackied) speaks the Docker Engine API v1.43 on a local socket. Any tool that talks to Docker — the CLI, Compose, Lazydocker, VS Code Dev Containers — should work with Stackie. You just tell it where the socket is.

Socket Location

The socket path differs by platform:

PlatformSocket
macOS / Linux~/.stackie/stackied.sock
Windows\\.\pipe\stackie_daemon

The socket is created when the daemon starts (stackie up or stackied directly) and removed on clean shutdown.

Setup: No Existing Docker Install

If Docker Desktop is not installed, the simplest approach is to make $DOCKER_HOST point at the stackied socket permanently. Your shell then treats it as the default Docker endpoint — no flags, no per-command overrides.

macOS / Linux

Add to your shell profile (.zshrc, .bashrc, .profile, etc.):

export DOCKER_HOST="unix://$HOME/.stackie/stackied.sock"

Reload your shell, then verify:

docker ps
docker version

Windows (PowerShell)

Add to your PowerShell profile ($PROFILE):

$env:DOCKER_HOST = "npipe:////./pipe/stackie_daemon"

Or set it permanently via System Properties → Environment Variables:

DOCKER_HOST = npipe:////./pipe/stackie_daemon

Verify in a new terminal:

docker ps
docker version

Setup: Side-by-Side with Docker Desktop

If you have Docker Desktop installed and want to keep using it alongside Stackie, don’t change $DOCKER_HOST globally. Instead, scope the override to the commands or terminal session where you want to target Stackie.

Open a terminal dedicated to your Stackie project and export DOCKER_HOST only for that session:

# macOS / Linux
export DOCKER_HOST="unix://$HOME/.stackie/stackied.sock"

# Then run any docker command normally in this terminal
docker ps
docker compose up
# Windows
$env:DOCKER_HOST = "npipe:////./pipe/stackie_daemon"
docker ps

When you close the terminal the override disappears. Your other terminals still talk to Docker Desktop.

Per-command

Pass --host directly to any Docker command:

# macOS / Linux
docker --host "unix://$HOME/.stackie/stackied.sock" ps
docker --host "unix://$HOME/.stackie/stackied.sock" compose up

# Windows
docker --host "npipe:////./pipe/stackie_daemon" ps

This is useful in scripts or Makefiles where you want an explicit, portable reference to the Stackie socket regardless of what $DOCKER_HOST is set to.

Docker CLI

The Docker CLI picks up $DOCKER_HOST automatically. Once set (or with --host), all standard commands work:

docker ps                    # list running containers (Stackie blocks appear here)
docker logs stackie.postgres # stream logs from a running block
docker exec -it stackie.postgres psql -U postgres
docker pull postgres:16      # pull triggers a block install via Stackie supercache

Docker Compose

Both docker compose (plugin) and docker-compose (standalone) respect $DOCKER_HOST and --host. With the variable set:

# Run a compose file against Stackie instead of Docker Desktop
docker compose up

# Or explicitly:
docker compose --host "unix://$HOME/.stackie/stackied.sock" up

Other Docker-Compatible Tools

Most tools that use the Docker socket read $DOCKER_HOST automatically:

ToolWorks via $DOCKER_HOSTNotes
docker composeYesWorks with supported blocks
LazydockerYesSet DOCKER_HOST before launching
VS Code Dev ContainersYesSet in settings.json or terminal profile
Podman DesktopPartialUse socket path directly in Podman config