Two related TUI affordances bundled because they share ui.rs and the ui/tests.rs file. #30 — Reasoning-content replay telemetry, end-to-end: * models.rs — Usage gains reasoning_replay_tokens: Option<u32>. * client.rs — sanitize_thinking_mode_messages now returns the approximate replay-token count (~4 chars/token); the streaming pipeline overlays it onto the parsed MessageDelta usage so the server-reported and client-estimated numbers reach the engine together. * app.rs — App stores last_reasoning_replay_tokens. * ui.rs — TurnComplete handler copies the value into the App; new footer_reasoning_replay_spans renders an `rsn N.Nk` chip in the footer next to the cache hit-rate, warning-coloured when replay tokens exceed 50% of the input budget. * ui/tests.rs — covers chip-on, chip-hidden-when-zero, and the sanitizer's None-on-non-thinking-model path. #28 — Tab-complete @file mentions against the workspace: * ui.rs — adds partial_file_mention_at_cursor (with a guard against `user@example.com`-style false positives) and try_autocomplete_file_mention. Walks the workspace via the existing ignore::WalkBuilder, ranks prefix matches above substring matches, applies the unique match outright, extends to the longest common prefix when multiple match, and surfaces ambiguous candidates via the status line. Wired into the existing Tab handler after the slash-command branch. * ui/tests.rs — covers cursor-inside-mention extraction, email guard, prefix vs substring ranking, single-match application, common-prefix extension, no-match status, and the no-mention-no-op path. The mention-expansion path that ships file contents to the model is unchanged — this is purely a discovery aid for typing the path. Inline-contents and a fuzzy popup picker are queued for v0.5.2. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DeepSeek TUI
A terminal-native coding agent for DeepSeek V4 models — with 1M-token context, thinking-mode reasoning, and full tool-use.
npm i -g deepseek-tui
What is it?
DeepSeek TUI is a coding agent that runs entirely in your terminal. It gives DeepSeek's frontier models direct access to your workspace — reading and editing files, running shell commands, searching the web, managing git, and orchestrating sub-agents — all through a fast, keyboard-driven TUI.
Built for DeepSeek V4 (deepseek-v4-pro / deepseek-v4-flash) with 1M-token context windows and native thinking-mode (chain-of-thought) streaming. See the model's reasoning unfold in real time as it works through your tasks.
Key Features
- 🧠 Thinking-mode streaming — watch DeepSeek's chain-of-thought as it reasons about your code
- 🔧 Full tool suite — file ops, shell execution, git, web search/browse, apply-patch, sub-agents, MCP servers, and more
- 🪟 1M-token context — feed entire codebases; automatic intelligent compaction when context fills up
- 🎛️ Three interaction modes — Plan (read-only explore), Agent (interactive with approval), YOLO (auto-approved)
- ⚡ Reasoning-effort tiers — cycle through
off → high → maxwith Shift+Tab - 🔄 Session save/resume — checkpoint and resume long sessions, fork conversations
- 🌐 HTTP/SSE runtime API —
deepseek serve --httpfor headless agent workflows - 📦 MCP protocol — connect to Model Context Protocol servers for extended tooling
- 💰 Live cost tracking — per-turn and session-level token usage and cost estimates
- 🎨 Dark & light themes — with a DeepSeek-blue branded palette
Quickstart
npm install -g deepseek-tui
deepseek
On first launch you'll be prompted for your DeepSeek API key. You can also set it ahead of time:
# via CLI
deepseek login --api-key "YOUR_DEEPSEEK_API_KEY"
# via env var
export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
deepseek
Using NVIDIA NIM
deepseek auth set --provider nvidia-nim --api-key "YOUR_NVIDIA_API_KEY"
deepseek --provider nvidia-nim
# or per-process:
DEEPSEEK_PROVIDER=nvidia-nim NVIDIA_API_KEY="..." deepseek
Install from source
git clone https://github.com/Hmbown/DeepSeek-TUI.git
cd DeepSeek-TUI
cargo install --path crates/tui --locked # requires Rust 1.85+
What's new in v0.5.0
- Multi-turn tool calls no longer 400 on thinking-mode models. Every assistant message now replays
reasoning_content(with a safe placeholder when the round produced none), and a final-pass sanitizer guarantees the wire payload satisfies DeepSeek's thinking-mode contract — even for sessions restored from older checkpoints or sub-agents that bypass the engine path. - Phantom
web.runreferences stripped from prompts and theweb_searchtool (#25).
Full history: CHANGELOG.md.
Models & Pricing
DeepSeek TUI targets DeepSeek V4 models with 1M-token context windows by default.
| Model | Context | Input (cache hit) | Input (cache miss) | Output |
|---|---|---|---|---|
deepseek-v4-pro |
1M | $0.03625 / 1M* | $0.435 / 1M* | $0.87 / 1M* |
deepseek-v4-flash |
1M | $0.028 / 1M | $0.14 / 1M | $0.28 / 1M |
Legacy aliases deepseek-chat and deepseek-reasoner silently map to deepseek-v4-flash.
NVIDIA NIM hosted variants (deepseek-ai/deepseek-v4-pro, deepseek-ai/deepseek-v4-flash) use your NVIDIA account terms — no DeepSeek platform billing.
*DeepSeek lists the Pro rates above as a limited-time 75% discount valid until 2026-05-05 15:59 UTC; the TUI cost estimator falls back to base Pro rates after that timestamp.
Usage
deepseek # interactive TUI
deepseek "explain this function" # one-shot prompt
deepseek --model deepseek-v4-flash "summarize" # model override
deepseek --yolo # YOLO mode (auto-approve tools)
deepseek login --api-key "..." # save API key
deepseek doctor # check setup & connectivity
deepseek models # list live API models
deepseek sessions # list saved sessions
deepseek resume --last # resume latest session
deepseek serve --http # HTTP/SSE API server
Keyboard shortcuts
| Key | Action |
|---|---|
Tab |
Cycle mode: Plan → Agent → YOLO |
Shift+Tab |
Cycle reasoning-effort: off → high → max |
F1 |
Help |
Esc |
Back / dismiss |
Ctrl+K |
Command palette |
@path |
Attach file/directory context in composer |
/attach <path> |
Attach image/video media references |
Modes
| Mode | Behavior |
|---|---|
| Plan 🔍 | Read-only investigation — model explores and proposes a plan before making changes |
| Agent 🤖 | Default interactive mode — multi-step tool use with approval gates |
| YOLO ⚡ | Auto-approve all tools in a trusted workspace (use with caution) |
Configuration
~/.deepseek/config.toml — see config.example.toml for every option.
Key environment overrides:
| Variable | Purpose |
|---|---|
DEEPSEEK_API_KEY |
API key |
DEEPSEEK_BASE_URL |
API base URL |
DEEPSEEK_MODEL |
Default model |
DEEPSEEK_PROVIDER |
Provider: deepseek (default) or nvidia-nim |
DEEPSEEK_PROFILE |
Config profile name |
NVIDIA_API_KEY |
NVIDIA NIM API key |
Quick diagnostics:
deepseek-tui setup --status # read-only status check (API key, MCP, sandbox, .env)
deepseek-tui doctor --json # machine-readable doctor output for CI
deepseek-tui setup --tools --plugins # scaffold tools/ and plugins/ directories
DeepSeek context caching is automatic — when the API returns cache hit/miss token fields, the TUI includes them in usage and cost tracking.
Full reference: docs/CONFIGURATION.md
Documentation
| Doc | Topic |
|---|---|
| ARCHITECTURE.md | Codebase internals |
| CONFIGURATION.md | Full config reference |
| MODES.md | Plan / Agent / YOLO modes |
| MCP.md | Model Context Protocol integration |
| RUNTIME_API.md | HTTP/SSE API server |
| RELEASE_RUNBOOK.md | Release process |
| OPERATIONS_RUNBOOK.md | Ops & recovery |
Contributing
See CONTRIBUTING.md. Pull requests welcome!
Not affiliated with DeepSeek Inc.
