Observed since 21 Oct, 10:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Cross-platform AI CLI launcher for managing multiple AI coding assistants
AI-CLI is a cross-platform terminal launcher for managing multiple AI coding assistants. Seamlessly switch between tools like Kiro CLI, Claude Code, Cursor Agent, and more.
I to install missing toolsR to refresh tool list# Using pip
pip install ai-cli-launcher
# Or using pipx (isolated environment)
pipx install ai-cli-launcher
Windows:
irm https://raw.githubusercontent.com/hyfhot/AI-CLI/master/install.ps1 | iex
Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/hyfhot/AI-CLI/master/install.sh | bash
The script will automatically:
# Clone repository
git clone https://github.com/hyfhot/AI-CLI.git
cd AI-CLI
# Install in development mode
pip install -e ".[dev]"
ai-cli --init
This creates a default configuration file with common AI tool configurations.
ai-cli
Complete Uninstall (Recommended):
Windows (PowerShell):
ai-cli --uninstall; pip uninstall ai-cli-launcher
Linux/macOS:
ai-cli --uninstall && pip uninstall ai-cli-launcher
Alternative (Step by Step):
# Step 1: Clean up shortcuts and show config location
ai-cli --uninstall
# Step 2: Uninstall the package
pip uninstall ai-cli-launcher
Quick Uninstall:
# Uninstall package only (shortcuts will remain)
pip uninstall ai-cli-launcher
Manual Cleanup (if needed):
%APPDATA%\AI-CLI\ and desktop shortcut~/.config/ai-cli/~/Library/Application Support/ai-cli/
## 📖 Usage
### Command Line Options
```bash
ai-cli # Start interactive interface
ai-cli --init # Initialize configuration file
ai-cli --config # Edit configuration file
ai-cli --lang zh # Start with Chinese language
ai-cli --lang ja # Start with Japanese language
ai-cli --uninstall # Uninstall AI-CLI
ai-cli --version # Show version information
ai-cli --help # Show help information
ai-cli --update # Upgrade AI-CLI to the latest version
# Direct launch mode (skip project and tool selection UI)
ai-cli -t kiro-cli # Launch kiro-cli in current directory
ai-cli -t claude -p "My Project" # Launch claude in a configured project
ai-cli -t codewhale -d /path/to/project # Launch codewhale in a specific directory
ai-cli -t kiro-cli --platform wsl # Launch in WSL environment
Direct Launch Options:
| Option | Short | Description |
|---|---|---|
--tool NAME | -t | AI tool name (e.g., kiro-cli, claude). Triggers direct-launch mode. |
--project NAME | -p | Configured project name (used for env-var injection) |
--dir PATH | -d | Working directory path (mutually exclusive with -p) |
--platform ENV | — | Target platform: windows/wsl/linux/macos (default: current) |
When --tool is provided, AI-CLI skips the interactive UI, runs the tool directly
in the current terminal, and exits when the tool exits. Project-specific
environment variables are injected if a matching project is found.
Language Options (--lang / -l):
auto - Auto-detect system language (default)en - Englishzh - Chinese (中文)ja - Japanese (日本語)de - German (Deutsch)Note: CLI language parameter takes priority over config file settings.
| Key | Function |
|---|---|
↑ / ↓ | Navigate up/down |
Enter | Select project / Enter folder |
Esc | Go back to parent folder |
N | Create new project or folder |
D | Delete selected project or folder |
Q | Quit application |
| Key | Function |
|---|---|
↑ / ↓ | Navigate up/down |
Enter | Launch tool (new window) |
T | Launch tool (new tab) |
I | Install missing tools |
R | Refresh tool list |
S | Toggle sort mode (usage / name, desc / asc) |
U | Upgrade AI-CLI (when update available) |
Esc | Return to project selection |
Q | Quit application |
ai-cliEnter to confirmPass --tool to skip the interactive UI and run a tool directly in the current terminal:
# Simplest: launch kiro-cli in the current directory
ai-cli -t kiro-cli
# Launch in a configured project (auto-injects project env vars)
ai-cli -t claude -p "My API Project"
# Launch in a specific directory
ai-cli -t codewhale -d ~/code/myproject
Direct launch mode will:
When you launch ai-cli from a terminal:
%APPDATA%\AI-CLI\config.json~/.config/ai-cli/config.json~/Library/Application Support/ai-cli/config.json{
"projects": [
{
"type": "folder",
"name": "My Projects",
"children": [
{
"type": "project",
"name": "Web App",
"path": "/path/to/project",
"env": {
"API_KEY": "your-api-key",
"DEBUG": "true"
}
}
]
}
],
"tools": [
{
"name": "kiro-cli",
"displayName": "Kiro CLI",
"windowsInstall": "winget install kiro-cli",
"wslInstall": "curl -fsSL https://cli.kiro.dev/install | bash",
"linuxInstall": "curl -fsSL https://cli.kiro.dev/install | bash",
"macosInstall": "brew install kiro-cli",
"checkCommand": "kiro-cli --version",
"url": "https://kiro.dev/cli/"
}
],
"settings": {
"language": "auto",
"terminalEmulator": "default",
"theme": "default"
}
}
Folder:
{
"type": "folder",
"name": "Project Group Name",
"children": [...]
}
Project:
{
"type": "project",
"name": "Project Name",
"path": "/absolute/path/to/project",
"env": {
"KEY": "value"
}
}
Configure independent environment variables for each project:
{
"type": "project",
"name": "API Project",
"path": "/path/to/api",
"env": {
"API_KEY": "sk-xxx",
"API_BASE_URL": "https://api.example.com",
"DEBUG": "true",
"LOG_LEVEL": "info"
}
}
name: Tool command name (used for detection)displayName: Display namecheckCommand: Command to check if tool is installedwindowsInstall: Windows native installation commandwslInstall: WSL environment installation commandlinuxInstall: Linux installation commandmacosInstall: macOS installation commandurl: Tool's official website (displayed in tool list){
"name": "cursor",
"displayName": "Cursor Agent",
"windowsInstall": "winget install Cursor",
"wslInstall": "curl -fsSL https://cursor.sh/install | bash",
"linuxInstall": "curl -fsSL https://cursor.sh/install | bash",
"macosInstall": "brew install --cask cursor",
"checkCommand": "cursor --version",
"url": "https://cursor.sh"
}
auto: Auto-detect system language (default)en: Englishzh: Chineseja: Japanesede: Germandefault: Use system default terminal (default)wt: Windows Terminal (Windows only)iterm: iTerm2 (macOS only)gnome-terminal: GNOME Terminal (Linux only)konsole: Konsole (Linux only)default: Default dark themeai_cli/
├── __init__.py # Package initialization
├── cli.py # CLI entry point
├── app.py # Main application logic
├── models.py # Data models
├── config.py # Configuration management
├── utils.py # Path conversion utilities
├── core/ # Core functionality modules
│ ├── __init__.py
│ ├── tools.py # Tool detection
│ ├── projects.py # Project management
│ ├── git.py # Git integration
│ └── installer.py # Tool installation
├── ui/ # User interface modules
│ ├── __init__.py
│ ├── theme.py # Theme configuration
│ ├── menu.py # Menu rendering
│ └── input.py # Keyboard input handling
├── platform/ # Platform adapter modules
│ ├── __init__.py
│ ├── base.py # Abstract base class
│ ├── windows.py # Windows adapter
│ ├── linux.py # Linux adapter
│ ├── macos.py # macOS adapter
│ └── factory.py # Platform factory
└── i18n/ # Internationalization modules
├── __init__.py
└── manager.py # Language manager
Defines all data structures:
Config: Main configuration objectSettings: Settings optionsProjectNode: Project node (supports tree structure)Tool: Tool objectToolConfig: Tool configurationToolEnvironment: Tool runtime environment enumWhen a project path is a Git worktree, AI-CLI will:
AI-CLI automatically handles path conversion between Windows and WSL:
C:\Users\username\project/mnt/c/Users/username/projectConversion is bidirectional, supporting:
Tool detection uses async parallel processing:
R to clear cache and re-detectEnvironment variables configured for each project are injected when launching tools:
{
"type": "project",
"name": "API Project",
"path": "/path/to/api",
"env": {
"API_KEY": "sk-xxx",
"DEBUG": "true"
}
}
When launching a tool, these environment variables are added to the tool's runtime environment.
# Run all tests
pytest
# Run specific test file
pytest tests/test_models.py
# Run specific test
pytest tests/test_models.py::TestConfig::test_from_dict
# Show verbose output
pytest -v
# Show print output
pytest -s
# Run tests with coverage report
pytest --cov=ai_cli
# Generate HTML coverage report
pytest --cov=ai_cli --cov-report=html
# View report
open htmlcov/index.html # macOS
xdg-open htmlcov/index.html # Linux
start htmlcov/index.html # Windows
test_models.py: Data model teststest_config.py: Configuration management teststest_utils.py: Path conversion teststest_platform.py: Platform adapter teststest_git.py: Git integration teststest_tools.py: Tool detection teststest_projects.py: Project management teststest_ui.py: UI component teststest_app.py: Application integration teststest_cli.py: CLI entry point testsrich: Terminal UI renderingprompt-toolkit: Keyboard input handlingclick: CLI frameworkplatformdirs: Cross-platform paths# 1. Clone repository
git clone https://github.com/hyfhot/AI-CLI.git
cd AI-CLI
# 2. Create Python version worktree (if needed)
git worktree add ../ai-cli-multi-platform python-migration
cd ../ai-cli-multi-platform
# 3. Create virtual environment (recommended)
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate
# 4. Install development dependencies
pip install -e ".[dev]"
# 5. Run tests to verify environment
pytest
Project follows PEP 8 style guide:
# Install code checking tools
pip install flake8 black mypy
# Run code checks
flake8 ai_cli tests
# Auto-format code
black ai_cli tests
# Type checking
mypy ai_cli
Add new tool configuration in config.json:
{
"name": "new-tool",
"displayName": "New Tool",
"windowsInstall": "winget install new-tool",
"wslInstall": "curl -fsSL https://example.com/install | bash",
"linuxInstall": "curl -fsSL https://example.com/install | bash",
"macosInstall": "brew install new-tool",
"checkCommand": "new-tool --version",
"url": "https://example.com"
}
Add translations in ai_cli/i18n/manager.py:
translations = {
'new_lang': {
'app_title': 'AI-CLI',
'select_project': 'Select Project',
# ... other translations
}
}
# Enable debug mode
ai-cli --debug
# Use Python debugger
python -m pdb -m ai_cli.cli
# View detailed logs
import logging
logging.basicConfig(level=logging.DEBUG)
Issue: Cannot detect Windows Terminal
# Solution: Ensure Windows Terminal is installed
winget install Microsoft.WindowsTerminal
Issue: WSL tool detection fails
# Solution: Ensure WSL is enabled
wsl --install
Issue: Terminal emulator detection fails
# Solution: Install supported terminal
sudo apt install gnome-terminal # Ubuntu/Debian
sudo dnf install gnome-terminal # Fedora
Issue: iTerm2 not detected
# Solution: Ensure iTerm2 is installed
brew install --cask iterm2
Issue: Config file corrupted
# Solution: Reinitialize configuration
ai-cli --init
Issue: Tool detection cache stale
# Solution: Press R key in tool selection screen to refresh
We welcome all forms of contribution!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Follow Conventional Commits:
feat: Add new feature
fix: Fix bug
docs: Documentation update
style: Code formatting
refactor: Code refactoring
test: Test related
chore: Build/toolchain updates
This project is licensed under the MIT License - see LICENSE file for details.
Thanks to these open source projects:
Made with ❤️ by AI-CLI Team
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 3.0.13 | 24 Jul 2026 | 11 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 10:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f94c2c4e2c442dc027527c94e05e388f26526f35446f038f9b72a75f09447c04