* fix(config): keep DeepSeek beta endpoint for legacy cn alias * fix(ci): filter download-artifact to deepseek* pattern Prevents the release aggregation job from picking up non-binary artifacts (e.g. Docker .dockerbuild cache layers) that cause the checksum manifest to include spurious entries and the Release to carry files it shouldn't. * fix(tui): enable focus events to restore IME after app-switch On macOS, switching away (Cmd+Tab) and back suspends the IME compositor. Without focus-event handling, the TUI never signals readiness to the terminal, so CJK input methods (Pinyin, Zhuyin, etc.) stop working. - EnableFocusChange on startup so the terminal reports FocusGained/FocusLost - Re-push KeyboardEnhancementFlags on FocusGained (some terminals reset the enhanced keyboard mode on focus-loss) - DisableFocusChange on shutdown for clean terminal handoff * chore: cargo fmt * docs: add DataWhale and DeepSeek to acknowledgments * docs: fix DeepSeek name etymology in acknowledgments * fix(tui): recapture viewport on focus restore * docs: thank DeepSeek and DataWhale bilingually
2.7 KiB
Docker
DeepSeek-TUI publishes a multi-arch Linux image to GitHub Container Registry for each release.
docker pull ghcr.io/hmbown/deepseek-tui:latest
Quick start
Run the published image with your existing config directory mounted:
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v ~/.deepseek:/home/deepseek/.deepseek \
ghcr.io/hmbown/deepseek-tui:latest
Use a pinned release tag for reproducible installs:
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v ~/.deepseek:/home/deepseek/.deepseek \
ghcr.io/hmbown/deepseek-tui:v0.8.19
Local build
Build the image locally from a checkout:
docker build -t deepseek-tui .
Then run it with your existing config directory mounted:
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v ~/.deepseek:/home/deepseek/.deepseek \
deepseek-tui
Docker Hub publishing is not configured; GHCR is the supported prebuilt image registry.
Environment variables
| Variable | Required | Description |
|---|---|---|
DEEPSEEK_API_KEY |
yes | DeepSeek API key |
DEEPSEEK_BASE_URL |
no | Custom API base URL (e.g. https://api.deepseek.com) |
DEEPSEEK_NO_COLOR |
no | Set to 1 to disable terminal colour output |
Volumes
Mount ~/.deepseek to persist sessions, config, skills, memory, and the offline queue
across container restarts:
-v ~/.deepseek:/home/deepseek/.deepseek
Without this mount the container starts fresh each time.
Non-interactive / pipeline usage
When stdin is not a TTY, deepseek drops to the dispatcher's one-shot mode
(deepseek -c "…"). Pipe a prompt on stdin:
echo "Explain the Cargo.toml in structured English." | \
docker run --rm -i -e DEEPSEEK_API_KEY ghcr.io/hmbown/deepseek-tui:latest
Building locally
# Single platform (your host architecture)
docker build -t deepseek-tui .
# Multi-platform (requires a builder with emulation)
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t deepseek-tui .
Devcontainer
The repository includes a .devcontainer/devcontainer.json
configuration for VS Code / GitHub Codespaces. It pre-installs the Rust toolchain,
rust-analyzer, and the deepseek binary. Open the repo in a devcontainer to get a
ready-to-use development environment.
Release status
Docker image publishing is part of the release gate. The image is published to
GHCR for linux/amd64 and linux/arm64 with semver tags plus latest.