Repository navigation
First Run
The first time Flotilla opens, it opens the Setup Assistant in a window of its own, with five
steps and a Finish. Flotilla also runs a preflight on container before it trusts any number.
Every step has a default, so pressing Continue all the way through gives a sensible setup. The steps are listed down the left, with Step 2 of 5 at the top. Return continues and Esc goes back. Back keeps what you did. A tick in the list means a step was answered, not only seen.
If you close the assistant part way, it is offered again next time. Run it again whenever you like from Help ▸ Setup Assistant….
How will you use this Mac? Admin or Host:
- Admin — the Mac you sit at. It manages its own containers and, once you pair them, other Macs'. It listens on nothing.
- Host — a Mac that runs containers for an admin, such as a Mac mini in a cupboard. It listens on the local network for its paired admins.
Whether a Mac listens on the network at all is not something anybody should find out about later, so it is asked here. Admin is pre-selected because it listens on nothing. A host also gets a box, ticked, to open Flotilla at login so its admin can reach it after a restart.
You can change the role later in Settings ▸ Hosts and Fleet. If your organisation's profile sets it, the step says so instead of asking. See Hosts.
Auto, Light or Dark, and the themes for light and dark. Auto is pre-selected: it follows macOS, with the light theme by day and the dark one after sunset if macOS switches. "Follow the system" is a choice rather than an absence of one, which is why it is asked. All of it is in Settings ▸ General too. See Settings.
Meet Greta, Flotilla's assistant. She runs on this Mac with Apple's on-device model and sends nothing away. She answers questions and drafts things, and she never runs anything. You review every draft.
The step says whether she is ready. If Apple Intelligence is off, or Apple's model is not ready, it says so and offers to open System Settings. The box to turn on Greta is ticked, and if she can't run yet it reads so she's ready when Apple's model is. Your organisation can lock it.
What this Mac needs to run containers. Nothing here installs or asks for anything without a button.
On an admin, a checkbox, ticked, offers to download and install container 1.5.0 when you
continue. It is Apple's installer, about 118 MB from Apple's releases on GitHub. Flotilla checks the
package is Apple's, then Apple's Installer asks for your password. Flotilla never performs a
privileged install silently. After that it offers the kernel containers run on. Flotilla asks for Local
Network access when you first add a host, not before.
On a host, nobody may be at the keyboard, so there are three things:
-
container. Flotilla installs it and its kernel itself once the Flotilla Helper is on. -
The Flotilla Helper. Its background service does the jobs that need administrator rights: DNS
names across Macs, installing
container, and installing Flotilla updates. macOS asks you to approve it once, in System Settings ▸ General ▸ Login Items & Extensions, or your organisation's profile does. See Flotilla Helper. - Local Network. Needed so an admin Mac can find and manage the host. macOS asks once. Choose Request Access, then Allow. A configuration profile cannot grant this.
Not now is offered where the step is optional: installing container on an admin, the Helper on
a host, and Greta when she can't run yet. There is never a global Skip. On a host, Not now on
this step still saves the role, because a host that isn't listening isn't a host.
Flotilla reaches the internet by itself for two things, and nothing else. Each is a separate box, ticked, and each says exactly what it contacts.
-
Check for Flotilla updates automatically. Reads the update feed at
melonfleet.github.ioonce a day. An update you choose to install downloads from Flotilla's releases ongithub.com. The request names Flotilla's version and nothing about this Mac. -
Check daily for new suggestions. Fetches the suggestions library from
raw.githubusercontent.comonce a day. The request carries nothing about this Mac, and a library is used only if its signature verifies.
A host has no update check of its own, because its admin updates it. Your organisation can lock either box.
A summary of where this Mac stands: role, appearance, container, Greta, online checks, and on a
host the Helper and Local Network. You can change any of it later in Settings. Overview then shows a
Get started list for your role.
Before it trusts any number, Flotilla checks container. It distinguishes the cases carefully,
because "not installed" and "installed but not running" want completely different responses from
you. Each gets a banner at the top of Overview and This Mac's page saying what is wrong, with the one
button that fixes it, and the status bar's container dot says the same.
| What it finds | The banner | The fix |
|---|---|---|
| No binary |
container isn't installed |
Download and Install container 1.5.0 |
| Older than 1.0.0 |
container isn't installed, saying which version is too old |
the same download |
| Service stopped | The container runtime isn't running | Start |
| Upgraded, but the service is still the old build | The container runtime is not available, naming both builds | Restart Container System in the status bar's container menu |
| No kernel | No kernel is installed | Download Kernel |
| Anything else | The container runtime is not available, with the reason | Retry |
A stopped service, a missing kernel and a missing container are not faults, and are not dressed
as them: amber, plain wording and a button, with the red triangle kept for states where something
really is wrong. In those states every number below the banner is stale, which is why it sits above
everything.
The oldest container Flotilla accepts is 1.0.0. Beta 5 is built and tested against 1.5.0, and
a host older than that gets an Upgrade offer — see Updates.
Flotilla resolves the binary by looking along PATH and then in /usr/local/bin.
That second step is not redundant. A GUI-launched app does not inherit your shell's PATH. The
environment LaunchServices hands a bundled app is exactly /usr/bin:/bin:/usr/sbin:/sbin — and
container installs to /usr/local/bin, which is not in it. Early builds reported "the CLI isn't
installed" on a machine where it was installed and running, and the bug was invisible during
development because an app launched from a terminal inherits the terminal's rich PATH.
If the binary genuinely cannot be found, Flotilla says so and does not pretend to have an empty container list. The message names every directory it looked in:
Apple's container CLI wasn't found in: /usr/bin, /bin, /usr/sbin, /sbin, /usr/local/bin
A diagnosis you can check is worth more than a shorter one. Apple's releases are at apple/container if you would rather install by hand, and you can point Flotilla at the binary yourself — see Binary path in Settings.
container system status reports a stopped service by exiting non-zero while printing valid
status JSON. Flotilla reads what the command printed rather than discarding it because the exit
code was not zero, so it can tell "the service is stopped" apart from "something is actually
wrong".
Starting the service is a normal, unprivileged operation. The service is always stopped after a
Mac restarts, so by default Flotilla starts it once after this Mac starts up — and never again
that boot, so a stop you made stays a stop. Settings ▸ Advanced ▸ Start container by itself
also offers Ask and Never. Otherwise the banner's Start does it, with a spinner, because
container system start takes several seconds.
Upgrading container without restarting its service leaves a skew that looks healthy:
system status says running, and every container run fails with no available interface strategy
for network default. Flotilla compares the CLI's build with the service's and names both — "upgraded
to 1.5.0 but the running service is still 1.4.1" — because without them the symptom is
inexplicable. One restart fixes it, and Restart Container System runs it without asking first:
nothing useful is running in that state anyway.
A fresh install looks running and cannot start anything until a kernel is downloaded. Flotilla
checks for the file and offers Download Kernel — the one Apple's container recommends. The
download reports in the banner, and a failure stays there beside Try Again, in the CLI's own
words, because a failed download is most often the network.
Flotilla opens on Overview, on an admin and on a host alike. The sidebar is one list in four blocks, and the blocks are the mental model:
Overview the fleet at a glance
Containers what containers are made of and run on
Images
Registries
Volumes
Networks
DNS
Machines
Kubernetes
Hosts This Mac and every paired Mac
Activity what happened
Logs
Settings is not in the sidebar: it is the gear at the right of the window bar, because the sidebar lists the things you manage, not the application's own preferences.
Machines are listed with containers but are not containers, and they are not where containers run either — each container gets its own VM. A machine is a persistent Linux VM you create and shell into, and you can ignore the section entirely. See Machines and containers for the measurement behind that.
Overview's Get started card offers the first things to do — run a container, pull an image, add a host, try a suggested stack. Close it with its X when you no longer need it. See Overview.
An empty list means empty, and Flotilla says which kind of empty it is: no containers exist, or none match your current filter and search. Those are different, and an app that draws the same blank pane for both makes you doubt the filter you just set.
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