github Hmbown/CodeWhale v0.8.61

4 hours ago

CodeWhale is the canonical project, command, npm package, and
release-asset name. The legacy npm package deepseek-tui is
deprecated and receives no further releases. Users coming from
v0.8.x legacy deepseek / deepseek-tui names should migrate
with docs/REBRAND.md.

Install

Recommended — npm (one command, both binaries)

npm install -g codewhale

The 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.61

The 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 --locked

Both 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.sh

Windows:

  • For the installer path, run CodeWhaleSetup.exe; it installs both binaries under %LOCALAPPDATA%\Programs\CodeWhale\bin and adds that directory to the current-user PATH.
  • Extract codewhale-windows-x64.zip
  • Run install.bat (copies to %USERPROFILE%\bin)
  • Add %USERPROFILE%\bin to 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.

Each platform also has bare, unarchived binaries attached below (codewhale-<platform> and codewhale-tui-<platform>) — these are what the npm wrapper and the in-app codewhale update download, whereas the .tar.gz / .zip archives above are the recommended manual download and additionally bundle an install script. 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.txt

What's in v0.8.61

This release lands the runtime control plane for multi-agent work: the TUI stays
responsive while sub-agents run, sub-agents converge toward fleet-style durable workers
with per-role model routing, and provider/model routes are isolated per session. It also
folds in several community contributions.

Added

  • WhaleFlow runtime foundations — worker runtime profiles (role / permissions / shell /
    tools / model-route, with non-escalating child derivation), a cross-provider model registry
    with offline catalog hydration, and provider-readiness / context-budget / provider-adapter /
    resource-telemetry services. (#3217, #3071, #3072, #3073)
  • Per-role, heterogeneous-model sub-agent routing — sub-agents can be assigned a model and
    provider per role (e.g. scout vs. synthesis; verifiers route to a fast model). (#2027, #1768)
  • Durable goal mode — cross-turn goal progress with token/time accounting and a
    verifier-as-judge gate before a goal may complete. (#3215, #891, #1976, #2058, #2029)
  • Parent-visible worker interaction contract — a recommended action per worker. (#3226)
  • Maintainer GitHub workflow skills; ACP registry submission prepared. (#3192)
  • OpenAI-compatible /v1/chat/completions endpoint on the legacy app-server HTTP transport,
    provider-neutral, with model registry resolution and configured-credential forwarding.

Changed

  • Sub-agents converge toward fleet-style durable workers — real worker lifecycle states are
    projected to the sidebar instead of a hardcoded "running", and a sub-agent returns a structured
    needs-input checkpoint instead of parking. (#3226, #3096, #3154)
  • The per-turn runtime tag exposes capability posture instead of human-facing mode labels. (#3213)
  • Independent shell and verifier work defaults to background jobs with nonblocking waits and a
    completion notification; blocking now requires an explicit wait. (#3212)
  • Sub-agent launches now expose explicit model_strength and thinking controls to the model
    instead of hidden child-model auto-routing; explore work is documented as a good fit for
    faster models and thinking: "off".
  • Plan mode is strictly read-only (no shell tools), consistent with its runtime posture.
  • /swarm is gated behind the durable worker substrate. (#3218)
  • Legacy deepseek install/update path resolves to codewhale. (#2960, #2924, #2917)

Fixed

  • TUI freeze when multiple sub-agents spawn (launch blocker) — the terminal input pump runs
    off the render thread, AgentProgress events are coalesced, and sub-agents no longer park on
    input with no orchestrator to answer; a six-worker stress test guards input/render/cancel
    liveness. (#3216, #3096)
  • Idle sub-agent completion notifications now resume the parent turn instead of waiting for a
    later user message; thanks @giovanni-paolilla for the deadlock report (#3266).
  • Provider/model route isolation — provider and model state is session-local, and a
    mismatched provider+model tuple is rejected at the route boundary. (#3227)
  • Route-effective context-window metadata, over-limit preflight, and bounded recovery from
    context_length_exceeded instead of re-looping. (#3204)
  • Synchronous tools (file_search, grep_files, list_dir) are cancellable and no longer hold
    a turn open against cancellation. (#1791)
  • MCP stdio proxy startup prompts no longer strand YOLO / non-interactive runs. (#2475)
  • Stalled / failed background-shell recovery; configurable sub-agent API timeout. (#1737, #1786, #1806)
  • Composer: reliable queued steering + Ctrl+S send (#3203, #3224); footer busy/idle indicator
    (#2982); CJK word-wrap (#963); clickable sidebar stop targets (#3028); live token throughput
    (#3190); auto-expiring terminal sub-agent cards (#3078).
  • Linux glibc preflight in the installer/update path with a clear error. (#3207, #1067)
  • Self-update retries transient GitHub metadata/asset failures and falls back from the GitHub
    REST API to the public releases/latest redirect before constructing release asset URLs. (#3232)
  • Provider picker lists providers in neutral alphabetical order instead of hard-coding DeepSeek first; the active provider stays pre-selected. (#3076)
  • Work sidebar no longer shows stale phase now: / phase next: strategy rows once the checklist
    is 100% complete.
  • Plan mode no longer shortcuts investigation for requests that name a repository, URL, version,
    release, build state, benchmark, bug, PR, issue, API surface, or local code path.
  • Oversized pasted text stays editable in the composer, with a file backup appended at submit
    time for model access; thanks @idling11 (#3267, closes #3263).
  • Bare digit keys 1-8 now insert text instead of firing hotbar slots; use Alt+digit for
    hotbar actions. Thanks @wjq2026 for the report and @DieMoe233 for the paste-path note (#3243).
  • Kimi/Moonshot tool schemas normalize empty function parameters to a root object schema; thanks
    @jghwwnq for the provider repro (#3265).
  • Novita defaults to its OpenAI-compatible /openai/v1 endpoint so chat completions no longer
    404 out of the box; thanks @buko for the report and endpoint verification (#3255).
  • Dependency security: ws pinned to 8.21.0 across npm packages to close remote memory-exhaustion
    DoS (dependabot).

Community contributions

  • Non-DeepSeek model pricing — thanks @mvanhorn (#3201)
  • Telegram polling transport — thanks @cyq1017 (#3195)
  • Mobile event history — thanks @RobertEmprechtinger (#3220)
  • Runtime-API session save — thanks @gaord (#3199)
  • Whale-accent rename — thanks @nightt5879 (#3197)
  • DEEPSEEK_BASE_URL / MODEL honored in exec — thanks @hongchen1993 (#3221)
  • VS Code read-only API documentation — thanks @cyq1017 (#3013)
  • Atomic ask-only permission rule persistence — thanks @greyfreedom (#3233)
  • DeepInfra provider support and release-surface follow-through — thanks @idling11 (#3235, closes #3231) and @nightt5879 (#3236)
  • Editable oversized paste composer flow — thanks @idling11 (#3267, closes #3263)
  • WeChat bridge (integrations/weixin-bridge via Feishu + Tencent OpenClaw) — thanks @VincentCorleone (#3206)
  • Config robustness: atomic permission-rule save, one-time config .bak backup before the first changed write, CODEWHALE_HOME as primary config home, and accepting the dispatcher-written config shape (camelCase aliases + [features.enabled] table) so legacy/dual-written configs parse cleanly
  • Dependency/CI bumps: docker login/qemu actions, softprops gh-release, download-artifact, vitest, @opennextjs/cloudflare, form-data, js-yaml, dompurify, ws

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.

Don't miss a new CodeWhale release

NewReleases is sending notifications on new releases.