How saladday/cc-switch-cli works
CC-Switch CLI is a Rust switchboard for configuring and operating multiple AI coding CLIs. Users enter through the scriptable CLI or interactive TUI to manage provider settings, prompts, MCP servers, skills, and failover; configured coding tools can then send requests through the local proxy to model providers. The repository also includes session and usage features, daemon control, and cloud-sync integrations. The README excerpt and sampled files support the entry points, proxy routes, and selected subsystem behavior; some broader capability links are based on documented features and the file tree.
Main entry points: commands/mod.rs CLI commands · handlers.rs Request handlers · database/mod.rs SQLite state · provider/mod.rs Provider services
Components 25
CLI and TUI
- CLI entry
src-tauri/src/main.rs - CLI commands
src-tauri/src/cli/commands/mod.rs - Interactive TUI
src-tauri/src/cli/tui/app.rs
Provider configuration
- Provider controls
src-tauri/src/cli/commands/provider.rs - App configuration
src-tauri/src/config.rs - Provider services
src-tauri/src/services/provider/mod.rs - Prompt management
src-tauri/src/prompt.rs - MCP management
src-tauri/src/mcp.rs - Skill management
src-tauri/src/services/skill.rs
Request proxy
- Local proxy server
src-tauri/src/proxy/server.rs - Request handlers
src-tauri/src/proxy/handlers.rs - Request context
src-tauri/src/proxy/handler_context.rs - Provider routing
src-tauri/src/proxy/provider_router.rs - Upstream forwarding
src-tauri/src/proxy/forwarder.rs - Failover policy
src-tauri/src/cli/failover_policy.rs
State and services
- SQLite state
src-tauri/src/database/mod.rs - Session manager
src-tauri/src/session_manager/mod.rs - Usage services
src-tauri/src/services/usage_stats.rs - Cloud sync
src-tauri/src/services/sync_protocol.rs - WebDAV integration
src-tauri/src/services/webdav.rs - S3 integration
src-tauri/src/services/s3.rs - Daemon control
src-tauri/src/daemon/ipc/server.rs
Other components
- Operator
- AI coding tools
- Model APIs
Connections 28
- Operator → CLI entry: runs
- CLI entry → CLI commands: dispatches commands
- Operator → Interactive TUI: interacts
- CLI commands → Provider controls: dispatches provider actions
- Interactive TUI → Provider services: manages providers
- Provider controls → SQLite state: reads and writes
- Provider services → App configuration: updates app config
- Provider services → SQLite state: reads and writes
- CLI commands → Prompt management: manages prompts
- CLI commands → MCP management: manages MCP
- CLI commands → Skill management: manages skills
- AI coding tools → Local proxy server: sends requests
- Local proxy server → Request handlers: dispatches routes
- Request handlers → Request context: loads context
- Request context → SQLite state: reads proxy config
- Request handlers → Provider routing: routes requests
- Request handlers → Upstream forwarding: forwards requests
- Provider routing → Model APIs: selects upstream
- Upstream forwarding → Model APIs: sends requests
- Request handlers → Failover policy: applies policy
- CLI commands → Session manager: manages sessions
- Session manager → SQLite state: stores session state
- CLI commands → Usage services: queries usage
- Usage services → SQLite state: reads usage state
- CLI commands → Cloud sync: starts sync
- Cloud sync → WebDAV integration: uses WebDAV
- Cloud sync → S3 integration: uses S3
- CLI commands → Daemon control: controls daemon