A no-brainer macOS configuration management system that sets up your Mac and automatically preserves your settings so you never lose your tweaks.
"Where are my last 6 months of tweaks?"
You know the scenario:
- Set up a Mac perfectly with all your apps, preferences, and configurations
- Tweak settings over months to get everything just right
- Get a new machine 6 months later
- Panic: Where are all your customizations? What apps did you install? What were those terminal settings?
COPS prevents this nightmare by automatically saving your configuration every time you run it.
# Fresh Mac setup
git clone https://github.com/shaneholloman/cops.git ~/.cops
cd ~/.cops
./bootstrap.sh # Prep system dependencies
./cops.sh # Apply configuration and auto-save your settings
That's it. Your Mac is configured and your settings are automatically saved to git.
- Every time you run COPS, your configuration changes are automatically committed
- Never lose months of careful customization again
- Your
config.yaml
and system backups are preserved automatically
- APFS snapshots before making changes (instant rollback)
- Validates everything before applying changes
- Backs up existing configs before overwriting
- Master switches to control what gets modified
- Single
config.yaml
file controls everything - Works perfectly for semi-technical users
- Just run
./cops.sh
and everything happens automatically - No complex setup or configuration required
- Installs CLI tools and applications via Homebrew
- Sets up development environment (shell, aliases, dotfiles)
- Configures system preferences (keyboard, terminal, etc.)
- Manages file associations and default applications
- Configure once: Edit
config.yaml
with your preferred apps and settings - Run COPS:
./cops.sh
applies your configuration - Auto-save: Your changes are automatically committed to git
- New machine: Clone your repo and run
./cops.sh
- everything restored perfectly
Everything is controlled by a single config.yaml
file:
# Enable/disable major features
enable_tools: true # Install CLI tools and apps
enable_preferences: true # Configure system settings
enable_aliases: true # Set up shell aliases
enable_snapshots: true # Create safety snapshots
# Your applications
tools:
cli:
- git
- jq
- ripgrep
cask:
- claude
- visual-studio-code
- docker
# Auto-save your changes (recommended)
git:
auto_commit: true # Automatically save configuration changes
auto_push: false # Optionally push to remote repo
# Use different configs for different machines
./cops.sh --config-file configs/desktop.yaml
./cops.sh --config-file configs/work.yaml
git:
auto_commit: true
auto_push: true # Also push to your remote repository
Set up a private repo and never lose your settings across machines.
- APFS Snapshots: Instant system rollback if needed
- Config Validation: Checks YAML syntax and required tools
- Backup Everything: Existing dotfiles backed up with timestamps
- Master Switches: Granular control over what gets modified
- Dry Run Mode: See what would happen before applying changes
- Configuration Guide - Complete config.yaml reference
- System Preferences - Available system settings
- Development Guide - Contributing to COPS
- macOS (tested on recent versions)
- Git (for configuration management)
- Basic command line familiarity
Dependencies are automatically installed by bootstrap.sh
.
MIT License - See LICENSE file for details