Files
codewhale/npm/codewhale/README.md
T
Hunter Bown 23daefbe24 feat(npm): publish as codewhale; keep deepseek-tui as deprecation shim
Rename the npm wrapper directory and package from `deepseek-tui` to
`codewhale`. Move under `npm/codewhale/`:
  - `package.json` renamed (name, bin, internal field) — keeps a
    `deepseekBinaryVersion` fallback so old metadata still works.
  - Bin entry points renamed to `bin/codewhale.js` and
    `bin/codewhale-tui.js`; they spawn the corresponding canonical
    binaries via the wrapper.
  - `scripts/artifacts.js` switches to the canonical asset-name matrix
    (`codewhale-*`, `codewhale-tui-*`) and `codewhale-artifacts-sha256.txt`.
  - `scripts/run.js` exports `runCodewhale` and `runCodewhaleTui`; the
    legacy `runDeepseek` exports are gone since nothing else inside the
    package depended on them.
  - `scripts/install.js`, `verify-release-assets.js`, `preflight-glibc.js`
    update brand-mention strings + User-Agent headers. Env vars
    (`DEEPSEEK_TUI_*`, `DEEPSEEK_*`) are explicitly anti-scope and are
    left in place.
  - Tests retargeted at the canonical asset names; all 19 still pass.
  - README rewritten with the new install command and a deprecation
    note about the old package.

Create a one-release deprecation shim at `npm/deepseek-tui/`:
  - `package.json` with no `bin`, just a postinstall script that
    prints a clear message telling the user to install `codewhale`
    instead.
  - `README.md` with the same migration note.
  - Will be removed in v0.9.0 (or whenever Hunter retires the shims).

Release-side scripts in `scripts/release/` follow the rename:
  - `prepare-local-release-assets.js` now requires `npm/codewhale/...`
    and copies the canonical `codewhale*` binaries.
  - `npm-wrapper-smoke.js` smokes the renamed package.
  - `check-versions.sh` reads `npm/codewhale/package.json` for the
    primary check and additionally pins the legacy shim package to
    the same version.
  - `check-published.sh` queries `codewhale@<version>` (with
    `codewhaleBinaryVersion` lookup that falls back to the legacy
    `deepseekBinaryVersion` field).
  - `.github/workflows/auto-tag.yml` watches both `npm/codewhale/` and
    `npm/deepseek-tui/` package.json for auto-tag triggers.

Verified:
  - `npm test` inside `npm/codewhale/` passes 19/19.
  - `npm install --dry-run --ignore-scripts` succeeds for both
    `npm/codewhale/` and `npm/deepseek-tui/`.
  - `scripts/release/check-versions.sh` reports OK.
  - Rust gates re-run: `cargo check`, `cargo fmt --check`,
    `cargo clippy -- -D warnings`, all clean.

No `npm publish` is run from this change — Hunter publishes manually
when the rebrand is ready to ship.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 11:11:53 -05:00

3.6 KiB

codewhale

Install and run the codewhale and codewhale-tui binaries from GitHub release artifacts.

Previously published as deepseek-tui. See docs/REBRAND.md in the upstream repository for the migration notes; the legacy deepseek-tui npm package still exists as a deprecation shim for one release cycle.

Install

npm install -g codewhale
# or
pnpm add -g codewhale

For project-local usage:

npm install codewhale
npx codewhale --help

postinstall tries to download platform binaries into bin/downloads/ and exposes codewhale and codewhale-tui commands. If GitHub release assets are temporarily unreachable, install continues and the wrapper retries the download on first run.

First run

codewhale login --api-key "YOUR_DEEPSEEK_API_KEY"
codewhale doctor
codewhale

The codewhale facade and codewhale-tui binary share ~/.deepseek/config.toml for DeepSeek auth and default model settings. Common TUI commands are available directly through the facade, including codewhale doctor, codewhale models, codewhale sessions, and codewhale resume --last.

The app talks to DeepSeek's documented OpenAI-compatible Chat Completions API. Set DEEPSEEK_BASE_URL only if you need the China endpoint or DeepSeek beta features such as strict tool mode, chat prefix completion, or FIM completion.

NVIDIA NIM-hosted DeepSeek V4 Pro is also supported:

codewhale auth set --provider nvidia-nim --api-key "YOUR_NVIDIA_API_KEY"
codewhale --provider nvidia-nim

For a single process, set DEEPSEEK_PROVIDER=nvidia-nim and NVIDIA_API_KEY or NVIDIA_NIM_API_KEY (with DEEPSEEK_API_KEY as a compatibility fallback). The NIM default model is deepseek-ai/deepseek-v4-pro and the default base URL is https://integrate.api.nvidia.com/v1. With --provider nvidia-nim, --model deepseek-v4-flash maps to deepseek-ai/deepseek-v4-flash.

Supported platforms

Prebuilt binaries for the GitHub release are downloaded automatically:

  • Linux x64
  • Linux arm64 (v0.8.8+)
  • macOS x64 / arm64
  • Windows x64

Other platform/architecture combinations (musl, riscv64, FreeBSD, …) aren't shipped as prebuilts. Unsupported platforms, checksum failures, and glibc compatibility problems still fail with a clear error pointing you at cargo install codewhale-cli codewhale-tui --locked and the full docs/INSTALL.md build-from-source guide.

Configuration

  • Default binary version comes from codewhaleBinaryVersion in package.json (with deepseekBinaryVersion as a backward-compat fallback).
  • Set DEEPSEEK_TUI_VERSION or DEEPSEEK_VERSION to override the release version.
  • Set DEEPSEEK_TUI_GITHUB_REPO or DEEPSEEK_GITHUB_REPO to override the source repo (defaults to Hmbown/DeepSeek-TUI).
  • Set DEEPSEEK_TUI_RELEASE_BASE_URL to use an internal or mirrored release-asset directory when GitHub Releases is unavailable. The directory must contain codewhale-artifacts-sha256.txt and the platform binaries.
  • Set DEEPSEEK_TUI_FORCE_DOWNLOAD=1 to force download even when the cached binary is already present.
  • Set DEEPSEEK_TUI_DISABLE_INSTALL=1 to skip install-time download.
  • Set DEEPSEEK_TUI_OPTIONAL_INSTALL=1 to make install-time retryable download failures warn and exit 0 instead of failing npm install.

Release integrity

  • npm publish runs a release-asset check to ensure all required binary assets exist for the target GitHub release before publishing.
  • Install-time downloads are verified against the release checksum manifest before the wrapper marks them executable.