-
Notifications
You must be signed in to change notification settings - Fork 3
Installation
- macOS 26 or later (Apple silicon)
- Apple's
containerCLI 1.0.0 installed and onPATH - For building from source: Xcode 26 / Swift 6.2+
Download the latest Contained.dmg from Releases, open it, and drag Contained to Applications.
On first launch, the onboarding screen checks for the container CLI and the runtime service, and helps you start it.
If the CLI isn't found, set its path in Settings → General → Container CLI path, or install it from the container releases.
This is a Swift Package — there is no .xcodeproj.
git clone https://github.com/tdeverx/contained-app.git
cd contained-app
open Package.swift # open in XcodeOr from the command line:
swift build # debug build
swift test # run the unit tests
./scripts/bundle.sh # assemble a runnable Contained.app (release by default)
open Contained.appscripts/bundle.sh [debug|release] compiles the executable and assembles the .app (Info.plist, icon, embedded Sparkle). The .app is a build artifact and is git-ignored.
Contained updates itself in-app via Sparkle. Pick a channel in Settings → Updates:
| Channel | What you get |
|---|---|
| Stable | Finished releases. |
| Beta | Pre-release builds, ahead of stable. |
| Nightly | The latest build from every commit (CI). Bleeding edge. (default while pre-1.0) |
Channels are cumulative — Nightly still receives Beta and Stable, so you're never stranded behind a lagging channel. The updater is inert in development builds.
Quit Contained, drag it from Applications to the Trash. To remove preferences and local history:
defaults delete com.contained.app
rm -rf ~/Library/Application\ Support/Contained(Your containers, images, and volumes belong to the container runtime and are untouched.)
Contained — source-available under PolyForm Noncommercial 1.0.0. Free for non-commercial use.
Developing