AI terminals
Spin up Claude Code or Copilot, scoped to one project.
Per-project tmux sessions with a sandbox toggle. They survive app quit and re-attach in the native app.
Built for OrbStack & Docker Desktop · macOS
MultiDocker gives each docker-compose project its own real HTTPS domain on your Mac — without ever touching your compose files. One central edge proxy, automatic TLS, zero conflicts.
Works with OrbStack & Docker Desktop · macOS-native
Juggling ports, editing compose files you don't own, address already in use, broken cookies on localhost. MultiDocker replaces all of it with project.coding9.test.
$ docker compose up Error: bind: address already in use # edit someone else’s compose file… ports: "8082:80" # which one was this? http://localhost:8083 # cookie broken # oauth callback fails on localhost
$ mdocker up shopware-shop ✓ port pre-flight ok · attached to edge # your compose file: untouched → https://shopware-shop.coding9.test ✓ real cert · cookies & redirects work ✓ oauth callbacks behave like production
Register a project, start it, open it. Everything in between is automatic.
mdocker init ./my-project
Register a project. The profile is auto-detected.
mdocker up my-project
Start it. Ports are stripped, TLS labels injected, edge routing wired up.
mdocker open my-project
Opens https://my-project.coding9.test. Real cert, no warnings.
A single Traefik v3 on ports 80/443 routes hostnames to your containers over a shared Docker network. dnsmasq answers *.test, mkcert makes it trusted, Mailcatcher grabs all outbound mail.
Architecture diagram. Architecture diagram: browser resolves *.test via dnsmasq, requests hit a single Traefik edge on 80/443, which routes over a shared Docker network to each project container; Mailcatcher and a docker-socket-proxy sit alongside the edge.
Your original compose is never touched — a separate override file uses Compose’s !reset to drop host ports.
A complete local edge stack, an editable profile engine, and a toolbox for the boring parts.
Every project gets name.test over HTTPS via mkcert — trusted, no browser warnings.
A pre-flight check strips host ports and auto-remaps anything still clashing.
An override engine generates a separate file with Compose's !reset — your originals stay pristine.
Recognizes Shopware/Dockware, Strapi+Next, Laravel/Symfony and more; falls back to a generic profile for anything.
Launch Claude Code, Copilot or a shell in a sandboxed, project-scoped tmux session.
Dump, snapshot, restore, shell or open in TablePlus — dialect auto-detected.
One command opens a Cloudflare tunnel — instant client demo, no account.
All outbound SMTP lands in one Mailcatcher inbox at mail.<domain>.
Branch, dirty counts, ahead/behind, stashes and worktrees per project — fully local.
Aggregated edge/service/HTTP health plus live container resource stats.
Inspect, validate and override the YAML templates that drive routing.
A SwiftUI front-end over the same engine — or stay in the CLI. Your call.
Three of the features that make MultiDocker feel less like plumbing and more like a superpower.
AI terminals
Per-project tmux sessions with a sandbox toggle. They survive app quit and re-attach in the native app.
Database toolkit
Dialect auto-detection for MySQL, Postgres, Redis and Mongo. Copy a ready-made connection string, or launch straight into TablePlus.
Demo tunnel
mdocker share opens a Cloudflare quick tunnel — no account, no config. Great for a fast client demo. Auto-cleans on down.
The everyday wins you feel from the first project you register.
Open two client projects side by side and never think about which port is which again.
init + up and it just runs — no hand-editing compose files or hunting for free ports.
Real HTTPS domains mean cookies, redirects, OAuth callbacks and absolute URLs work like they do live.
Because compose files are never touched, nothing MultiDocker does ends up in a commit or a diff.
Show work-in-progress to a client over a public link without a staging server.
Native macOS app
A SwiftUI front-end over the same engine — project list, health cards, git card, embedded terminals. Same power, no memorizing verbs.
Every registered project with live status and one-click open.
Service health, branch, dirty counts and ahead/behind at a glance.
The same per-project AI sessions, docked right in the window.
Where MultiDocker is heading. Rough order, not promises.
Per-project git card and one-command public demo links — already in your hands.
A git worktree becomes its own instance: branch.project.test with a cloned database snapshot.
PR overview via gh, sidebar branch/dirty badges, remote visibility.
Password-protected demo links and named tunnels with a stable URL.
Hook up your issue tracker — click a ticket, get a branch, a subdomain and an AI terminal session.
Got an idea? Tell us on coding9.de
Free while in beta. Grab the DMG, drag it to Applications, run the setup — done.
Download for macOSmacOS 14 or later · works with OrbStack and Docker Desktop
First launch: right-click the app and choose "Open" — the beta build is not yet notarized.
MultiDocker is provided free of charge and is used at your own risk. There is no claim to support, maintenance, updates, bug fixes or availability, and we may change or discontinue the offer at any time. By downloading you accept our terms of use.
Questions or feedback? Contact us at coding9.de
We only use statistics tools if you allow it. Necessary storage keeps this site working; everything else is off until you decide.
Stores your choice from this dialog in your browser (localStorage). No cookie, no transfer to third parties.
Google Analytics 4 via Google Tag Manager, to measure how the site is used. Loaded only after you allow it.