>thevibeworks/deepseek-cli

Install

A single static binary with no runtime dependencies. Pick whichever of these you trust most.

One line

Detects your platform, downloads the matching release, installs the binary and both aliases:

curl -sL https://github.com/thevibeworks/deepseek-cli/raw/main/install.sh | sh

Installs to /usr/local/bin; set PREFIX=$HOME/.local to install without sudo. If you would rather read it first — and you should, for anything piped to a shell — it is forty lines.

Release binaries

From Releases, for macOS, Linux and Windows on both amd64 and arm64:

# macOS (Apple Silicon)
curl -sL https://github.com/thevibeworks/deepseek-cli/releases/latest/download/deepseek_darwin_arm64.tar.gz | tar xz
sudo mv deepseek /usr/local/bin/

# Linux (x86_64)
curl -sL https://github.com/thevibeworks/deepseek-cli/releases/latest/download/deepseek_linux_amd64.tar.gz | tar xz
sudo mv deepseek /usr/local/bin/

Every release ships a checksums.txt.

Go

go install github.com/thevibeworks/deepseek-cli/cmd/deepseek@latest

Requires Go 1.25 or later. The binary lands in $(go env GOPATH)/bin.

ds and dscli

deepseek is eight characters to type many times a day. The binary answers to ds and dscli as well.

These are symlinks to the same binary, not shell aliases, so they work in scripts, cron, Makefiles and anywhere else a shell alias would not exist. The binary notices which name invoked it, so ds --help says ds.

ds chat "why is the sky blue"
ds usage --since 7d

The installer and make install create them. By hand:

sudo ln -sf deepseek /usr/local/bin/ds
sudo ln -sf deepseek /usr/local/bin/dscli

The API key

Get one from platform.deepseek.com, then either put it in the environment:

export DEEPSEEK_API_KEY=sk-...

or, to keep it out of the environment entirely, in a file:

mkdir -p ~/.config/deepseek && chmod 700 ~/.config/deepseek
printf 'sk-...' > ~/.config/deepseek/api_key
chmod 600 ~/.config/deepseek/api_key

Precedence is --api-key, then $DEEPSEEK_API_KEY, then the file.

Configuration

VariablePurposeDefault
DEEPSEEK_API_KEYAPI key
DEEPSEEK_BASE_URLOverride the base URL for proxies and gatewayshttps://api.deepseek.com
DEEPSEEK_CONFIG_DIRWhere the key file lives~/.config/deepseek
DEEPSEEK_STATE_DIRUsage ledger and saved conversations~/.local/state/deepseek

Both directories respect XDG_CONFIG_HOME and XDG_STATE_HOME.

careful

Setting --base-url sends your API key and your prompts to that host instead of DeepSeek. Only point it at a gateway you control.

Verify

ds check

Calls all six endpoints once with a one-token cap — the whole check costs a fraction of a cent. Exit code 2 means the key is missing or rejected, 3 means the balance is exhausted.

Shell completion

ds completion zsh  > "${fpath[1]}/_deepseek"    # zsh
ds completion bash > /etc/bash_completion.d/deepseek
ds completion fish > ~/.config/fish/completions/deepseek.fish