β οΈ Under Rapid Development - This project is actively being developed with frequent updates and new features.
A native macOS SwiftUI application for managing containers using Apple's built-in container CLI tool. ContainerUI provides an intuitive, three-column interface following Apple's Human Interface Guidelines for seamless container management on macOS.
|  |  | 
|---|---|
|  |  | 
- List all containers with rich information including resource allocation and network details
- Start, stop, and restart containers with one-click actions
- Create new containers from images with customizable settings
- Delete containers with confirmation
- Real-time status updates showing running/stopped states
- Integrated inspector with detailed container information and actions
- Context menu support for quick operations
- Browse container images with size and architecture information
- Multi-architecture detection for Apple Silicon compatibility
- Registry information showing source repositories
- Create containers directly from images
- Delete unused images to free up space
- Dedicated inspector for image details and operations
- Container system status monitoring
- DNS domain management for container networking
- System logs with filtering and search capabilities
- Start/stop container runtime as needed
- System-specific inspector for advanced configuration
- Universal logs viewer supporting multiple log types:
- Container runtime logs
- Container boot logs
- System logs
 
- Multi-window support for viewing multiple log streams simultaneously
- Search and filtering with real-time text search
- Export capabilities for log analysis
- Native macOS UI with line numbers and word wrap options
- Self-contained views with independent state management
- Clean separation of concerns following SwiftUI best practices
- Responsive inspector panels for each feature area
- Environment-based service injection for loose coupling
- Error handling at the view level for better user experience
- macOS 15.0 or later
- Apple's container CLI tool installed and accessible
- Xcode 15.0 or later (for building from source)
The app requires Apple's container CLI tool to be installed. This is typically available through:
# Check if container tool is available
which container
# The app will look for the tool in these locations:
# /usr/local/bin/container
# /opt/homebrew/bin/container
# /usr/bin/container
# Or via PATH lookup- 
Clone the repository: git clone https://github.com/lcandy2/container-ui.git cd container-ui
- 
Open in Xcode: open ContainerUI/ContainerUI.xcodeproj 
- 
Build and run: - Select the ContainerUI scheme
- Press Cmd+Rto build and run
- Or use command line: xcodebuild -scheme ContainerUI -configuration Debug
 
ContainerUI follows a modern SwiftUI architecture with clean separation of concerns and view-specific state management:
ContainerUI/
βββ Application/          # App entry point and configuration
βββ Services/            # Business logic and CLI integration
βββ Screens/             # Feature-based UI organization
β   βββ Containers/      # Container management views with own inspector
β   β   βββ Views/       # ContainerListView, ContainerInspectorView
β   β   βββ NewContainer/ # Container creation flow
β   βββ Images/         # Image management views with own inspector
β   β   βββ Views/       # ImageListView, ImageInspectorView
β   βββ Logs/           # Universal logs system
β   β   βββ Models/      # Log filtering and sources
β   β   βββ Views/       # Multi-window log viewers
β   βββ System/         # System management views with own inspector
β       βββ Views/       # SystemListView, SystemInspectorView
βββ Shared/             # Reusable components and utilities
    βββ Models/         # Core data models (AppTab)
    βββ Views/          # Main ContentView (navigation only)
- Single Responsibility: Each view manages its own state and actions
- Loose Coupling: Views use @Environmentfor service access
- Encapsulation: Inspector state managed per feature area
- Scalability: Easy to add new features without affecting existing code
- Maintainability: Clear boundaries between different functional areas
- SwiftUI with NavigationSplitView for native three-column layout
- @Observable macro for modern state management
- Environment-based dependency injection for clean architecture
- JSON parsing for rich CLI data extraction
- Async/await for modern concurrency
- Multi-window support for enhanced productivity
- Sandbox-compatible process execution
- Launch ContainerUI from Applications folder or Xcode
- Container system will automatically start if needed
- Browse containers in the left sidebar under "Containers"
- Select a container to view details in the right inspector
- Manage containers using context menus or inspector actions
- Right-click containers for quick actions (start, stop, delete, logs)
- Use the inspector for detailed information and advanced operations
- Toggle inspector using the toolbar button for more space
- Create new containers using the "New Container" button
- View logs by clicking "View Logs" - opens in a dedicated window
- Switch to "Images" tab to browse available container images
- View image details in the dedicated inspector panel
- Create containers directly from images using inspector actions
- Delete unused images to free up disk space
- Toggle inspector for focused browsing experience
- Access "System" tab for container runtime management
- Monitor system status in the main area and inspector
- Manage DNS domains for container networking
- View system logs for troubleshooting
- Control container runtime start/stop operations
Each feature area has its own inspector with relevant actions:
- Containers: Start, stop, restart, logs, terminal access, deletion
- Images: Container creation, image details, deletion
- System: DNS management, system logs, runtime control
When adding new features:
- Follow the established pattern: Each feature area manages its own state
- Use @Environment: Access services without prop drilling
- Self-contained views: Include inspector, actions, and error handling
- Consistent UI patterns: Follow the established inspector/list pattern
- Clean separation: Keep navigation logic separate from feature logic
# Build project
xcodebuild -scheme ContainerUI -configuration Debug build
# Run application
xcodebuild -scheme ContainerUI -configuration Debug
# Clean build
xcodebuild cleanFor development, you may need to temporarily disable App Sandbox:
- Set ENABLE_APP_SANDBOX = NOin build settings
- This allows access to external CLI tools
- Not suitable for App Store distribution
For production deployment, consider:
- XPC Service for secure CLI execution (already implemented)
- Embedded helper tool bundled with the app
- See XPC_IMPLEMENTATION_COMPLETE.mdfor detailed architecture guidance
ContainerUI integrates with Apple's container CLI using JSON output for reliable parsing:
- Containers: container ls -a --format json
- Images: container image ls --format json
- System: container system *commands
- Logs: container logswith various filters
All CLI interactions are handled through the XPC service for security and reliability.
π§ Active Development Notice - Due to rapid development, please check existing issues and PRs before starting work to avoid conflicts.
- Fork the repository at https://github.com/lcandy2/container-ui
- Create a feature branch (git checkout -b feature/amazing-feature)
- Follow the established architecture patterns:
- Each feature area manages its own state
- Use @Environmentfor service access
- Include inspector views for detailed operations
- Handle errors at the view level
 
- Ensure all features work with the JSON CLI format
- Test thoroughly on macOS 15.0+
- Commit your changes (git commit -m 'Add amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
Copyright Β© 2025 https://github.com/lcandy2. All Rights Reserved.
For issues and feature requests:
- GitHub Issues: https://github.com/lcandy2/container-ui/issues
- Troubleshooting: Check the built-in error messages and alerts in each view
- CLI Integration: Review system logs for container tool issues
- System Status: Use the System tab for runtime diagnostics
π‘ Development Updates - Check the repository frequently for new features and improvements as this project is under active development.
ContainerUI - Native container management for macOS developers with modern SwiftUI architecture.