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.

Updated 2026-11-10

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-TUI is now CodeWhale. The binary changed from deepseek to codewhale, and the config file moved from ~/.deepseek/config.toml to ~/.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 the deepseek and deepseek-tui commands were deleted; the entry points are codewhale, codew (a convenience alias) and codewhale-tui. The old site deepseek-tui.com now 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-tui then brew install codewhale) fails on Homebrew 7.x; use the full name above, or run brew trust hmbown/deepseek-tui first. 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_url or api_key in config.toml now 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”, and codewhale config doctor shows 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 unpinned curl -fsSL https://codewhale.net/install.sh | sh from 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-6 and claude-opus-4-8 are 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

Get started with QCode

One API key for Claude Code, Codex and more — billed per token, per-model prices on qcode.cc/models

Enterprise →