CodeWhale First Run Setup: Installation, Authentication, and Verification Guide
Run npm install -g codewhale, execute codewhale in your project directory to generate ~/.codewhale/config.toml, set your API key with codewhale auth set --provider deepseek, and verify with codewhale doctor to complete the first run setup.
CodeWhale is an AI-augmented coding assistant shipped as two binaries—the dispatcher (codewhale) and the terminal UI runtime (codewhale-tui). This guide walks through the complete first run setup process, from binary installation to environment verification, as implemented in the Hmbown/CodeWhale repository.
Phase 1: Installing the CodeWhale Binaries
CodeWhale requires both the dispatcher and TUI runtime binaries available on your PATH. The dispatcher locates its TUI partner at runtime via a simple PATH lookup, and they must be version-matched according to docs/INSTALL.md.
Install via npm (Recommended)
The npm package pulls pre-built binaries and writes them to $(npm prefix -g)/bin. The post-install script enforces version matching via a SHA-256 manifest.
npm install -g codewhale
codewhale # triggers the post-install download of the matching binaries
Install via Cargo
Build from source for any Tier-1 Rust target. This installs both components separately:
cargo install codewhale-cli --locked # dispatcher
cargo install codewhale-tui --locked # TUI runtime
Install via Docker
Run in an isolated container with persistent volumes for configuration:
docker volume create codewhale-home
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v codewhale-home:/home/codewhale/.codewhale \
-v "$PWD:/workspace" -w /workspace \
ghcr.io/hmbown/codewhale:latest
Alternative methods including Homebrew, Nix, Windows installers, and manual download are documented in docs/INSTALL.md.
Phase 2: Bootstrapping the Runtime and Configuration
Navigate to your project directory and launch the dispatcher. On first run, CodeWhale reads or creates the runtime configuration.
cd /path/to/your/project
codewhale
The dispatcher performs the following initialization sequence defined in docs/GUIDE.md:
- Creates
~/.codewhale/config.tomlif it does not exist - Falls back to legacy
~/.deepseek/config.tomlfor backward compatibility
Configuration Hierarchy
The runtime resolves configuration using the following precedence order:
- Environment variables (highest priority)
~/.codewhale/config.toml(new standard location)~/.deepseek/config.toml(legacy location)
This layered approach allows temporary overrides without editing files.
Phase 3: Authentication and Provider Setup
CodeWhale defaults to the DeepSeek provider. You must supply a valid API key before initiating your first task.
Interactive Authentication
Run the auth command to persist credentials to the configuration file:
codewhale auth set --provider deepseek
Environment Variable Method
For CI pipelines or Docker containers, export the key before running:
export DEEPSEEK_API_KEY="your-key"
codewhale
Provider definitions and alternative endpoints are documented in docs/PROVIDERS.md. The same flow works for any OpenAI-compatible endpoint once the proper provider ID is set.
Phase 4: Verifying Your Installation
Run the health-check command to validate the binary pair, stored configuration, and provider credentials:
codewhale doctor # human-readable report
codewhale doctor --json # machine-readable JSON for issue filing
A successful verification confirms:
- Both
codewhaleandcodewhale-tuiare discoverable onPATH - The stored API key is valid for the chosen provider
- No conflicting environment variables override the saved config
A non-zero exit code signals a problem that must be resolved before productive use, as noted in docs/INSTALL.md.
Understanding the Dispatcher-Runtime Architecture
The dispatcher spawns the TUI runtime via process execution. Key architectural constraints include:
- PATH Dependency: The dispatcher expects
codewhale-tuiavailable in the samePATHcontext - Version Coupling: Binaries must be version-matched. The npm post-install script enforces this via SHA-256 checksums against a manifest
- Runtime Spawning: When you execute
codewhale, it delegates terminal rendering to thecodewhale-tuibinary
After successful verification, you are ready to start your first task:
codewhale ask "What files define the CLI entry point?"
Summary
- CodeWhale consists of two binaries: the dispatcher (
codewhale) and the TUI runtime (codewhale-tui), which must be version-matched and available onPATH - Configuration resides in
~/.codewhale/config.toml, with fallback support for the legacy~/.deepseek/config.tomllocation - Authentication defaults to DeepSeek via
codewhale auth set --provider deepseekor theDEEPSEEK_API_KEYenvironment variable - Always verify your installation using
codewhale doctorbefore starting productive work to ensure binary compatibility and valid credentials
Frequently Asked Questions
Where does CodeWhale store its configuration files?
CodeWhale stores runtime configuration in ~/.codewhale/config.toml. If this file does not exist on first launch, the dispatcher creates it automatically. For backward compatibility, CodeWhale will read from the legacy ~/.deepseek/config.toml location if the new path is empty, as documented in docs/GUIDE.md.
Can I use CodeWhale with OpenAI-compatible providers other than DeepSeek?
Yes. While DeepSeek is the default provider, you can configure any OpenAI-compatible endpoint by setting the appropriate provider ID via codewhale --provider <id> or the /provider command inside the TUI. Refer to docs/PROVIDERS.md for available provider IDs and their specific credential requirements.
How do I fix "binary not found" errors during first run?
Ensure both codewhale and codewhale-tui are installed and available on your PATH. If installing via npm, run codewhale once to trigger the post-install download of the TUI binary. For Cargo installations, verify that $HOME/.cargo/bin is in your PATH. Run codewhale doctor to diagnose specific binary discovery issues.
Is it safe to commit the ~/.codewhale/config.toml file to version control?
No. This file typically contains sensitive API keys and provider credentials. Keep it in your home directory and add it to your .gitignore if working within a repository. Use environment variables like DEEPSEEK_API_KEY for CI environments rather than committing the configuration file.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →