https://github.com/jolehuit/clother
Use multiple Claude Code–compatible LLM providers from one CLI, switching profiles instantly with simple clother-* commands.
https://github.com/jolehuit/clother
claude claudecode cli vibecoding
Last synced: about 1 month ago
JSON representation
Use multiple Claude Code–compatible LLM providers from one CLI, switching profiles instantly with simple clother-* commands.
- Host: GitHub
- URL: https://github.com/jolehuit/clother
- Owner: jolehuit
- License: mit
- Created: 2025-10-28T13:15:30.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-03-18T11:48:11.000Z (about 1 month ago)
- Last Synced: 2026-03-19T01:03:00.763Z (about 1 month ago)
- Topics: claude, claudecode, cli, vibecoding
- Language: Go
- Homepage:
- Size: 735 KB
- Stars: 286
- Watchers: 4
- Forks: 31
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Why Clother?
Switching Claude Code providers usually means changing env vars, endpoints, models, and launcher scripts by hand.
Clother gives you one install and one command pattern across Claude, Z.AI, Kimi, Alibaba, OpenRouter, local backends, China endpoints, and many other Anthropic-compatible providers.
## Table of Contents
- [Installation](#installation)
- [Core Usage](#core-usage)
- [Provider Reference](#provider-reference)
- [Troubleshooting](#troubleshooting)
- [VS Code Integration](#vs-code-integration)
- [Platform Support](#platform-support)
- [Under the Hood](#under-the-hood)
- [Contributors](#contributors)
- [Star History](#star-history)
- [License](#license)
## Installation
### Homebrew (macOS recommended)
```bash
# 1. Install Claude Code CLI
curl -fsSL https://claude.ai/install.sh | bash
# 2. Install Clother via tap
brew tap jolehuit/tap
brew install clother
# 3. Start using it — all launchers are ready immediately
clother-native # Use your Claude Pro/Max/Team subscription
clother-zai # Z.AI (GLM-5)
clother-zai --yolo # Skip permission prompts
clother-kimi # Kimi (kimi-k2.5)
clother config # Configure providers
```
All `clother-*` provider launchers are installed directly into `$(brew --prefix)/bin` by the formula — no extra setup needed. `brew upgrade clother` keeps everything up to date.
**Update:**
```bash
clother update # routes to brew upgrade under Homebrew
# or equivalently:
brew upgrade clother
```
### curl (macOS / Linux)
```bash
# 1. Install Claude Code CLI
curl -fsSL https://claude.ai/install.sh | bash
# 2. Install Clother
curl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash
# 3. Start using it
clother-native # Use your Claude Pro/Max/Team subscription
clother-zai # Z.AI (GLM-5)
clother-zai --yolo # Skip permission prompts
clother-kimi # Kimi (kimi-k2.5)
clother-ollama --model qwen3-coder # Local with Ollama
clother config # Configure providers
```
**Update:**
```bash
clother update # downloads and installs latest release
```
This installs:
- `clother`
- `clother-*` provider launchers
- resume compatibility for `claude --resume ...`
### Install Options
By default, Clother installs launchers to:
- the same directory as your existing `claude` binary, when `claude` is already on `PATH`
- otherwise **macOS**: `~/bin`
- otherwise **Linux**: `~/.local/bin` (XDG standard)
If the chosen bin directory is not on `PATH`, `clother install` prints a warning with the exact directory to add.
You can override this with `--bin-dir` or the `CLOTHER_BIN` environment variable:
```bash
# Using --bin-dir flag
curl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash -s -- --bin-dir ~/.local/bin
# Using environment variable
export CLOTHER_BIN="$HOME/.local/bin"
curl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash
```
Clother keeps `claude --resume ...` working with Clother features after install.
## Core Usage
### Commands
| Command | Description |
|---------|-------------|
| `clother config [provider]` | Configure provider |
| `clother list` | List profiles |
| `clother info ` | Show provider details |
| `clother test` | Test connectivity |
| `clother status` | Installation status |
| `clother install` | Install/update Clother (create/refresh symlinks) |
| `clother update` | Update to latest version |
| `clother uninstall` | Remove everything |
### Update
```bash
clother update
```
Routes to `brew upgrade clother` under Homebrew, or downloads the latest release for curl installs. Also refreshes provider symlinks.
### Changing the Default Model
Each provider launcher comes with a default model (for example `glm-5` for Z.AI). You can override it in two ways:
```bash
# One-time: pass --model through to Claude CLI
clother-zai --model glm-4.7
# Permanent: configure the provider and pick a different default
clother config zai
```
Use `clother info ` to inspect the resolved model.
### Resume
Clother keeps the resume command printed by Claude Code working across providers.
After a provider-launched session, Clother also prints a provider-aware reopen
command such as:
```bash
clother-kimi --resume
```
When resuming a non-Claude session into native Claude, Clother temporarily
sanitizes incompatible non-Claude thinking blocks for the duration of that
single launch, then restores the original session file afterwards.
## Provider Reference
### Cloud
| Command | Provider | Model | API Key |
|---------|----------|-------|---------|
| `clother-native` | Anthropic | Claude | Your subscription |
| `clother-zai` | Z.AI | GLM-5 | [z.ai](https://z.ai) |
| `clother-minimax` | MiniMax | MiniMax-M2.7 | [minimax.io](https://minimax.io) |
| `clother-kimi` | Kimi | kimi-k2.5 | [kimi.com](https://kimi.com) |
| `clother-moonshot` | Moonshot AI | kimi-k2.5 | [moonshot.ai](https://moonshot.ai) |
| `clother-deepseek` | DeepSeek | deepseek-chat | [deepseek.com](https://platform.deepseek.com) |
| `clother-mimo` | Xiaomi MiMo | mimo-v2-pro | [xiaomimimo.com](https://platform.xiaomimimo.com) |
| `clother-alibaba` | Alibaba Coding Plan | qwen3.5-plus | [modelstudio](https://modelstudio.console.alibabacloud.com) |
| `clother-alibaba-us` | Alibaba Coding Plan (US) | qwen3.5-plus | [modelstudio](https://modelstudio.console.alibabacloud.com) |
### OpenRouter (100+ Models)
OpenRouter launchers follow the `clother-or-` naming pattern.
For example, if you alias `moonshotai/kimi-k2.5` to `kimi-k25`, the launcher becomes `clother-or-kimi-k25`.
```bash
clother config openrouter # Set API key + add models
# Example: alias moonshotai/kimi-k2.5 as kimi-k25
clother-or-kimi-k25 # Use it
```
> **Tip**: Find model IDs on [openrouter.ai/models](https://openrouter.ai/models) — click the copy icon next to any model name.
> If a model doesn't work as expected, try the `:exacto` variant (e.g. `moonshotai/kimi-k2-0905:exacto`) which provides better tool calling support.
### China Endpoints
| Command | Provider | Endpoint |
|---------|----------|----------|
| `clother-zai-cn` | Z.AI China | open.bigmodel.cn |
| `clother-minimax-cn` | MiniMax China | api.minimaxi.com |
| `clother-ve` | Volcengine | ark.cn-beijing.volces.com |
| `clother-alibaba-cn` | Alibaba China | coding.dashscope.aliyuncs.com |
### Local (No API Key)
| Command | Provider | Port | Setup |
|---------|----------|------|-------|
| `clother-ollama` | Ollama | 11434 | [ollama.com](https://ollama.com) |
| `clother-lmstudio` | LM Studio | 1234 | [lmstudio.ai](https://lmstudio.ai) |
| `clother-llamacpp` | llama.cpp | 8000 | [github.com/ggml-org/llama.cpp](https://github.com/ggml-org/llama.cpp) |
```bash
# Ollama
ollama pull qwen3-coder && ollama serve
clother-ollama --model qwen3-coder
# LM Studio
clother-lmstudio --model
# llama.cpp
./llama-server --model model.gguf --port 8000 --jinja
clother-llamacpp --model
```
### Custom
```bash
clother config custom
clother-myprovider # Ready
```
### Alibaba Coding Plan Models
All Alibaba variants (`alibaba`, `alibaba-us`, `alibaba-cn`) share the same API key and support these models:
| Model |
|-------|
| `qwen3.5-plus` (default) |
| `kimi-k2.5` |
| `glm-5` |
| `MiniMax-M2.5` |
| `qwen3-coder-next` |
| `qwen3-coder-plus` |
| `qwen3-max-2026-01-23` |
| `glm-4.7` |
Switch models with `--model`:
```bash
clother-alibaba --model kimi-k2.5
clother-alibaba --model glm-5
clother-alibaba-cn --model qwen3-coder-next
```
## Troubleshooting
| Problem | Solution |
|---------|----------|
| `claude: command not found` | Install Claude CLI first |
| `clother: command not found` | Run `clother status` to see the installed bin dir, then add that directory to `PATH` and restart your shell |
| `claude --resume ...` does not behave like Clother | Restart your shell, then run `clother install` again |
| `--yolo` is not recognized | Restart your shell, then run `clother install` again |
| `API key not set` | Run `clother config` |
## VS Code Integration
Clother works with the official **Claude Code** extension.
Use Claude Code extension `2.6+`.
To configure it:
1. Open VS Code Settings (`Cmd+,` or `Ctrl+,`).
2. Search for **"Claude Process Wrapper"** (`claudeProcessWrapper`).
3. Set it to the **full path** of your chosen launcher:
- macOS: `/Users/yourname/bin/clother-zai`
- Linux: `/home/yourname/.local/bin/clother-zai`
4. Reload VS Code.
> **Note**: Requires Clother v2.6+ (which handles non-interactive shell output correctly).
## Platform Support
macOS (zsh/bash) • Linux (zsh/bash) • Windows (WSL)
## Under the Hood
### How It Works
Clother is a single Go binary. The installer downloads the release artifact,
installs `clother` into your bin directory, then creates:
- `clother-*` symlinks for providers
- a `claude` shim symlink for resume compatibility
At runtime, the binary resolves the selected profile from its own invocation
name, loads config and secrets, sets the required Anthropic-compatible
environment variables, then launches the real Claude binary outside the Clother
bin directory.
Example for `clother-zai`:
```bash
export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
export ANTHROPIC_AUTH_TOKEN="$ZAI_API_KEY"
exec /path/to/the/real/claude "$@"
```
API keys stored in `~/.local/share/clother/secrets.env` (chmod 600).
`--yolo` is accepted by Clother launchers and by the Clother `claude` shim as
shorthand for `--dangerously-skip-permissions`.
### Local Release Testing
Test the binary installer locally against a local directory or server:
```bash
CLOTHER_RELEASE_BASE_URL=http://127.0.0.1:8000 \
./scripts/install.sh install
```
## Contributors
- [@darkokoa](https://github.com/darkokoa) — China endpoints
- [@RawToast](https://github.com/RawToast) — Kimi endpoint fix
- [@sammcj](https://github.com/sammcj) — Security hardening
- [@aprakasa](https://github.com/aprakasa) — Linux compatibility fixes in `load_secrets()`
- [@luciano-fiandesio](https://github.com/luciano-fiandesio) — Install directory improvement (issue)
## Star History
[](https://www.star-history.com/#jolehuit/clother&Date)
## License
MIT © [jolehuit](https://github.com/jolehuit)