ai-code-switcher
Switch between profiles for AI coding tools and launch the right CLI with the right environment.
ai-code-switcher gives each profile its own provider, endpoint, credentials,
proxy, and default arguments. The code-ai command then starts Claude Code,
OpenAI Codex, or Grok using that profile.
Features
- Manage multiple profiles from one command-line interface
- Support API-key and isolated login/credential profiles
- Configure a custom endpoint and proxy for each profile
- Forward arguments to the underlying AI CLI
- Set per-profile default arguments such as
--model - Upgrade the supported AI CLIs through npm
- Optional Windows and macOS desktop launcher
Installation
Install the CLI from PyPI:
python -m pip install ai-code-switcher
For local development, install the checkout in editable mode:
python -m pip install -e .
The optional desktop launcher is installed with:
python -m pip install "ai-code-switcher[desktop]"
Requirements:
- Python 3.9 or later
- At least one supported AI CLI installed and available on
PATH - Node.js and npm for
code-ai upgrade - Windows or macOS for the optional desktop launcher
Quick start
Create a profile interactively, then launch it:
code-ai add
code-ai list
code-ai show my-claude
code-ai run my-claude
Arguments after the profile name are forwarded to the underlying CLI:
code-ai run my-claude -p "Review this repository"
code-ai run my-codex --model o3
code-ai run my-grok --help
Useful commands:
code-ai list List configured profiles
code-ai add Add a profile interactively
code-ai show <profile> Show profile details
code-ai remove <profile> Remove a profile
code-ai upgrade Upgrade Claude, Codex, and Grok CLIs
code-ai --version Show the installed version
code-ai --help Show command help
The supported AI CLIs are:
- Claude Code:
@anthropic-ai/claude-code - OpenAI Codex:
@openai/codex - Grok:
@xai-official/grok
Profiles and configuration
Profiles are stored in ~/.code-ai/config.yaml. Use API mode when the profile
should provide a token or API key. Use login mode when the CLI should use an
isolated credentials directory.
Example configuration:
profiles:
claude-api:
name: claude-api
type: claude
mode: api
base_url: https://api.anthropic.com
token: sk-ant-...
default_args:
- --model
- claude-sonnet-4-5
codex-login:
name: codex-login
type: codex
mode: login
credentials_path: ~/.codex-profiles/work
proxy: http://127.0.0.1:7890
grok-api:
name: grok-api
type: grok
mode: api
base_url: https://api.x.ai
api_key: xai-...
Login profiles isolate credentials through the provider-specific environment variables used by the CLIs. API profiles set the corresponding endpoint and authentication variables for the selected provider.
Keep tokens and personal configuration out of source control.
Default launch arguments
default_args can be a YAML list or a single string:
profiles:
claude-api:
name: claude-api
type: claude
default_args: "--model claude-sonnet-4-5"
Profile defaults are appended after command-line arguments. This lets a
profile pin a value such as --model when the CLI uses the last occurrence of
a flag. Skip profile defaults for one launch with:
code-ai run --no-default-args claude-api --model claude-opus-4-5
Claude Buddy
Claude profiles can have a deterministic companion card generated from the profile name:
code-ai roll-claude-buddy claude-api
code-ai roll-claude-buddy claude-api --name capybara
code-ai roll-claude-buddy claude-api --type legendary
Desktop launcher
The optional desktop launcher provides a graphical interface for detected Claude and Codex desktop apps. It is supported on Windows and macOS.
python -m pip install "ai-code-switcher[desktop]"
code-ai desktop install # create or recreate the shortcut
code-ai desktop run # open the launcher
code-ai desktop uninstall # remove the shortcut
Desktop settings are stored separately in ~/.code-ai/desktop.yaml. The
launcher can check the system proxy and apply common or per-application
environment variables; per-application values take precedence.
Development
Run the test suite and build the distribution locally with:
python -m pytest tests/ -q
python -m build
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_code_switcher-0.1.21.tar.gz.
File metadata
- Download URL: ai_code_switcher-0.1.21.tar.gz
- Upload date:
- Size: 377.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8b59db3098ce72f0ed7e4ffff02747b0e04aabd2a7cbbd82cf25c53dc953019
|
|
| MD5 |
a4d0adcf74aa31fcc93bba9d88631514
|
|
| BLAKE2b-256 |
11e2c6663a65b8db4aa6810f7fb095cdb0c758a716094018487d18c137cca351
|
File details
Details for the file ai_code_switcher-0.1.21-py3-none-any.whl.
File metadata
- Download URL: ai_code_switcher-0.1.21-py3-none-any.whl
- Upload date:
- Size: 365.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed9d3f774507a33acaf8a5e22cfb829faab3437a387a33f9432a6fb9ace4940c
|
|
| MD5 |
faf6c0fb713b8fc839ba49c53c40796c
|
|
| BLAKE2b-256 |
561f6968ad9821d0c8b1a0a993545920cd4d28d3bc5635f0e0e7c2aa4ca16ca8
|