CodeWhale is the canonical project, command, npm package, and
release-asset name. The legacy npm packagedeepseek-tuiis
deprecated and receives no further releases. Users coming from
v0.8.x legacydeepseek/deepseek-tuinames should migrate
withdocs/REBRAND.md.
Install
Recommended — npm (one command, both binaries)
npm install -g codewhaleThe wrapper downloads both binaries from this Release and places them in the same directory.
Docker / GHCR
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v ~/.deepseek:/home/codewhale/.deepseek \
ghcr.io/hmbown/codewhale:v0.8.58The image ships the codewhale dispatcher and codewhale-tui runtime. The latest tag is also updated on release.
Cargo (Linux / macOS)
cargo install codewhale-cli codewhale-tui --lockedBoth crates are required — codewhale-cli produces the codewhale dispatcher and codewhale-tui produces the interactive runtime that the dispatcher delegates to. Installing only one binary will fail at runtime with a MISSING_COMPANION_BINARY error.
Manual download — platform archives (recommended)
Each archive below contains both the codewhale dispatcher and codewhale-tui runtime, plus an install script:
| Platform | Archive | Install script |
|---|---|---|
| Linux x64 | codewhale-linux-x64.tar.gz
| install.sh
|
| Linux ARM64 | codewhale-linux-arm64.tar.gz
| install.sh
|
| Linux RISC-V | codewhale-linux-riscv64.tar.gz
| install.sh
|
| macOS x64 | codewhale-macos-x64.tar.gz
| install.sh
|
| macOS ARM | codewhale-macos-arm64.tar.gz
| install.sh
|
| Windows x64 (installer) | CodeWhaleSetup.exe
| NSIS setup |
| Windows x64 | codewhale-windows-x64.zip
| install.bat
|
| Windows x64 (portable) | codewhale-windows-x64-portable.zip
| — |
Unix (Linux / macOS):
tar xzf codewhale-<platform>.tar.gz
cd codewhale-<platform>
./install.shWindows:
- For the installer path, run
CodeWhaleSetup.exe; it installs both binaries under%LOCALAPPDATA%\Programs\CodeWhale\binand adds that directory to the current-user PATH. - Extract
codewhale-windows-x64.zip - Run
install.bat(copies to%USERPROFILE%\bin) - Add
%USERPROFILE%\binto your PATH
The portable Windows archive skips the install script — extract and run from any directory. The NSIS installer is currently unsigned and may trigger Windows SmartScreen until a signing certificate is wired into the release pipeline.
Individual binaries are also attached below for scripting and the npm wrapper. The legacy npm package deepseek-tui is deprecated and is not republished. For migration from v0.8.x legacy binary names, see docs/REBRAND.md.
Verify (recommended)
Download the checksum manifests from this Release and verify:
# Linux — archive bundles
sha256sum -c codewhale-bundles-sha256.txt
# Linux — individual binaries
sha256sum -c codewhale-artifacts-sha256.txt
# macOS
shasum -a 256 -c codewhale-bundles-sha256.txt
shasum -a 256 -c codewhale-artifacts-sha256.txtWhat's in v0.8.58
Added
- Native Anthropic provider. A dedicated Messages API adapter
(/v1/messageswithx-api-keyauth) replaces OpenAI-dialect shims for
Claude models: adaptive thinking withoutput_config.effortshaping,
prompt-cache breakpoints (capped at 4, earliest dropped), signed-thinking
replay viasignature_delta, normalized cache-hit/miss usage telemetry,
and SSE error envelopes.claude-opus-4-8,claude-sonnet-4-6, and
claude-haiku-4-5join the model registry; configure with
ANTHROPIC_API_KEY(#3014). - Hooks v2.
tool_call_beforehooks can now return a JSON decision —
{"decision": "allow"|"deny"|"ask", "reason", "updatedInput", "additionalContext"}— with deny > ask > allow precedence across multiple
hooks, last-writer-wins input rewriting, and concatenated context. Exit
code 2 remains a legacy hard deny. Hooks support glob matchers and
project-local.codewhale/hooks.toml(#3026). - Clickable sidebar. Background-job rows show/cancel on click, the
Ctrl+K hint row runs/jobs cancel-all, and agent rows open/subagents;
row actions are built in the same pass as the rendered lines so a click
can never target the wrong job (#3028). - OSC 8 out-of-band hyperlink infrastructure with per-region open/close
sequences that survive partial redraws (#3029). codewhale execgains--allowed-tools,--disallowed-tools(deny wins),
--max-turns, and--append-system-prompt(#3027).- Constitution prompt source: YAML source-of-truth plus Python renderer for
the system prompt, with the active prompt now served from
constitution.md(#3015, renderer reconciliation still tracked). - Agent-task issue template, labels, and runner protocol (#3021); remote
smoke-test droplet loop hardening — gh CLI, swapfile, agent sessions
(#3022).
Changed
- Sub-agent routing is provider-aware. DeepSeek ids are no longer
hardcoded into model validation; routing works from per-provider
big/cheap candidates, the network router is skipped when a provider has
no cheap tier, and spawn-time model requests are validated against the
active provider (#3018). - Model-specific facts in the system prompt (context window, sub-agent
pricing, thinking notes, architecture characteristics) are now templated
per-model instead of hardcoded DeepSeek V4 claims, in bothbase.mdand
constitution.md(#3025). - Provider capability lookups for Moonshot/OpenAI/Atlascloud resolve from
per-model registry rows (bare and vendor-prefixed ids) instead of
hardcoded 64K-era floors (#3023). - Reasoning-effort now reaches Atlascloud (DeepSeek dialect), Moonshot
(thinkingenable/disable), and Ollama (thinkparam) (#3024); Moonshot/
Kimi models joined the reasoning-content provider and model gates (#3016). - Transcript polish: compact tool-call cells without boilerplate (#3031),
internal turn/agent ids hidden behind stable labels (#3030), and Ctrl+B
now backgrounds the running foreground shell directly instead of opening
a menu (#3032). - The Tasks sidebar separates "Model reasoning" from "Background commands",
andauth listreports the same active-credential source as
auth statusfor openai-codex.
Fixed
- TUI freeze under sub-agent load. Rapid
AgentProgressevents
saturated the render loop and starved terminal input; progress-driven
repaints are now throttled to one per 100ms (#3033). - Hooks on Windows. Hook commands were passed to
cmd /Cthrough
CRT-style argument quoting, which injected literal\"sequences that
cmd.exe never unescapes — JSON decisions could not parse. Commands now
reach cmd.exe verbatim viaraw_arg. - Codex Responses: assistant tool results are converted to
function_call_outputitems (multi-turn tool calling previously broke),
tool schemas are sanitized for the Responses API, andmaximumeffort
maps toxhigh(#3019, #3017 — both partially; retry/backoff and
per-tool strict mode remain open). - Better tool-denial and provider error messages harvested from PR #2933
(#3020).
Contributor credits for this release live in the changelog entry above —
thank you to everyone whose reports, PRs, reviews, and reproductions shaped it.
See CHANGELOG.md for full notes and docs/CHANGELOG_ARCHIVE.md for older releases.