Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Claude Profiles

Claude Profiles Icon

GitHub release MIT License Star this repo


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

Claude Profiles Screenshot

Note

Designed for macOS 14.0+ (Apple Silicon only) β€” Built with native SwiftUI for a truly Mac-like experience.


Features

  • 🎯 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

Installation

Requirements

  • macOS 14.0 (Sonoma) or later
  • Apple Silicon (M1/M2/M3/M4) β€” Intel Macs are not supported
  • Claude Code CLI installed and configured

Download Pre-built Release

  1. Go to the Releases page
  2. Download the latest ClaudeProfiles.zip
  3. Extract and drag ClaudeProfiles.app to /Applications
  4. Launch the app

Note: The app requires sandbox permissions to access your Claude Code configuration directory.

Build from Source

# 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 run

The built application will be at ./build/Build/Products/Debug/ClaudeProfiles.app

Usage

First Launch

  1. 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
  2. Profile Detection

    • The app automatically detects existing configurations
    • Your current settings.json becomes the "Default" profile
    • Other JSON files in .claude-profiles/stored_profiles/ are imported

Creating Profiles

  1. Click the "NEW PROFILE" button
  2. Enter a Display Name (e.g., "Gemini", "Work Project")
  3. Optionally add a Description
  4. Choose a Color for visual identification
  5. Select a profile to Clone From (optional)
  6. Click "CREATE"

Switching Profiles

  • Click on any profile card to make it active
  • The active profile is highlighted
  • Your settings.json is automatically updated with the selected profile's configuration
  • All other profiles are stored in .claude-profiles/stored_profiles/

Editing Configuration

  1. Select a profile from the dropdown in the Editor tab
  2. Modify the JSON configuration
  3. Click "FORMAT" to beautify the JSON
  4. Click "SAVE" to persist changes

Deleting Profiles

  1. Select the profile you want to delete
  2. Click the "DELETE" button
  3. Confirm the deletion
  4. Note: You cannot delete the currently active profile

Project Structure

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

Architecture

State Management

  • ProfileManager (@ObservableObject): Manages all profile operations
    • AppState: Holds profiles, active profile, settings
    • Persists to ~/.claude/.claude-profiles/metadata.json
    • Uses security-scoped bookmarks for sandbox access

File Storage

~/.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
        └── ...

Design System

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

Development

Prerequisites

  • Xcode 15.0 or later
  • macOS 14.0 SDK
  • Swift 5.9+

Building

# Debug build (faster compilation)
./build.sh

# Release build (optimized)
xcodebuild -project ClaudeProfiles.xcodeproj \
  -scheme ClaudeProfiles \
  -configuration Release \
  build

Code Style

  • Follow Swift API design guidelines
  • Use SwiftUI for all UI components
  • Maintain the Tactical design aesthetic
  • Add logging with OSLog for debugging

Troubleshooting

App won't open profiles

  1. Check Console.app for errors (filter by "ClaudeProfiles")
  2. Verify your config directory is accessible
  3. Ensure metadata.json is valid JSON

Profiles not persisting

  • The app requires security-scoped bookmark access
  • Re-select your config directory if prompted
  • Check ~/.claude/.claude-profiles/ exists and is writable

Sandbox Issues

If you encounter sandbox-related errors:

# Check the app's sandbox entitlements
codesign -d --entitlements - /Applications/ClaudeProfiles.app

Roadmap

  • Profile export/import
  • Profile templates
  • Quick Switch via global hotkey
  • Menu bar integration
  • Cloud sync (iCloud, Dropbox)
  • Profile groups/tags
  • Diff view between profiles

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Credits

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

License

MIT License β€” see LICENSE for details.

Support


Made with ❀️ for the Claude Code community

About

Native macOS app to manage and switch between Claude Code CLI configurations - no API keys needed

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages