Skip to content
melonfleet edited this page Oct 20, 2026 · 10 revisions

Flotilla

Apple's containers, with a window.

Apple shipped container for macOS and left it on the command line. Flotilla is the native app on top: containers, images, volumes, networks, Kubernetes clusters and persistent Linux machines — plus a real terminal in every container. And one Mac can manage others: an admin Mac pairs with host Macs on your own network, with no server in between.

These pages are about using the app. For architecture, decisions and the reasoning behind them, read the repository: README.md, DECISIONS.md and CLAUDE.md.

The current release is Flotilla 1.5.0-beta.5, tested with container 1.5.0. It needs Apple silicon and macOS 26. It is a beta: expect rough edges, and please report what you find.

Admin or host

Every Mac running Flotilla is one or the other, chosen on first run and changeable in Settings ▸ Hosts and Fleet:

  • An admin is the Mac you sit at. It has the whole interface, manages its own containers, and manages the hosts it has paired with. It listens on nothing.
  • A host runs containers for its admins — a Mac mini in a cupboard, say. It listens on the local network for paired admins only, and its owner keeps the last word: whether admins may update Flotilla, install or upgrade container, or start and stop it, are all the host's own settings.

There used to be a third role that was both at once. It is no longer offered; a Mac that had it is read as an admin. See Hosts.

Start here

Requirements and install What you need, and the four ways the app is shipped
First run The Setup Assistant, what Flotilla checks before it can do anything, and what it does if a check fails
Troubleshooting The failures that are expected, explained — start here if something looks broken

Using it

Machines and containers Start here — what a machine is, and why a container does not live inside one
Overview The fleet at a glance, and why the numbers differ from Activity Monitor
Menu bar and window The menu-bar menu, the status bar, Tasks, and the buttons every form has
Views and filtering Rows and the split view, the search box (⌘K), filtering, sorting, tags and bulk actions
Containers Running one, lifecycle, row actions, the detail tabs, and what cannot be edited
Groups and suggestions Containers that run together, the Suggestions section, and vulnerability reports
Images Pulling, building from a Dockerfile, tagging, sending to hosts, and pruning
Registries Signing in, browsing Docker Hub, and the default registry
Volumes and networks Creating them, how mounts are spelled, and pushing them to hosts
DNS Container names on this Mac and across the fleet
Kubernetes Clusters through container k8s, and their limits
Machines Persistent Linux VMs you keep and shell into, and which images actually boot
Terminal A shell inside a container or a machine
Files Browsing a container's filesystem, and copying files in and out
Flotillafile Describing machines and containers in one file
Sharing and export Configuration files, copying a run command, and moving a setup between Macs
Greta The experimental built-in helper, and dictating to her
Logs and diagnostics The aggregated feed, and the support bundle
Notifications What needs attention, on every Mac, and what reaches Notification Centre
Settings Every setting, including the ones deliberately disabled

The fleet

Hosts Pairing, enrolment keys, each Mac's page, and what a host lets an admin do
Updates Version numbers, Sparkle on the admin, the suggestions library, and rolling Flotilla and container out to hosts
Flotilla Helper The one privileged part, and the four jobs it does

Understanding it

Security model The allowlist, the capability policies, and what a paired admin can and cannot do
Building from source macOS and Linux, and the invariant checks
FAQ Short answers

The short version of what it is not

Flotilla shells out to Apple's container and decodes its JSON. It does not link the Containerization framework, does not reimplement the runtime, and does not talk to the daemon over XPC. Every command it runs is validated against a default-deny allowlist first, and the app will show you the exact command it used. A host checks every command an admin sends against its own allowlist before it runs it, so pairing a Mac does not hand anyone a shell on it.

It is a personal project, free to use — no account, no sign-in, no telemetry, no subscription — and open source under Apache-2.0. It reaches the internet only when there is a reason you can name: Sparkle checking for an update on an admin, Docker Hub when you browse it, and Apple's package when you install container. Settings ▸ About lists every address and when.

Not yet: a fleet ledger, a new host-trust model, tunnels and an overlay network between Macs, Jamf and MDM policy, Flotilla Web, an iPad app and Runtime Saver are planned for 2.0. None of them is in 1.5, and these pages describe only what is.

Clone this wiki locally