{"id":43068657,"url":"https://github.com/jolehuit/clother","last_synced_at":"2026-04-01T17:22:51.654Z","repository":{"id":321226561,"uuid":"1085007753","full_name":"jolehuit/clother","owner":"jolehuit","description":"Use multiple Claude Code–compatible LLM providers from one CLI, switching profiles instantly with simple clother-* commands.","archived":false,"fork":false,"pushed_at":"2026-03-18T11:48:11.000Z","size":753,"stargazers_count":286,"open_issues_count":1,"forks_count":31,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-19T01:03:00.763Z","etag":null,"topics":["claude","claudecode","cli","vibecoding"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jolehuit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-28T13:15:30.000Z","updated_at":"2026-03-19T00:47:39.000Z","dependencies_parsed_at":"2025-10-28T15:22:43.508Z","dependency_job_id":"e442a487-3e72-4817-9b9e-94f8cc27e0fe","html_url":"https://github.com/jolehuit/clother","commit_stats":null,"previous_names":["jolehuit/clother"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/jolehuit/clother","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolehuit%2Fclother","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolehuit%2Fclother/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolehuit%2Fclother/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolehuit%2Fclother/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jolehuit","download_url":"https://codeload.github.com/jolehuit/clother/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolehuit%2Fclother/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claudecode","cli","vibecoding"],"created_at":"2026-01-31T13:27:51.265Z","updated_at":"2026-04-01T17:22:51.648Z","avatar_url":"https://github.com/jolehuit.png","language":"Go","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/logo.png\" alt=\"Clother logo\" width=\"220\" /\u003e\n  \u003ch1\u003eClother\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eOne CLI to switch between Claude Code providers instantly.\u003c/strong\u003e\u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"MIT License\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://go.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Language-Go-00ADD8.svg\" alt=\"Go\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#platform-support\"\u003e\u003cimg src=\"https://img.shields.io/badge/Platform-macOS%20%7C%20Linux-lightgrey.svg\" alt=\"Platform macOS and Linux\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/jolehuit/clother/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/jolehuit/clother?style=social\" alt=\"GitHub stars\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/demo-fast.gif\" alt=\"Clother terminal demo\" width=\"900\" /\u003e\n\u003c/div\u003e\n\n## Why Clother?\n\nSwitching Claude Code providers usually means changing env vars, endpoints, models, and launcher scripts by hand.\nClother 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.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Core Usage](#core-usage)\n- [Provider Reference](#provider-reference)\n- [Troubleshooting](#troubleshooting)\n- [VS Code Integration](#vs-code-integration)\n- [Platform Support](#platform-support)\n- [Under the Hood](#under-the-hood)\n- [Contributors](#contributors)\n- [Star History](#star-history)\n- [License](#license)\n\n## Installation\n\n### Homebrew (macOS recommended)\n\n```bash\n# 1. Install Claude Code CLI\ncurl -fsSL https://claude.ai/install.sh | bash\n\n# 2. Install Clother via tap\nbrew tap jolehuit/tap\nbrew install clother\n\n# 3. Start using it — all launchers are ready immediately\nclother-native                          # Use your Claude Pro/Max/Team subscription\nclother-zai                             # Z.AI (GLM-5)\nclother-zai --yolo                      # Skip permission prompts\nclother-kimi                            # Kimi (kimi-k2.5)\nclother config                          # Configure providers\n```\n\nAll `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.\n\n**Update:**\n```bash\nclother update          # routes to brew upgrade under Homebrew\n# or equivalently:\nbrew upgrade clother\n```\n\n### curl (macOS / Linux)\n\n```bash\n# 1. Install Claude Code CLI\ncurl -fsSL https://claude.ai/install.sh | bash\n\n# 2. Install Clother\ncurl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash\n\n# 3. Start using it\nclother-native                          # Use your Claude Pro/Max/Team subscription\nclother-zai                             # Z.AI (GLM-5)\nclother-zai --yolo                      # Skip permission prompts\nclother-kimi                            # Kimi (kimi-k2.5)\nclother-ollama --model qwen3-coder      # Local with Ollama\nclother config                          # Configure providers\n```\n\n**Update:**\n```bash\nclother update          # downloads and installs latest release\n```\n\nThis installs:\n- `clother`\n- `clother-*` provider launchers\n- resume compatibility for `claude --resume ...`\n\n### Install Options\n\nBy default, Clother installs launchers to:\n- the same directory as your existing `claude` binary, when `claude` is already on `PATH`\n- otherwise **macOS**: `~/bin`\n- otherwise **Linux**: `~/.local/bin` (XDG standard)\n\nIf the chosen bin directory is not on `PATH`, `clother install` prints a warning with the exact directory to add.\n\nYou can override this with `--bin-dir` or the `CLOTHER_BIN` environment variable:\n\n```bash\n# Using --bin-dir flag\ncurl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash -s -- --bin-dir ~/.local/bin\n\n# Using environment variable\nexport CLOTHER_BIN=\"$HOME/.local/bin\"\ncurl -fsSL https://raw.githubusercontent.com/jolehuit/clother/main/scripts/install.sh | bash\n```\n\nClother keeps `claude --resume ...` working with Clother features after install.\n\n## Core Usage\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `clother config [provider]` | Configure provider |\n| `clother list` | List profiles |\n| `clother info \u003cprovider\u003e` | Show provider details |\n| `clother test` | Test connectivity |\n| `clother status` | Installation status |\n| `clother install` | Install/update Clother (create/refresh symlinks) |\n| `clother update` | Update to latest version |\n| `clother uninstall` | Remove everything |\n\n### Update\n\n```bash\nclother update\n```\n\nRoutes to `brew upgrade clother` under Homebrew, or downloads the latest release for curl installs. Also refreshes provider symlinks.\n\n### Changing the Default Model\n\nEach provider launcher comes with a default model (for example `glm-5` for Z.AI). You can override it in two ways:\n\n```bash\n# One-time: pass --model through to Claude CLI\nclother-zai --model glm-4.7\n\n# Permanent: configure the provider and pick a different default\nclother config zai\n```\n\nUse `clother info \u003cprovider\u003e` to inspect the resolved model.\n\n### Resume\n\nClother keeps the resume command printed by Claude Code working across providers.\n\nAfter a provider-launched session, Clother also prints a provider-aware reopen\ncommand such as:\n\n```bash\nclother-kimi --resume \u003csession-id\u003e\n```\n\nWhen resuming a non-Claude session into native Claude, Clother temporarily\nsanitizes incompatible non-Claude thinking blocks for the duration of that\nsingle launch, then restores the original session file afterwards.\n\n## Provider Reference\n\n### Cloud\n\n| Command | Provider | Model | API Key |\n|---------|----------|-------|---------|\n| `clother-native` | Anthropic | Claude | Your subscription |\n| `clother-zai` | Z.AI | GLM-5 | [z.ai](https://z.ai) |\n| `clother-minimax` | MiniMax | MiniMax-M2.7 | [minimax.io](https://minimax.io) |\n| `clother-kimi` | Kimi | kimi-k2.5 | [kimi.com](https://kimi.com) |\n| `clother-moonshot` | Moonshot AI | kimi-k2.5 | [moonshot.ai](https://moonshot.ai) |\n| `clother-deepseek` | DeepSeek | deepseek-chat | [deepseek.com](https://platform.deepseek.com) |\n| `clother-mimo` | Xiaomi MiMo | mimo-v2-pro | [xiaomimimo.com](https://platform.xiaomimimo.com) |\n| `clother-alibaba` | Alibaba Coding Plan | qwen3.5-plus | [modelstudio](https://modelstudio.console.alibabacloud.com) |\n| `clother-alibaba-us` | Alibaba Coding Plan (US) | qwen3.5-plus | [modelstudio](https://modelstudio.console.alibabacloud.com) |\n\n### OpenRouter (100+ Models)\n\nOpenRouter launchers follow the `clother-or-\u003calias\u003e` naming pattern.\nFor example, if you alias `moonshotai/kimi-k2.5` to `kimi-k25`, the launcher becomes `clother-or-kimi-k25`.\n\n```bash\nclother config openrouter               # Set API key + add models\n# Example: alias moonshotai/kimi-k2.5 as kimi-k25\nclother-or-kimi-k25                     # Use it\n```\n\n\u003e **Tip**: Find model IDs on [openrouter.ai/models](https://openrouter.ai/models) — click the copy icon next to any model name.\n\n\u003e 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.\n\n### China Endpoints\n\n| Command | Provider | Endpoint |\n|---------|----------|----------|\n| `clother-zai-cn` | Z.AI China | open.bigmodel.cn |\n| `clother-minimax-cn` | MiniMax China | api.minimaxi.com |\n| `clother-ve` | Volcengine | ark.cn-beijing.volces.com |\n| `clother-alibaba-cn` | Alibaba China | coding.dashscope.aliyuncs.com |\n\n### Local (No API Key)\n\n| Command | Provider | Port | Setup |\n|---------|----------|------|-------|\n| `clother-ollama` | Ollama | 11434 | [ollama.com](https://ollama.com) |\n| `clother-lmstudio` | LM Studio | 1234 | [lmstudio.ai](https://lmstudio.ai) |\n| `clother-llamacpp` | llama.cpp | 8000 | [github.com/ggml-org/llama.cpp](https://github.com/ggml-org/llama.cpp) |\n\n```bash\n# Ollama\nollama pull qwen3-coder \u0026\u0026 ollama serve\nclother-ollama --model qwen3-coder\n\n# LM Studio\nclother-lmstudio --model \u003cmodel\u003e\n\n# llama.cpp\n./llama-server --model model.gguf --port 8000 --jinja\nclother-llamacpp --model \u003cmodel\u003e\n```\n\n### Custom\n\n```bash\nclother config custom\nclother-myprovider                      # Ready\n```\n\n### Alibaba Coding Plan Models\n\nAll Alibaba variants (`alibaba`, `alibaba-us`, `alibaba-cn`) share the same API key and support these models:\n\n| Model |\n|-------|\n| `qwen3.5-plus` (default) |\n| `kimi-k2.5` |\n| `glm-5` |\n| `MiniMax-M2.5` |\n| `qwen3-coder-next` |\n| `qwen3-coder-plus` |\n| `qwen3-max-2026-01-23` |\n| `glm-4.7` |\n\nSwitch models with `--model`:\n\n```bash\nclother-alibaba --model kimi-k2.5\nclother-alibaba --model glm-5\nclother-alibaba-cn --model qwen3-coder-next\n```\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| `claude: command not found` | Install Claude CLI first |\n| `clother: command not found` | Run `clother status` to see the installed bin dir, then add that directory to `PATH` and restart your shell |\n| `claude --resume ...` does not behave like Clother | Restart your shell, then run `clother install` again |\n| `--yolo` is not recognized | Restart your shell, then run `clother install` again |\n| `API key not set` | Run `clother config` |\n\n## VS Code Integration\n\nClother works with the official **Claude Code** extension.\nUse Claude Code extension `2.6+`.\n\nTo configure it:\n\n1. Open VS Code Settings (`Cmd+,` or `Ctrl+,`).\n2. Search for **\"Claude Process Wrapper\"** (`claudeProcessWrapper`).\n3. Set it to the **full path** of your chosen launcher:\n   - macOS: `/Users/yourname/bin/clother-zai`\n   - Linux: `/home/yourname/.local/bin/clother-zai`\n4. Reload VS Code.\n\n\u003e **Note**: Requires Clother v2.6+ (which handles non-interactive shell output correctly).\n\n## Platform Support\n\nmacOS (zsh/bash) • Linux (zsh/bash) • Windows (WSL)\n\n## Under the Hood\n\n### How It Works\n\nClother is a single Go binary. The installer downloads the release artifact,\ninstalls `clother` into your bin directory, then creates:\n- `clother-*` symlinks for providers\n- a `claude` shim symlink for resume compatibility\n\nAt runtime, the binary resolves the selected profile from its own invocation\nname, loads config and secrets, sets the required Anthropic-compatible\nenvironment variables, then launches the real Claude binary outside the Clother\nbin directory.\n\nExample for `clother-zai`:\n\n```bash\nexport ANTHROPIC_BASE_URL=\"https://api.z.ai/api/anthropic\"\nexport ANTHROPIC_AUTH_TOKEN=\"$ZAI_API_KEY\"\nexec /path/to/the/real/claude \"$@\"\n```\n\nAPI keys stored in `~/.local/share/clother/secrets.env` (chmod 600).\n\n`--yolo` is accepted by Clother launchers and by the Clother `claude` shim as\nshorthand for `--dangerously-skip-permissions`.\n\n### Local Release Testing\n\nTest the binary installer locally against a local directory or server:\n\n```bash\nCLOTHER_RELEASE_BASE_URL=http://127.0.0.1:8000 \\\n  ./scripts/install.sh install\n```\n\n## Contributors\n\n- [@darkokoa](https://github.com/darkokoa) — China endpoints\n- [@RawToast](https://github.com/RawToast) — Kimi endpoint fix\n- [@sammcj](https://github.com/sammcj) — Security hardening\n- [@aprakasa](https://github.com/aprakasa) — Linux compatibility fixes in `load_secrets()`\n- [@luciano-fiandesio](https://github.com/luciano-fiandesio) — Install directory improvement (issue)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=jolehuit/clother\u0026type=Date)](https://www.star-history.com/#jolehuit/clother\u0026Date)\n\n## License\n\nMIT © [jolehuit](https://github.com/jolehuit)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjolehuit%2Fclother","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjolehuit%2Fclother","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjolehuit%2Fclother/lists"}