Repository navigation
Home
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.
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.
| 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 |
| 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 |
| 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 |
| 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 |
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.
Flotilla — a native macOS app for Apple's container CLI. A personal project, free to use, Apache-2.0. No account, no telemetry.
Getting started
Fleet
Containers and resources
- Containers
- Groups and suggestions
- Images
- Registries
- Volumes and networks
- Kubernetes
- DNS
- Machines and containers
- Machines
- Terminal
- Files
Using Flotilla
- Menu bar and window
- Views and filtering
- Logs and diagnostics
- Sharing and export
- Flotillafile
- Settings
- Greta
- Flotilla Helper
More