Effortlessly manage multiple Claude Code configurations. Claude Profiles is a beautiful native macOS application that lets you create, switch between, and manage different Claude Code configurations without manual file shuffling.
Perfect for developers who work with:
- Multiple API providers (Anthropic, Gemini, GLM, custom endpoints)
- Different projects with unique settings
- Testing various model configurations
- Team environments with shared settings
Note
Designed for macOS 14.0+ (Apple Silicon only) β Built with native SwiftUI for a truly Mac-like experience.
- π― Native macOS Experience β Clean, familiar interface built with SwiftUI
- β‘ Instant Profile Switching β Switch configurations with one click, no restarts needed
- π Secure Credential Management β Your API keys stay local, stored in your config directory
- π Built-in JSON Editor β Edit configuration files directly within the app
- π¨ Tactical Design β High-contrast, utilitarian aesthetic (Sovereign Grid style)
- πΎ Automatic Backups β Creates ZIP backups before profile changes
- π Profile Validation β Ensures JSON syntax is valid before saving
- π Config Directory Selection β Point to any Claude Code config directory
- π Persistent State β Remembers your last active profile across app restarts
- macOS 14.0 (Sonoma) or later
- Apple Silicon (M1/M2/M3/M4) β Intel Macs are not supported
- Claude Code CLI installed and configured
- Go to the Releases page
- Download the latest
ClaudeProfiles.zip - Extract and drag
ClaudeProfiles.appto/Applications - Launch the app
Note: The app requires sandbox permissions to access your Claude Code configuration directory.
# Clone the repository
git clone https://github.com/andreyshipilev/claude-profiles.git
cd claude-profiles/ClaudeProfiles
# Build using the provided script
./build.sh
# Or build with Xcode
open ClaudeProfiles.xcodeproj
# Press Cmd+R to build and runThe built application will be at ./build/Build/Products/Debug/ClaudeProfiles.app
-
Select Config Directory
- On first launch, you'll be prompted to select your Claude Code configuration directory
- This is typically
~/.claude/ - The app will create a security bookmark for persistent access
-
Profile Detection
- The app automatically detects existing configurations
- Your current
settings.jsonbecomes the "Default" profile - Other JSON files in
.claude-profiles/stored_profiles/are imported
- Click the "NEW PROFILE" button
- Enter a Display Name (e.g., "Gemini", "Work Project")
- Optionally add a Description
- Choose a Color for visual identification
- Select a profile to Clone From (optional)
- Click "CREATE"
- Click on any profile card to make it active
- The active profile is highlighted
- Your
settings.jsonis automatically updated with the selected profile's configuration - All other profiles are stored in
.claude-profiles/stored_profiles/
- Select a profile from the dropdown in the Editor tab
- Modify the JSON configuration
- Click "FORMAT" to beautify the JSON
- Click "SAVE" to persist changes
- Select the profile you want to delete
- Click the "DELETE" button
- Confirm the deletion
- Note: You cannot delete the currently active profile
ClaudeProfiles/
βββ ClaudeProfiles.xcodeproj # Xcode project
βββ ClaudeProfiles/
β βββ ClaudeProfilesApp.swift # App entry point
β βββ Utils/
β β βββ ProfileManager.swift # Core profile management logic
β βββ Views/
β β βββ MainView.swift # Root view with tabs
β β βββ JSONEditorView.swift # JSON configuration editor
β β βββ CreateProfileSheet.swift
β β βββ SettingsView.swift
β βββ Models/
β β βββ Models.swift # Data models (ProfileMetadata, AppState, etc.)
β βββ DesignSystem/
β β βββ TacticalColors.swift
β β βββ TacticalTypography.swift
β β βββ TacticalComponents.swift
β βββ Assets.xcassets/ # Images, icons, colors
βββ build.sh # Build script
βββ README.md
- ProfileManager (
@ObservableObject): Manages all profile operationsAppState: Holds profiles, active profile, settings- Persists to
~/.claude/.claude-profiles/metadata.json - Uses security-scoped bookmarks for sandbox access
~/.claude/
βββ settings.json # Active profile (symlinked/copied)
βββ .claude-profiles/
βββ metadata.json # Profile registry
βββ state.json # Active profile tracking
βββ stored_profiles/ # Inactive profiles
β βββ gemini.json
β βββ default.json
β βββ ...
βββ backups/ # Automatic backups
βββ claude-profiles-2024-01-08.zip
βββ ...
The app uses a Tactical Utilitarian / Sovereign Grid design language:
- High contrast borders and backgrounds
- Monospaced body text for technical content
- Serif headlines for authority
- No rounded corners β sharp edges only
- Monochromatic palette with color accents
- Xcode 15.0 or later
- macOS 14.0 SDK
- Swift 5.9+
# Debug build (faster compilation)
./build.sh
# Release build (optimized)
xcodebuild -project ClaudeProfiles.xcodeproj \
-scheme ClaudeProfiles \
-configuration Release \
build- Follow Swift API design guidelines
- Use SwiftUI for all UI components
- Maintain the Tactical design aesthetic
- Add logging with
OSLogfor debugging
- Check Console.app for errors (filter by "ClaudeProfiles")
- Verify your config directory is accessible
- Ensure
metadata.jsonis valid JSON
- The app requires security-scoped bookmark access
- Re-select your config directory if prompted
- Check
~/.claude/.claude-profiles/exists and is writable
If you encounter sandbox-related errors:
# Check the app's sandbox entitlements
codesign -d --entitlements - /Applications/ClaudeProfiles.app- Profile export/import
- Profile templates
- Quick Switch via global hotkey
- Menu bar integration
- Cloud sync (iCloud, Dropbox)
- Profile groups/tags
- Diff view between profiles
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Built with:
- SwiftUI β Native macOS UI framework
- Apple AppKit β System-level integration
- Foundation β File management and JSON handling
Design inspiration:
- Tactical Utilitarian β Sovereign Grid design language
- Bento Grid β Modern layout patterns
MIT License β see LICENSE for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with β€οΈ for the Claude Code community
