Oxcart Download
Menu

Switch from Docker Desktop or OrbStack to Oxcart

Switching to Oxcart takes a few minutes: install it, run docker context use oxcart, and bring over the images and volumes you want to keep with docker save, docker load and a tar file. Oxcart installs next to Docker Desktop or OrbStack, asks before replacing their docker tools, and one command switches back.

Updated

Before you start

  • A Mac with Apple silicon and macOS 26 or later.
  • The other app running, so its context answers while you copy images and volumes.
  • A list of what you actually need: images you can't pull again, and named volumes with data (databases, uploads). Everything else is quicker to recreate.
  • One representative Compose project to try first. Check that its services start, its data is present and its published ports answer before moving the rest.

Move to Oxcart, step by step

  1. Install Oxcart. Download Oxcart (Apple silicon, macOS 26 or later) and open it. Setup is offline and takes seconds; it asks for one administrator password, for the helper that links the command-line tools.
  2. Decide about the docker tools. If Docker Desktop or OrbStack installed docker, Oxcart lists each tool with both versions and asks before replacing it. Replace is on by default; Uninstall puts the other app's tools back.
  3. Select the oxcart context. Setup creates an oxcart Docker context. It makes it current only if the current context is default with nothing answering, so after another app you usually run docker context use oxcart yourself.
  4. Bring the images you need. Pull them again, or stream them from the other app with docker save into docker load, which keeps tags and digests.
  5. Move the volumes that hold data. Pack each named volume into a tar file through a small container in the other app, then unpack it into a new volume in Oxcart.
  6. Start your Compose projects. Run docker compose up -d --wait in each project folder. Volumes you moved under the same name are picked up.
  7. Point hard-wired tools at Oxcart. Tools that follow the Docker context find Oxcart on their own. A tool that only reads DOCKER_HOST needs it set to the oxcart context's endpoint.

The commands

Find the contexts and switch

docker context ls

The list shows the oxcart context and the other app's context, with an asterisk on the current one. Then:

docker context use oxcart

Copy images from the other app

Stream images straight from one engine to the other without a file in between. Tags and digests come across.

# OTHER is the other app's context name from `docker context ls`
OTHER=<other-context>
docker --context "$OTHER" save postgres:17-alpine myapp:dev | docker --context oxcart load

To bring every tagged image at once:

docker --context "$OTHER" images --format '{{.Repository}}:{{.Tag}}' | grep -v '<none>' \
  | xargs docker --context "$OTHER" save | docker --context oxcart load

Images you built from a Dockerfile are often faster to rebuild on Oxcart with docker build or docker compose build; cached rebuilds took 121 ms in our benchmark.

Move a named volume

This example moves a Postgres volume called pgdata. It writes a tar file into a folder in your home folder: Oxcart shares your home folder with containers by default, and the other app needs to be able to bind-mount it too. Stop the containers that use the volume first, so the copy is consistent.

mkdir -p ~/volume-move && cd ~/volume-move
# 1. Pack the volume in the other app
docker --context "$OTHER" run --rm -v pgdata:/from -v "$PWD":/backup alpine \
  tar -C /from -czf /backup/pgdata.tgz .
# 2. Unpack it into a new volume in Oxcart
docker --context oxcart volume create pgdata
docker --context oxcart run --rm -v pgdata:/to -v "$PWD":/backup alpine \
  tar -C /to -xzf /backup/pgdata.tgz

Compose names volumes <project>_<volume>. Create the Oxcart volume under the same full name (see docker volume ls in the other context) and Compose will use it.

Start your Compose projects

cd ~/code/myproject
docker compose up -d --wait

Healthcheck dependencies, up --wait, service-name DNS, init: true and network_mode: service: work as they did. See Docker Compose on Apple silicon.

Tools that read DOCKER_HOST

Oxcart never creates or replaces /var/run/docker.sock; the docker CLI, Compose, Buildx and most SDKs follow the current context. If a tool only reads DOCKER_HOST, point it at Oxcart:

export DOCKER_HOST="$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')"

Inside containers, mounting /var/run/docker.sock works as usual for Testcontainers, docker-outside-of-docker, Portainer and Traefik. See Dev Containers and Testcontainers on a Mac.

Switch back

docker context use <other-context>   # back to the other app
docker context use oxcart            # and to Oxcart again

What changes for you after the switch

Measured on one Apple silicon Mac; medians, lower is better
OperationOxcart 0.1.2OrbStack 2.2.3Docker Desktop 4.94.0
docker run --rm … true42.3 ms220 ms143 ms
docker stop19.2 ms107 ms128 ms
Stop and remove 20 containers76.7 ms1,224 ms683 ms
Build, cached121 ms283 ms149 ms

Oxcart 0.1.2 measured 2026-10-10 with its bundled docker 29.9 client; OrbStack 2.2.3 and Docker Desktop 4.94.0 measured earlier the same day, on the same Mac and harness, with docker 29.4. Full tables: vs Docker Desktop and vs OrbStack.

You also get a local MCP server for coding agents (set it up in one paste), ports grouped by repository and branch, and container traffic that follows your VPN, DNS and firewall rules (networking guide).

Questions

Do I have to uninstall Docker Desktop or OrbStack first?

No. Oxcart installs next to them with its own oxcart Docker context. Switch with docker context use. Keep the other app installed until you have moved what you need.

Will Oxcart change my current Docker context?

Only if the current context is default and nothing answers on it. If another app's context is current, Oxcart leaves it alone and you choose with docker context use oxcart.

Do my images and volumes come across automatically?

No. Each app keeps its own images and volumes. Pull images again or stream them with docker save | docker load; move named volumes that hold data with a tar file, as shown above. Volumes with caches or other throwaway data can simply be recreated.

What happens to my registry logins?

If a pull asks for credentials, run docker login once. Oxcart stores the password in the macOS Keychain through docker-credential-osxkeychain; config.json keeps only the registry name.

Can I keep my existing development workflow?

Yes. Keep using the docker CLI, Compose, Buildx, Dev Containers and Testcontainers. Oxcart supports privileged containers, including privileged: true in Compose. Move one project first, check its ports and data, then switch the rest when you are ready. Your other Docker context remains available throughout.

Do updates keep my containers?

Yes. An Oxcart update keeps every container, image, volume and network.

How do I go back?

Run docker context use with the other app's context name. If you uninstall Oxcart, Uninstall puts back any docker tools it replaced.

Sources and method

  • Setup, the command-line tools and the Docker context: Oxcart 0.1.3 as shipped.
  • Compatibility: tested on Oxcart, 2026-10-10 (save and load with preserved tags and digests, Compose, the Docker socket in containers).
  • Benchmarks: Oxcart 0.1.2, OrbStack 2.2.3 and Docker Desktop 4.94.0, measured 2026-10-10 on one Apple M5 Max, 8 CPUs and 12 GB each, one product at a time, medians of five samples.
  • The other apps' context names differ by app and version: read them from docker context ls.

Try Oxcart on your own projects

Free for 60 days. Then $20 per user, per major version: not a subscription.

Apple silicon · macOS 26 or later

Read next

Release notes

Oxcart 0.1.4

Latest release

Licensing and refinements.

  • Secure email-link license activation.
  • License and Mac management from Settings.
  • Offline license verification.
  • Performance improvements, UI polish, and bug fixes.

Requires macOS 26.0 or later

Oxcart 0.1.3

Idle memory reclamation.

  • Reclaims VM memory when no containers are running.
  • Preserves containers, images, volumes, and networks.

Requires macOS 26.0 or later

Oxcart 0.1.2

Command-line tool integration.

  • Switch between Oxcart's bundled Docker tools and an existing installation.
  • UI polish.

Requires macOS 26.0 or later

Oxcart 0.1.1

Bundled Docker tools and agent controls.

  • Docker CLI 29.9, Compose 5.6, and Buildx 0.38 included.
  • Docker context integration and secure Keychain credentials.
  • MCP agent connections with per-agent permissions and blocking.

Requires macOS 26.0 or later

Oxcart 0.1.0

Docker-compatible containers for Apple silicon.

  • Docker CLI, Compose, and Buildx compatibility.
  • Offline setup with bundled runtime components.
  • Ports organized by project and Git branch.
  • MCP integration with read-only access by default.
  • Verified automatic updates.

Requires macOS 26.0 or later