Skip to content

tdeverx/contained-app

Repository files navigation

Warning

Major Refactor in Progress

A large foundation refactor is currently under review in PR #48. This introduces significant changes across the codebase and will likely require existing branches to be rebased with manual conflict resolution.

If you’re planning to contribute, it’s recommended that you base new work on this branch until it has been merged.

Contained icon

Contained

Contained is a native macOS control surface for Apple's container CLI. It gives containers, images, volumes, networks, registries, logs, templates, and app-managed health/restart behavior a Mac-first SwiftUI interface without hiding the underlying command line.

Contained running containers
Pre-1.0 and actively polishing.

What It Does

  • Run, edit, stop, restart, inspect, and delete containers.
  • Browse rich Liquid Glass cards with local-only tint, icon, nickname, and graph personalization.
  • Manage images, tags, updates, archives, volumes, networks, registry credentials, templates, activity history, and system resources.
  • Import Compose files into editable run forms instead of launching opaque stacks.
  • Reveal the exact container CLI command before privileged run/edit operations.
  • Optionally enable the floating toolbar, morph panels, command palette, Docker Hub search, image build workspace, keyboard shortcuts, and Compose import from Settings -> Experimental.

Install

Download the latest .dmg from Releases.

Sparkle updates are built in. During pre-1.0 development, fresh installs default to the Nightly channel so they can receive current builds. Stable, Beta, and Nightly can be changed in Settings -> Updates.

Requirements:

  • macOS 26 or later on Apple silicon
  • Apple's container CLI 1.0.0 on PATH
  • Xcode 26 / Swift 6.2+ for local development

Build

Contained is a Swift Package.

open Package.swift
swift build
swift test
./scripts/bundle.sh debug
open Contained.app

Maintainers use scripts/release.sh and scripts/appcast.sh for signing, notarization, DMG creation, GitHub release notes, and Sparkle appcasts.

Documentation

The GitHub wiki is the source of truth for feature and implementation notes. The maintained wiki pages are mirrored in docs/wiki so docs changes can be reviewed with code changes:

Contributing And Support

Start with the wiki and Troubleshooting. Use Discussions Q&A for setup help and questions, and open an issue for actionable bugs, crashes, regressions, or tracked feature work.

Please read the contributing guide before opening a larger PR. Do not post vulnerabilities publicly; use private vulnerability reporting instead.

Architecture

The package has two main targets:

  • ContainedCore: models, CLI command builders, real container --format json decoders, and testable service logic.
  • Contained: SwiftUI app shell, design system, navigation, feature views, stores, history, settings, Sparkle support, and app state migration.

Integration is intentionally CLI-based rather than private-framework based. Personalization and app-managed metadata stay local to Contained so the user's container resources remain clean when used directly from the terminal.

License

Contained is source-available and free for non-commercial use under the PolyForm Noncommercial License 1.0.0. The Contained name and branding are reserved; see NOTICE.

Packages

 
 
 

Contributors