DeepSeek-TUI (CodeWhale 0.10.2) Setup 2026
CodeWhale v0.10.2 (2026-10-24), formerly DeepSeek-TUI: binary codewhale, config ~/.codewhale/config.toml. Connect QCode.cc on the anthropic or openai provider.
Need an API key? Sign up →Endpoints & base URLs →
On This Page
Last verified: 2026-10-26 · 📄 Per official docs (CodeWhale v0.10.2, released 2026-10-24 (formerly DeepSeek-TUI); the 2026-09-18 pass checked v0.9.13, released 2026-09-14)
At a glance¶
| Item | Details |
|---|---|
| Models you can use | Claude ✅ (anthropic provider, appends /v1/messages itself) · GPT ✅ · Chinese models ✅ (openai provider) · Gemini ❌ (QCode does not offer Gemini models for now) |
| Protocol & Base URL | Anthropic: https://api.qcode.cc/api · OpenAI: https://api.qcode.cc/openai/v1 |
| Where to configure | ~/.codewhale/config.toml (legacy ~/.deepseek/ is a fallback only when the new dir is absent) |
| Official docs | codewhale-hq/Codewhale |
⚠️ The project was renamed.
DeepSeek-TUIis now CodeWhale. The binary changed fromdeepseektocodewhale, and the config file moved from~/.deepseek/config.tomlto~/.codewhale/config.toml. The fallback is conditional: the official migration contract is read-with-fallback, write-to-new — reads look in~/.codewhale/first and fall back to~/.deepseek/only when that is the only directory present, while every write goes to the new directory. Also, since v0.9.0 thedeepseekanddeepseek-tuicommands were deleted; the entry points arecodewhale,codew(a convenience alias) andcodewhale-tui. The old sitedeepseek-tui.comnow 301-redirects to codewhale.net. This page's URL is unchanged.
CodeWhale is a terminal AI coding agent with dozens of first-class
providers (anthropic, openai, deepseek, ollama, vllm, openrouter and more; the docs point
at ProviderKind::ALL in the source as the real list, which grows and shrinks between versions — run
/provider to see the set in your own build). It speaks both the native Anthropic Messages
protocol and the OpenAI Chat Completions protocol, and either one can point at QCode.cc.
🔴 Read this first: Claude requires the anthropic provider¶
QCode's OpenAI-compatible endpoint does not accept Claude models — putting claude-… into
[providers.openai] returns model_not_available_on_endpoint. See the compatibility table in
Endpoints & API Paths.
| Model you want | CodeWhale provider to use | QCode base_url |
|---|---|---|
Claude (claude-opus-5 / claude-sonnet-5 …) |
anthropic |
https://api.qcode.cc/api |
GPT (gpt-6-sol …) |
openai |
https://api.qcode.cc/openai/v1 |
| GLM / Kimi / DeepSeek / Qwen | either | see the two rows above |
Why use CodeWhale with QCode¶
- Familiar TUI: Plan / Work / Operate modes, with the Ask / Auto-Review / Full Access permission postures (
Shift+Tab) and built-in MCP / Shell / Git / subagents - One API key: shares your QCode plan quota with Claude Code and Codex CLI
- Provider switching: move between anthropic / openai / ollama / vllm in the same tool
- Works well from mainland China:
asia.qcode.cc(Asia node, near Korea / Taiwan / Hong Kong) is the closest endpoint - Fully open source: MIT licensed, the config file is auditable
1. Install¶
The official first choice is the GitHub Releases install script; npm and Cargo are called secondary packaging routes in the docs:
# Officially recommended (macOS / Linux): installs the release binary
curl -fsSL https://codewhale.net/install.sh | sh
# npm - the official docs call this a secondary packaging route (Node 18+)
npm install -g codewhale
# Homebrew - full name taps and trusts in one step (the two-step form fails on Homebrew 7.x)
brew install Hmbown/deepseek-tui/codewhale
# Cargo - source build; the crate is codewhale-cli, the command it installs is codewhale
cargo install codewhale-cli --locked
Platform limits and details: official install docs.
Changed on 2026-10-26: the official install page now says the two-step form (
brew tap Hmbown/deepseek-tuithenbrew install codewhale) fails on Homebrew 7.x; use the full name above, or runbrew trust hmbown/deepseek-tuifirst. The 2026-09-18 version of this page showed the two-step form.
Verify (trust the actual output, not a version number printed in any doc):
codewhale --version
2. Configure Claude (anthropic provider)¶
Edit ~/.codewhale/config.toml:
# ~/.codewhale/config.toml
provider = "anthropic"
[providers.anthropic]
api_key = "cr_your_qcode_key"
base_url = "https://api.qcode.cc/api"
model = "claude-sonnet-5"
| Field | Meaning |
|---|---|
provider |
Set to "anthropic" at top level to default to the native Messages protocol |
api_key |
From the QCode.cc console, starts with cr_. CodeWhale sends it as x-api-key |
base_url |
Stop at /api; CodeWhale appends /v1/messages (stated in the official docs). Do not add a trailing /, and do not write /v1/messages yourself |
model |
A Claude model id QCode sells — see qcode.cc/models. The docs treat [providers.<table>].model as a provider-level override; the default model belongs in the top-level default_text_model |
From mainland China, swap the host for
https://asia.qcode.cc/api(Asia node, near Korea / Taiwan / Hong Kong). The key is unchanged.
Environment variables work instead of the config file; the docs now favour the generic CODEWHALE_* set:
export CODEWHALE_PROVIDER="anthropic"
export CODEWHALE_BASE_URL="https://api.qcode.cc/api"
export CODEWHALE_MODEL="claude-sonnet-5"
export ANTHROPIC_API_KEY="cr_your_qcode_key"
codewhale
The provider-specific variables (ANTHROPIC_BASE_URL / ANTHROPIC_MODEL) are still accepted, and so
is the codewhale --provider anthropic flag.
Changes in v0.10.1–v0.10.2 that affect this configuration (2026-10-26)¶
The binary name (codewhale) and the config path (~/.codewhale/config.toml) are unchanged in the official install and configuration docs checked on 2026-10-26. Two config-adjacent changes since v0.10.0:
- v0.10.1 — the top level now has one meaning: “A top-level
base_urlorapi_keyinconfig.tomlnow means one thing everywhere.” Old files keep working: “the keys are read as[providers.deepseek](or the vendor whose official host they name), the next save moves them there with a one-time backup and a one-line note”, andcodewhale config doctorshows what is in use (release notes). This page writes both values inside[providers.anthropic]/[providers.openai], so it is unaffected. - v0.10.2 (2026-10-24) — the official install command can pin the version:
curl -fsSL https://codewhale.net/install.sh | CODEWHALE_VERSION="v0.10.2" sh(release notes). The unpinnedcurl -fsSL https://codewhale.net/install.sh | shfrom the install page still exists.
3. Configure GPT and Chinese models (openai provider)¶
Multiple providers can coexist in one config; switch with codewhale --provider <id>:
[providers.openai]
api_key = "cr_your_qcode_key"
base_url = "https://api.qcode.cc/openai/v1"
model = "gpt-6-sol"
Stop base_url at /openai/v1; CodeWhale appends /chat/completions. If a build needs a
different suffix, the official key for that is path_suffix inside [providers.openai] — do not
smuggle it into base_url.
The four Chinese families (glm-5.2 / kimi-k3 / deepseek-v4-pro / qwen3.8-max …) work on
both endpoints, so either provider is fine. Ids are listed in
Chinese Models.
4. Available models¶
| Model id | Provider | Best for |
|---|---|---|
claude-opus-5 |
anthropic |
Heavy planning / complex architecture |
claude-sonnet-5 |
anthropic |
Everyday coding (recommended) |
claude-haiku-5-5 |
anthropic |
Quick small tasks / low cost |
gpt-6-sol |
openai |
OpenAI flagship |
glm-5.2 / kimi-k3 / deepseek-v4-pro / qwen3.8-max |
either | Cheaper Chinese options |
4.x models such as
claude-sonnet-4-6andclaude-opus-4-8are still sold. The full list and live prices are on qcode.cc/models.
List what you can call right now — note the two endpoints return different lists:
# Claude and Chinese models (Anthropic endpoint)
curl https://api.qcode.cc/v1/models -H "Authorization: Bearer cr_your_qcode_key"
# GPT (OpenAI endpoint)
curl https://api.qcode.cc/openai/v1/models -H "Authorization: Bearer cr_your_qcode_key"
5. Verify connectivity¶
KEY="cr_your_qcode_key"
# Claude (Anthropic protocol) — should return JSON containing content
curl -X POST https://api.qcode.cc/api/v1/messages \
-H "x-api-key: $KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}'
# GPT (OpenAI protocol) — should return JSON containing choices
curl -X POST https://api.qcode.cc/openai/v1/chat/completions \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-6-sol","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}'
Then launch:
codewhale
6. Troubleshooting¶
| Symptom | Cause | Fix |
|---|---|---|
model_not_available_on_endpoint |
A Claude model was put in [providers.openai] |
Use [providers.anthropic] with base_url = https://api.qcode.cc/api |
Invalid API key |
Wrong key, or stray whitespace | Check it starts with cr_ and has no leading/trailing spaces |
| 404 | Trailing slash on base_url, or wrong path prefix |
Compare against Endpoints & API Paths |
| Config edits have no effect | The official contract only falls back to the legacy directory when it is the only one present, so a stale ~/.deepseek/config.toml is rarely the cause; far more often it is credential precedence (saved config / keyring beat environment variables) or a project-level .codewhale/config.toml layered over the global one |
Run the official codewhale auth status (it prints which source wins) and /config audit; a changed provider base URL needs the model client restarted |
Related¶
- Endpoints & API Paths — protocol × model-family table
- Chinese Models — GLM / Kimi / DeepSeek / Qwen ids and paths
- Model Selection — which model for which task
- DeepSeek Harness (dsh) — an agent harness with a custom model API form
Get started with QCode
One API key for Claude Code, Codex and more — billed per token, per-model prices on qcode.cc/models