An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          


Clother logo

Clother


One CLI to switch between Claude Code providers instantly.



MIT License
Go
Platform macOS and Linux
GitHub stars




Clother terminal demo

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

[![Star History Chart](https://api.star-history.com/svg?repos=jolehuit/clother&type=Date)](https://www.star-history.com/#jolehuit/clother&Date)

## License

MIT © [jolehuit](https://github.com/jolehuit)