<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Terminal Coding Agent on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/terminal-coding-agent/</link>
        <description>Recent content in Terminal Coding Agent on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Mon, 04 May 2026 17:27:14 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/terminal-coding-agent/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepSeek-TUI</title>
        <link>https://producthunt.programnotes.cn/en/p/deepseek-tui/</link>
        <pubDate>Mon, 04 May 2026 17:27:14 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/deepseek-tui/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1634766742722-ae97676d7563?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3Nzc4ODY3OTB8&amp;ixlib=rb-4.1.0" alt="Featured image of post DeepSeek-TUI" /&gt;&lt;h1 id=&#34;hmbowndeepseek-tui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hmbown/DeepSeek-TUI&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;deepseek-tui&#34;&gt;DeepSeek TUI
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A terminal-native coding agent built around DeepSeek V4&amp;rsquo;s 1M-token context and prefix cache. Single binary, no Node/Python runtime required — ships an MCP client, sandbox, and durable task queue out of the box.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;README.zh-CN.md&#34; &gt;简体中文 README&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i -g deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/actions/workflows/ci.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/Hmbown/DeepSeek-TUI/actions/workflows/ci.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;CI&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/deepseek-tui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/npm/v/deepseek-tui&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;npm&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://crates.io/crates/deepseek-tui-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/crates/v/deepseek-tui-cli?label=crates.io&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;crates.io&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.buymeacoffee.com/hmbown&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/Buy%20me%20a%20coffee-5F7FFF?style=for-the-badge&amp;logo=buymeacoffee&amp;logoColor=white&#34; alt=&#34;Buy me a coffee&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/assets/screenshot.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;DeepSeek TUI screenshot&#34;
	
	
&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-it&#34;&gt;What is it?
&lt;/h2&gt;&lt;p&gt;DeepSeek TUI is a coding agent that runs entirely in your terminal. It gives DeepSeek&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Built for DeepSeek V4&lt;/strong&gt; (&lt;code&gt;deepseek-v4-pro&lt;/code&gt; / &lt;code&gt;deepseek-v4-flash&lt;/code&gt;) with 1M-token context windows and native thinking-mode (chain-of-thought) streaming. See the model&amp;rsquo;s reasoning unfold in real time as it works through your tasks.&lt;/p&gt;
&lt;h3 id=&#34;key-features&#34;&gt;Key Features
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Native RLM&lt;/strong&gt; (&lt;code&gt;rlm_query&lt;/code&gt; tool) — fans out 1–16 cheap &lt;code&gt;deepseek-v4-flash&lt;/code&gt; children in parallel against the existing DeepSeek client for batched analysis, decomposition, or parallel reasoning&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thinking-mode streaming&lt;/strong&gt; — shows DeepSeek&amp;rsquo;s chain-of-thought as it reasons about your code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full tool suite&lt;/strong&gt; — file ops, shell execution, git, web search/browse, apply-patch, sub-agents, MCP servers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1M-token context&lt;/strong&gt; — automatic intelligent compaction when context fills up&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three interaction modes&lt;/strong&gt; — Plan (read-only explore), Agent (interactive with approval), YOLO (auto-approved). Decomposition-first system prompts teach the model to &lt;code&gt;checklist_write&lt;/code&gt;, &lt;code&gt;update_plan&lt;/code&gt;, and spawn sub-agents before acting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reasoning-effort tiers&lt;/strong&gt; — cycle through &lt;code&gt;off → high → max&lt;/code&gt; with Shift+Tab&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session save/resume&lt;/strong&gt; — checkpoint and resume long sessions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workspace rollback&lt;/strong&gt; — side-git pre/post-turn snapshots with &lt;code&gt;/restore&lt;/code&gt; and &lt;code&gt;revert_turn&lt;/code&gt;, without touching your repo&amp;rsquo;s &lt;code&gt;.git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP/SSE runtime API&lt;/strong&gt; — &lt;code&gt;deepseek serve --http&lt;/code&gt; for headless agent workflows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP protocol&lt;/strong&gt; — connect to Model Context Protocol servers for extended tooling; see &lt;a class=&#34;link&#34; href=&#34;docs/MCP.md&#34; &gt;docs/MCP.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live cost tracking&lt;/strong&gt; — per-turn and session-level token usage and cost estimates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dark theme&lt;/strong&gt; — DeepSeek-blue palette&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;how-its-wired&#34;&gt;How it&amp;rsquo;s wired
&lt;/h2&gt;&lt;p&gt;DeepSeek TUI&amp;rsquo;s architecture follows a &lt;strong&gt;dispatcher → TUI → engine → tools&lt;/strong&gt; pattern.
The &lt;code&gt;deepseek&lt;/code&gt; CLI binary is a lightweight dispatcher that parses subcommands and
delegates to the &lt;code&gt;deepseek-tui&lt;/code&gt; companion binary for interactive sessions. The TUI
runs a &lt;strong&gt;ratatui&lt;/strong&gt;-based interface that communicates with an async engine executing
an agent loop: user input flows to the LLM via a streaming client (OpenAI-compatible
Chat Completions), tool calls are extracted from the response and dispatched through
a typed tool registry (shell, file ops, git, web, sub-agents, MCP), and results
stream back into the transcript.&lt;/p&gt;
&lt;p&gt;Behind the scenes, the engine manages session state, turn tracking, and a durable
task queue. The LSP subsystem (&lt;code&gt;crates/tui/src/lsp/&lt;/code&gt;) provides post-edit diagnostics
by spawning language servers (rust-analyzer, pyright, etc.) and injecting errors
into the model&amp;rsquo;s context before the next reasoning step. A recursive language model
(RLM) subsystem gives the agent a sandboxed Python REPL for batch classification
and sub-LLM orchestration. See &lt;a class=&#34;link&#34; href=&#34;docs/ARCHITECTURE.md&#34; &gt;docs/ARCHITECTURE.md&lt;/a&gt; for
the full walkthrough.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;quickstart&#34;&gt;Quickstart
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Prebuilt binaries are published for &lt;strong&gt;Linux x64&lt;/strong&gt;, &lt;strong&gt;Linux ARM64&lt;/strong&gt; (v0.8.8+),
&lt;strong&gt;macOS x64&lt;/strong&gt;, &lt;strong&gt;macOS ARM64&lt;/strong&gt;, and &lt;strong&gt;Windows x64&lt;/strong&gt;. For everything else —
musl, riscv64, FreeBSD, etc. — see &lt;a class=&#34;link&#34; href=&#34;#install-from-source&#34; &gt;Build from source&lt;/a&gt;
below or the full &lt;a class=&#34;link&#34; href=&#34;docs/INSTALL.md&#34; &gt;docs/INSTALL.md&lt;/a&gt; walkthrough.&lt;/p&gt;
&lt;h3 id=&#34;linux-arm64-raspberry-pi-asahi-graviton-harmonyos-pc&#34;&gt;Linux ARM64 (Raspberry Pi, Asahi, Graviton, HarmonyOS PC)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;npm i -g deepseek-tui&lt;/code&gt; works on glibc-based ARM64 Linux from &lt;strong&gt;v0.8.8&lt;/strong&gt;
onward. If you&amp;rsquo;re stuck on v0.8.7 or earlier (where you&amp;rsquo;ll see
&lt;code&gt;Unsupported architecture: arm64&lt;/code&gt;), upgrade or use &lt;code&gt;cargo install&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# requires Rust 1.85+ (https://rustup.rs)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui-cli --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui     --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek-tui`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also download &lt;code&gt;deepseek-linux-arm64&lt;/code&gt; and &lt;code&gt;deepseek-tui-linux-arm64&lt;/code&gt;
directly from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Releases page&lt;/a&gt;
and drop both side by side into a directory on your &lt;code&gt;PATH&lt;/code&gt;. Cross-compiling
from x64 to ARM64 is documented in
&lt;a class=&#34;link&#34; href=&#34;docs/INSTALL.md#cross-compiling-from-x64-to-arm64-linux&#34; &gt;docs/INSTALL.md&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;china--mirror-friendly-install&#34;&gt;China / mirror-friendly install
&lt;/h3&gt;&lt;p&gt;If GitHub or npm downloads are slow from mainland China, install the Rust
crates through a Cargo registry mirror:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# ~/.cargo/config.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;crates-io&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;replace-with&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tuna&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tuna&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;registry&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then install the canonical &lt;code&gt;deepseek&lt;/code&gt; dispatcher and the companion TUI binary
(both are required — the dispatcher delegates to the TUI runtime):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui-cli --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui     --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek-tui`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also download prebuilt binaries directly from the
&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Releases&lt;/a&gt; page when
GitHub release assets are reachable. TUNA, rsproxy, Tencent COS, or Aliyun OSS
mirrors can also be used with &lt;code&gt;DEEPSEEK_TUI_RELEASE_BASE_URL&lt;/code&gt; when a mirrored
release-asset directory is available.&lt;/p&gt;
&lt;p&gt;On first launch you&amp;rsquo;ll be prompted for your &lt;a class=&#34;link&#34; href=&#34;https://platform.deepseek.com/api_keys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API key&lt;/a&gt;. The TUI saves it to your user config at &lt;code&gt;~/.deepseek/config.toml&lt;/code&gt; so it works from every folder without OS credential prompts.&lt;/p&gt;
&lt;p&gt;You can also set it ahead of time:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Recommended — saves to ~/.deepseek/config.toml; works everywhere&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (interactive shells, IDE terminals, scripts, cron):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Env var alternative — note that on zsh, exports in ~/.zshrc only&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# reach interactive shells. Put it in ~/.zshenv if you want it in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# every context (login shells, IDEs, scripts):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_DEEPSEEK_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Verify which source the binary is reading:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;To rotate or remove a saved key, run
&lt;code&gt;deepseek auth clear --provider deepseek&lt;/code&gt; (or &lt;code&gt;deepseek logout&lt;/code&gt; for
the legacy alias), then run &lt;code&gt;deepseek auth set --provider deepseek&lt;/code&gt;
again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;using-nvidia-nim&#34;&gt;Using NVIDIA NIM
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider nvidia-nim --api-key &lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_NVIDIA_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --provider nvidia-nim
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or per-process:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DEEPSEEK_PROVIDER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;nvidia-nim &lt;span class=&#34;nv&#34;&gt;NVIDIA_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt; deepseek
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;other-deepseek-v4-providers&#34;&gt;Other DeepSeek V4 providers
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider fireworks --api-key &lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_FIREWORKS_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --provider fireworks --model deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# SGLang is self-hosted; auth is optional for localhost deployments.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SGLANG_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:30000/v1&amp;#34;&lt;/span&gt; deepseek --provider sglang --model deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;details id=&#34;install-from-source&#34;&gt;
&lt;summary&gt;Install from source&lt;/summary&gt;
&lt;p&gt;Works on any Tier-1 Rust target — including Linux musl/riscv64, FreeBSD, and
ARM64 distros that pre-date our prebuilt binaries.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Linux build deps (Debian/Ubuntu/openEuler/Kylin):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   sudo apt-get install -y build-essential pkg-config libdbus-1-dev&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   # RHEL family: sudo dnf install -y gcc make pkgconf-pkg-config dbus-devel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Hmbown/DeepSeek-TUI.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; DeepSeek-TUI
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --path crates/cli --locked   &lt;span class=&#34;c1&#34;&gt;# requires Rust 1.85+; provides `deepseek`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install --path crates/tui --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek-tui`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Both binaries are required — the &lt;code&gt;deepseek&lt;/code&gt; dispatcher delegates to
&lt;code&gt;deepseek-tui&lt;/code&gt; at runtime. Cross-compilation, mirror, and platform-specific
notes live in &lt;a class=&#34;link&#34; href=&#34;docs/INSTALL.md&#34; &gt;docs/INSTALL.md&lt;/a&gt;.&lt;/p&gt;
&lt;/details&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v088&#34;&gt;What&amp;rsquo;s new in v0.8.8
&lt;/h2&gt;&lt;p&gt;A stabilization-focused release: a thick band of UX polish on top of the v0.8.6 / v0.8.7 base, plus runtime fixes for the rough edges that surfaced in production sessions. No model or API changes; every existing config and session keeps working.&lt;/p&gt;
&lt;h3 id=&#34;-tui-polish&#34;&gt;🪟 TUI polish
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual retry / backoff banner&lt;/strong&gt; when the upstream rate-limits or 5xxs, with a per-second countdown so a stalled session is obviously stalled instead of silently frozen (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/499&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#499&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP health chip&lt;/strong&gt; in the footer — a coloured &lt;code&gt;MCP n/n&lt;/code&gt; glyph reflects how many configured servers are actually reachable, hidden when no servers are configured (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/502&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#502&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool-output spillover&lt;/strong&gt; routes full bodies to &lt;code&gt;~/.deepseek/tool_outputs/&amp;lt;id&amp;gt;.txt&lt;/code&gt; with a 32 KiB head visible in the cell; the existing details pager appends the full output so nothing is hidden, just paged (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/500&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#500&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-day duration formatting&lt;/strong&gt; — &lt;code&gt;humanize_duration&lt;/code&gt; walks &lt;code&gt;s → m → h → d → w&lt;/code&gt; and caps at two units, so a long-running session reads &lt;code&gt;2d 3h&lt;/code&gt; instead of &lt;code&gt;188415s&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/447&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#447&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cumulative &lt;code&gt;worked Nh Mm&lt;/code&gt; footer chip&lt;/strong&gt; appears once a session crosses 60s, dropping first under narrow widths so it never shoves more important chips off-screen (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/448&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#448&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSC 8 hyperlinks&lt;/strong&gt; — URLs in the transcript are Cmd+click-openable on iTerm2, Terminal.app, Ghostty, Kitty, WezTerm, Alacritty, and modern gnome-terminal/konsole; legacy terminals just show the visible text (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/498&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#498&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inline diff rendering&lt;/strong&gt; for &lt;code&gt;edit_file&lt;/code&gt; and &lt;code&gt;write_file&lt;/code&gt; — tool results emit a unified diff at the head of the body, picked up by the diff-aware renderer with line numbers and coloured &lt;code&gt;+&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt; gutters (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/505&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#505&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composer prompt stash&lt;/strong&gt; — Ctrl+S parks the current draft to &lt;code&gt;~/.deepseek/composer_stash.jsonl&lt;/code&gt;, &lt;code&gt;/stash list&lt;/code&gt; shows parked drafts, &lt;code&gt;/stash pop&lt;/code&gt; restores LIFO, &lt;code&gt;/stash clear&lt;/code&gt; wipes the file. Self-healing JSONL parser, 200-entry cap, multi-line drafts preserved (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/440&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#440&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slash-menu layout no longer jitters&lt;/strong&gt; the chat area as the matched-entry count changes mid-typing — reported on Windows 10 PowerShell + WSL where the per-cell write cost made the redraw visibly laggy. The composer now reserves its panel-max envelope for the whole slash/mention session.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-accessibility&#34;&gt;♿ Accessibility
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;NO_ANIMATIONS=1&lt;/code&gt;&lt;/strong&gt; env var (also &lt;code&gt;1&lt;/code&gt; / &lt;code&gt;true&lt;/code&gt; / &lt;code&gt;yes&lt;/code&gt; / &lt;code&gt;on&lt;/code&gt;) forces &lt;code&gt;low_motion = true&lt;/code&gt; and &lt;code&gt;fancy_animations = false&lt;/code&gt; at startup regardless of saved settings; new &lt;code&gt;docs/ACCESSIBILITY.md&lt;/code&gt; documents every motion / output knob (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/450&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#450&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keyboard-enhancement flags&lt;/strong&gt; pop on every shutdown path including panic, Ctrl+Z suspend, and external-editor invocation, so a crashed TUI never leaves your terminal in raw mode (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/443&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#443&lt;/a&gt;/&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/444&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#444&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kitty keyboard protocol&lt;/strong&gt; (&lt;code&gt;DISAMBIGUATE_ESCAPE_CODES&lt;/code&gt;) pushed at startup so kitty-protocol terminals report unambiguous events for Option/Alt-modified keys; legacy terminals are unaffected (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/442&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#442&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-agents--sub-agents&#34;&gt;🤖 Agents / sub-agents
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sub-agent cap raised 5 → 10&lt;/strong&gt; (configurable via &lt;code&gt;[subagents].max_concurrent&lt;/code&gt;, hard ceiling 20). Completed agents no longer count against the running cap (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/509&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#509&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-agent fan-out UI freeze fixed&lt;/strong&gt; — &lt;code&gt;SharedSubAgentManager&lt;/code&gt; is now &lt;code&gt;Arc&amp;lt;RwLock&amp;lt;…&amp;gt;&amp;gt;&lt;/code&gt;; read paths take read locks instead of contending on a &lt;code&gt;Mutex&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/510&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#510&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sub-agent output summarized&lt;/strong&gt; before being folded into the parent&amp;rsquo;s context, so a child returning 100KB of evidence doesn&amp;rsquo;t wreck the parent&amp;rsquo;s window (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/511&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#511&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Implementer&lt;/code&gt; + &lt;code&gt;Verifier&lt;/code&gt; sub-agent roles&lt;/strong&gt; wired into &lt;code&gt;agent_spawn&lt;/code&gt; / &lt;code&gt;agent_assign&lt;/code&gt; schemas so the model surfaces them by name (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/404&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#404&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;agent_list&lt;/code&gt; defaults to current-session view&lt;/strong&gt; — prior sessions filtered out unless &lt;code&gt;include_archived=true&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/405&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#405&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compact &lt;code&gt;agent_spawn&lt;/code&gt; rendering&lt;/strong&gt; in live mode collapses to a single header line; transcript replay keeps the full block (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/409&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#409&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;agent_swarm&lt;/code&gt; / &lt;code&gt;spawn_agents_on_csv&lt;/code&gt; / &lt;code&gt;/swarm&lt;/code&gt;&lt;/strong&gt; removed in v0.8.5 — confirmed gone in this release; multi-child fanout is no longer a model-callable tool.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-workflows--extensibility&#34;&gt;🛠️ Workflows / extensibility
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;load_skill&lt;/code&gt; model-callable tool&lt;/strong&gt; — takes a skill id, returns the SKILL.md body plus sibling companion-file list in one call. Available in Plan and Agent / Yolo modes (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/434&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#434&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-tool skill discovery&lt;/strong&gt; — skills catalogue and &lt;code&gt;load_skill&lt;/code&gt; walk &lt;code&gt;.agents/skills&lt;/code&gt;, &lt;code&gt;skills&lt;/code&gt;, &lt;code&gt;.opencode/skills&lt;/code&gt;, &lt;code&gt;.claude/skills&lt;/code&gt;, and &lt;code&gt;~/.deepseek/skills&lt;/code&gt; with first-wins precedence (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/432&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#432&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/hooks&lt;/code&gt; read-only lifecycle hook listing&lt;/strong&gt; groups configured hooks by event with name / command preview / timeout / condition. Notes the global &lt;code&gt;[hooks].enabled&lt;/code&gt; state. &lt;code&gt;/hooks events&lt;/code&gt; lists every supported &lt;code&gt;HookEvent&lt;/code&gt; value (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/460&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#460&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every &lt;code&gt;HookEvent&lt;/code&gt; now has a live producer&lt;/strong&gt; — &lt;code&gt;tool_call_before&lt;/code&gt; / &lt;code&gt;tool_call_after&lt;/code&gt; / &lt;code&gt;message_submit&lt;/code&gt; / &lt;code&gt;on_error&lt;/code&gt; fire from the runtime in addition to the existing session-lifecycle and mode-change events. Hooks remain read-only observers in v0.8.8 (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/455&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#455&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;instructions = [...]&lt;/code&gt; config array&lt;/strong&gt; lets you stack additional system-prompt files; paths capped at 100 KiB each, project array replaces user array wholesale (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/454&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#454&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;deepseek pr &amp;lt;N&amp;gt;&lt;/code&gt; subcommand&lt;/strong&gt; fetches a PR&amp;rsquo;s title / body / diff via &lt;code&gt;gh&lt;/code&gt; and launches the TUI with a review prompt already in the composer. Codepoint-safe diff cap at 200 KiB; optional &lt;code&gt;--repo&lt;/code&gt; / &lt;code&gt;--checkout&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/451&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#451&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User-memory MVP&lt;/strong&gt; (opt-in) — &lt;code&gt;~/.deepseek/memory.md&lt;/code&gt; injected into the system prompt as a &lt;code&gt;&amp;lt;user_memory&amp;gt;&lt;/code&gt; block; &lt;code&gt;# foo&lt;/code&gt; typed in the composer appends a timestamped bullet without firing a turn; &lt;code&gt;/memory [show|path|clear|edit|help]&lt;/code&gt; for inspection. Default off; enable with &lt;code&gt;[memory] enabled = true&lt;/code&gt; or &lt;code&gt;DEEPSEEK_MEMORY=on&lt;/code&gt;. See &lt;a class=&#34;link&#34; href=&#34;docs/MEMORY.md&#34; &gt;docs/MEMORY.md&lt;/a&gt; for the full guide and examples (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/489&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#489&lt;/a&gt;–&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/493&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#493&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-security&#34;&gt;🔒 Security
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Project-config keys denied at workspace scope&lt;/strong&gt; — a malicious &lt;code&gt;./.deepseek/config.toml&lt;/code&gt; can no longer override &lt;code&gt;api_key&lt;/code&gt;, &lt;code&gt;base_url&lt;/code&gt;, &lt;code&gt;provider&lt;/code&gt;, or &lt;code&gt;mcp_config_path&lt;/code&gt;. The loosest values (&lt;code&gt;approval_policy = &amp;quot;auto&amp;quot;&lt;/code&gt;, &lt;code&gt;sandbox_mode = &amp;quot;danger-full-access&amp;quot;&lt;/code&gt;) are also denied at project scope (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/417&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#417&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;SSL_CERT_FILE&lt;/code&gt; honoured&lt;/strong&gt; in the HTTPS client so corporate-CA / MITM-proxy users can connect — PEM bundle and DER fallback; failures log a warning and continue (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/418&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#418&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execpolicy heredoc parsing&lt;/strong&gt; — &lt;code&gt;normalize_command&lt;/code&gt; strips heredoc bodies before shlex tokenization so &lt;code&gt;auto_allow = [&amp;quot;cat &amp;gt; file.txt&amp;quot;]&lt;/code&gt; matches the heredoc form &lt;code&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; file.txt\nbody\nEOF&lt;/code&gt;. Recognises &lt;code&gt;&amp;lt;&amp;lt;DELIM&lt;/code&gt; / &lt;code&gt;&amp;lt;&amp;lt;-DELIM&lt;/code&gt; / &lt;code&gt;&amp;lt;&amp;lt;&#39;DELIM&#39;&lt;/code&gt; / &lt;code&gt;&amp;lt;&amp;lt;&amp;quot;DELIM&amp;quot;&lt;/code&gt;; leaves &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/code&gt; (here-string) untouched (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/419&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#419&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Don&#39;t auto-approve git -C ...&lt;/code&gt;&lt;/strong&gt; runtime fix shipped on v0.8.7 main (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/416&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#416&lt;/a&gt;) — included for completeness.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-packaging&#34;&gt;📦 Packaging
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux ARM64 prebuilts&lt;/strong&gt; added to the release matrix; npm wrapper picks the right binary on &lt;code&gt;aarch64-linux&lt;/code&gt; automatically. New &lt;code&gt;docs/INSTALL.md&lt;/code&gt; covers every install path (npm, cargo, prebuilt, source).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;deepseek update&lt;/code&gt; fixed&lt;/strong&gt; — the v0.8.7 self-updater used Rust ARCH constants (&lt;code&gt;aarch64&lt;/code&gt;/&lt;code&gt;x86_64&lt;/code&gt;) instead of release-asset naming (&lt;code&gt;arm64&lt;/code&gt;/&lt;code&gt;x64&lt;/code&gt;), so the command failed on every platform. Now maps correctly and rejects &lt;code&gt;.sha256&lt;/code&gt; siblings as primary binaries (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/503&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#503&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI workflow cleanup&lt;/strong&gt; — pruned three duplicated/dead workflows; &lt;code&gt;release.yml&lt;/code&gt; &lt;code&gt;build&lt;/code&gt; job now allows the &lt;code&gt;parity&lt;/code&gt; gate to be skipped on manual &lt;code&gt;workflow_dispatch&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/507&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#507&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-bug-fixes&#34;&gt;🐛 Bug fixes
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Composer Option+Backspace&lt;/strong&gt; deletes by word now (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/488&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#488&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline composer queue is session-scoped&lt;/strong&gt; — legacy unscoped queues fail closed instead of leaking content into unrelated chats (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/487&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#487&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;display_path&lt;/code&gt; test race + Windows separator&lt;/strong&gt; — tests no longer mutate &lt;code&gt;$HOME&lt;/code&gt;; home-relative suffix joins with &lt;code&gt;MAIN_SEPARATOR_STR&lt;/code&gt; so Windows shows &lt;code&gt;~\projects\foo&lt;/code&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/506&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#506&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer reads statusline colours from &lt;code&gt;app.ui_theme&lt;/code&gt;&lt;/strong&gt; (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/449&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#449&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-auth--onboarding&#34;&gt;🔑 Auth &amp;amp; onboarding
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No automatic OS credential prompts&lt;/strong&gt; — startup, &lt;code&gt;doctor&lt;/code&gt;, &lt;code&gt;doctor --json&lt;/code&gt;, and normal dispatcher setup now use CLI flag → &lt;code&gt;~/.deepseek/config.toml&lt;/code&gt; → env.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One setup command works everywhere&lt;/strong&gt; — &lt;code&gt;deepseek auth set --provider deepseek&lt;/code&gt; and the in-TUI onboarding screen both write the shared user config file, so the key is available from any folder without relying on &lt;code&gt;~/.zshrc&lt;/code&gt; propagation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Onboarding screen wording rewritten&lt;/strong&gt; — &amp;ldquo;Step 1: open &lt;a class=&#34;link&#34; href=&#34;https://platform.deepseek.com/api_keys%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://platform.deepseek.com/api_keys&#34;&lt;/a&gt; / &amp;ldquo;Step 2: paste below and press Enter&amp;rdquo; with an explicit note showing where the key is saved.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Missing-key error is now actionable&lt;/strong&gt; — the &lt;code&gt;DeepSeek API key not found&lt;/code&gt; bail message lists the config-backed CLI command first and the env-var alternative second, with a &lt;code&gt;~/.zshrc&lt;/code&gt; vs &lt;code&gt;~/.zshenv&lt;/code&gt; note for zsh users whose env var only reaches interactive shells.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dispatcher provider/auth parity&lt;/strong&gt; — the canonical &lt;code&gt;deepseek&lt;/code&gt; entry point now accepts the same DeepSeek V4 providers advertised by the TUI (&lt;code&gt;fireworks&lt;/code&gt;, &lt;code&gt;sglang&lt;/code&gt; included), and legacy &lt;code&gt;deepseek login --api-key&lt;/code&gt; / &lt;code&gt;deepseek logout&lt;/code&gt; now share the same config-backed path.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v087&#34;&gt;What&amp;rsquo;s new in v0.8.7
&lt;/h2&gt;&lt;p&gt;Quick patch on top of v0.8.6 to unblock copy/select.&lt;/p&gt;
&lt;h3 id=&#34;-selection-works-across-the-whole-transcript&#34;&gt;✂️ Selection works across the whole transcript
&lt;/h3&gt;&lt;p&gt;The selection-tightening from v0.8.6 restricted copy/select to user and
assistant message bodies, which made it impossible to copy text out of
system notes, thinking blocks, or tool output. v0.8.7 drops that gate so
the rendered transcript block is selectable end-to-end again.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Known issues in v0.8.7 (fixed in v0.8.8):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deepseek update&lt;/code&gt; fails with &lt;code&gt;no asset found for platform …&lt;/code&gt; because the
platform-string mapping in the self-updater uses &lt;code&gt;aarch64&lt;/code&gt;/&lt;code&gt;x86_64&lt;/code&gt;
instead of the release artifact&amp;rsquo;s &lt;code&gt;arm64&lt;/code&gt;/&lt;code&gt;x64&lt;/code&gt;
(&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI/issues/503&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#503&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm i -g deepseek-tui&lt;/code&gt; exits with &lt;code&gt;Unsupported architecture: arm64 on platform linux&lt;/code&gt; on ARM64 Linux because v0.8.7 didn&amp;rsquo;t publish a
&lt;code&gt;deepseek-linux-arm64&lt;/code&gt; asset.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until v0.8.8 ships, install via:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# x64 Linux / macOS / Windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i -g deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ARM64 Linux (HarmonyOS, openEuler, Asahi, Raspberry Pi, Graviton, …) —&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# build from source with Cargo (Rust 1.85+):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui-cli --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui     --locked   &lt;span class=&#34;c1&#34;&gt;# provides `deepseek-tui`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;whats-new-in-v086&#34;&gt;What&amp;rsquo;s new in v0.8.6
&lt;/h2&gt;&lt;h3 id=&#34;-agentsmd-bootstrap-init&#34;&gt;📝 AGENTS.md bootstrap (&lt;code&gt;/init&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/init&lt;/code&gt; walks the workspace, auto-detects the project type (Cargo.toml,
package.json, pyproject.toml, etc.), and writes a starter &lt;code&gt;AGENTS.md&lt;/code&gt; with
build/test commands, workspace layout, and conventions derived from &lt;code&gt;git log&lt;/code&gt;.
Re-running shows a diff of the proposed update without overwriting changes.&lt;/p&gt;
&lt;h3 id=&#34;-inline-lsp-diagnostics&#34;&gt;🔍 Inline LSP diagnostics
&lt;/h3&gt;&lt;p&gt;After every &lt;code&gt;apply_patch&lt;/code&gt;/&lt;code&gt;edit_file&lt;/code&gt;/&lt;code&gt;write_file&lt;/code&gt;, the engine sends a
&lt;code&gt;textDocument/didChange&lt;/code&gt; to the LSP server and surfaces errors/warnings
inline in the tool result. Configurable via &lt;code&gt;/lsp on|off&lt;/code&gt; and the
&lt;code&gt;[lsp]&lt;/code&gt; config section. Currently supports rust-analyzer, pyright,
typescript-language-server, gopls, and clangd.&lt;/p&gt;
&lt;h3 id=&#34;-self-update-deepseek-update&#34;&gt;🔄 Self-update (&lt;code&gt;deepseek update&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;deepseek update&lt;/code&gt; fetches the latest GitHub release, downloads the
platform-correct binary with SHA256 verification, and atomically replaces
the running binary. No more remembering &lt;code&gt;cargo install&lt;/code&gt; or &lt;code&gt;npm install -g&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;-session-sharing-share&#34;&gt;🌐 Session sharing (&lt;code&gt;/share&lt;/code&gt;)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/share&lt;/code&gt; exports the current session as a static HTML page and uploads it
to a GitHub Gist via the &lt;code&gt;gh&lt;/code&gt; CLI, producing a clickable URL you can paste
anywhere.&lt;/p&gt;
&lt;h3 id=&#34;-docs-refresh&#34;&gt;📖 Docs refresh
&lt;/h3&gt;&lt;p&gt;README hero updated with intent statement and architecture summary.
ARCHITECTURE.md cleaned up for v0.8.6 (removed swarm tool surface, current
crate map). CONTRIBUTING.md now has a &amp;ldquo;shape of a PR&amp;rdquo; section.&lt;/p&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v085&#34;&gt;What&amp;rsquo;s new in v0.8.5
&lt;/h2&gt;&lt;h3 id=&#34;-ssrf-protection-for-fetch_url&#34;&gt;🛡️ SSRF protection for fetch_url
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;fetch_url&lt;/code&gt; now validates target hostnames and IPs before connecting —
localhost-only HTTP for loopback, DNS pinning for remote hosts, and
blocked internal IP ranges. Contributed by Hafeez Pizofreude (#261)
and Jason.&lt;/p&gt;
&lt;h3 id=&#34;-schema-driven-config-editor&#34;&gt;🖥️ Schema-driven config editor
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/config tui&lt;/code&gt; opens a forms-style config editor powered by schemaui.
Bare &lt;code&gt;/config&lt;/code&gt; opens the legacy native modal; &lt;code&gt;/config web&lt;/code&gt; launches a
browser surface (requires the &lt;code&gt;web&lt;/code&gt; feature). Contributed by Unic
(YuniqueUnic) via #365.&lt;/p&gt;
&lt;h3 id=&#34;-deepseekcn-provider&#34;&gt;🏷️ DeepseekCN provider
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ApiProvider::DeepseekCN&lt;/code&gt; targets &lt;code&gt;api.deepseeki.com&lt;/code&gt; for China-based
users. Auto-detects when &lt;code&gt;zh-*&lt;/code&gt; is the system locale on first run.&lt;/p&gt;
&lt;h3 id=&#34;-atomic-file-writes&#34;&gt;🔐 Atomic file writes
&lt;/h3&gt;&lt;p&gt;All writes to &lt;code&gt;~/.deepseek/&lt;/code&gt; now go through &lt;code&gt;write_atomic&lt;/code&gt; (tempfile +
fsync + rename), preventing corruption from mid-write crashes.&lt;/p&gt;
&lt;h3 id=&#34;-panic-safety-foundations&#34;&gt;🧵 Panic safety foundations
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;spawn_supervised&lt;/code&gt; catches and logs task panics with crash dumps instead
of silently dropping the task.&lt;/p&gt;
&lt;h3 id=&#34;-config-key-value-wiring&#34;&gt;⌨️ &lt;code&gt;/config &amp;lt;key&amp;gt; &amp;lt;value&amp;gt;&lt;/code&gt; wiring
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/config model deepseek-v4-flash&lt;/code&gt;, &lt;code&gt;/config locale zh-Hans&lt;/code&gt;, etc. change
settings live in-session without opening the editor.&lt;/p&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;thanks&#34;&gt;Thanks
&lt;/h2&gt;&lt;p&gt;v0.8.5 shipped with help from these contributors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pizofreude&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hafeez Pizofreude&lt;/a&gt;&lt;/strong&gt; — SSRF protection in &lt;code&gt;fetch_url&lt;/code&gt; and Star History chart&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/YuniqueUnic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unic (YuniqueUnic)&lt;/a&gt;&lt;/strong&gt; — Schema-driven config UI (TUI + web)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;mailto:jason@aveoresearchlabs.com&#34; &gt;Jason&lt;/a&gt;&lt;/strong&gt; — SSRF security hardening&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v080&#34;&gt;What&amp;rsquo;s new in v0.8.0
&lt;/h2&gt;&lt;h3 id=&#34;-shell-stability-and-post-send-responsiveness&#34;&gt;⚡ Shell stability and post-send responsiveness
&lt;/h3&gt;&lt;p&gt;Completed background shell jobs now release their live process and pipe
handles as soon as completion is observed, while keeping the job record
inspectable. This prevents long-running sessions from hitting &lt;code&gt;Too many open files (os error 24)&lt;/code&gt;, which could make checkpoint saves fail and
cause shell spawning, message send, close, and Esc/cancel paths to lag
or fail.&lt;/p&gt;
&lt;h3 id=&#34;-windows-repl-runtime-ci-hardening&#34;&gt;🪟 Windows REPL runtime CI hardening
&lt;/h3&gt;&lt;p&gt;Windows gets a longer Python bootstrap readiness timeout for the REPL
runtime tests, matching GitHub runner startup contention without
weakening bootstrap failures on other platforms.&lt;/p&gt;
&lt;h3 id=&#34;-cargo-mirror-install-docs&#34;&gt;🌏 Cargo mirror install docs
&lt;/h3&gt;&lt;p&gt;The README now includes a TUNA Cargo mirror setup and direct release
asset guidance for users with slow GitHub/npm access.&lt;/p&gt;
&lt;h3 id=&#34;-test-hardening&#34;&gt;🧪 Test hardening
&lt;/h3&gt;&lt;p&gt;New regression coverage proves completed background shell jobs drop
their live process handles after &lt;code&gt;exec_shell_wait&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v078&#34;&gt;What&amp;rsquo;s new in v0.7.8
&lt;/h2&gt;&lt;h3 id=&#34;-shell-controls-foreground-to-background-detach--exec_shell_cancel&#34;&gt;⚡ Shell controls: foreground-to-background detach + &lt;code&gt;exec_shell_cancel&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;A running foreground command can now be moved to the background interactive
session — press &lt;strong&gt;&lt;code&gt;Ctrl+B&lt;/code&gt;&lt;/strong&gt; while a command is executing to open shell
controls, then either detach it (it continues running and can be polled
with &lt;code&gt;exec_shell_wait&lt;/code&gt;) or cancel the current turn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New tool: &lt;code&gt;exec_shell_cancel&lt;/code&gt;&lt;/strong&gt; — cancel a specific background shell
task by &lt;code&gt;task_id&lt;/code&gt;, or cancel all running background tasks with &lt;code&gt;all: true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cancel-aware &lt;code&gt;exec_shell_wait&lt;/code&gt;&lt;/strong&gt; — canceling a turn while
&lt;code&gt;exec_shell_wait&lt;/code&gt; is blocking now stops the wait but leaves the background
task running.&lt;/p&gt;
&lt;h3 id=&#34;-unicode-glob-search-fix&#34;&gt;🐛 Unicode glob search fix
&lt;/h3&gt;&lt;p&gt;Filenames containing multi-byte characters (e.g., &lt;code&gt;dialogue_line__冰糖.mp3&lt;/code&gt;)
no longer panic the &lt;code&gt;matches_glob&lt;/code&gt; function — byte-index slicing was replaced
with &lt;code&gt;char_indices()&lt;/code&gt; boundary-safe iteration.&lt;/p&gt;
&lt;h3 id=&#34;-fanout-ui-reconciliation&#34;&gt;🔄 Fanout UI reconciliation
&lt;/h3&gt;&lt;p&gt;The fanout card no longer pre-seeds with zero-state workers, eliminating the
&amp;ldquo;0 done · 0 running · 0 failed · N pending&amp;rdquo; vs sidebar &amp;ldquo;N running&amp;rdquo;
contradiction. The sidebar now shows &amp;ldquo;dispatching N&amp;rdquo; before the first progress
event arrives from a legacy fanout invocation.&lt;/p&gt;
&lt;p&gt;Full changelog: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;whats-new-in-v076&#34;&gt;What&amp;rsquo;s new in v0.7.6
&lt;/h2&gt;&lt;h3 id=&#34;-ui-localization&#34;&gt;🌐 UI Localization
&lt;/h3&gt;&lt;p&gt;DeepSeek TUI now speaks your language. The new &lt;code&gt;locale&lt;/code&gt; setting
in &lt;code&gt;settings.toml&lt;/code&gt; controls UI chrome — composer, history search,
&lt;code&gt;/config&lt;/code&gt;, help overlay, and status hints — without changing model
output language.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Setting&lt;/th&gt;
          &lt;th&gt;Display&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale = \&amp;quot;auto\&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Checks &lt;code&gt;LC_ALL&lt;/code&gt; → &lt;code&gt;LC_MESSAGES&lt;/code&gt; → &lt;code&gt;LANG&lt;/code&gt; (default)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale = \&amp;quot;ja\&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Japanese&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale = \&amp;quot;zh-Hans\&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Chinese Simplified&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale = \&amp;quot;pt-BR\&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Portuguese (Brazil)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale = \&amp;quot;en\&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;English fallback&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Unsure what to pick? Run &lt;code&gt;locale&lt;/code&gt; in your terminal; the first matching
tag is used automatically.&lt;/p&gt;
&lt;h3 id=&#34;-smarter-paste-handling&#34;&gt;📋 Smarter paste handling
&lt;/h3&gt;&lt;p&gt;Paste-burst detection catches rapid-key pastes in terminals that don&amp;rsquo;t
send bracketed-paste events — CRLF is normalized, and multiline pastes
stay buffered until you stop typing. Configurable via &lt;code&gt;paste_burst_detection&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;-composer-history-search&#34;&gt;🔍 Composer history search
&lt;/h3&gt;&lt;p&gt;Forgot that prompt you wrote an hour ago? &lt;code&gt;Alt+R&lt;/code&gt; opens a live search
across input history and recovered drafts. Type to filter, &lt;code&gt;Enter&lt;/code&gt; to
accept, &lt;code&gt;Esc&lt;/code&gt; to restore what you were typing.&lt;/p&gt;
&lt;h3 id=&#34;-pending-input-preview&#34;&gt;👁️ Pending input preview
&lt;/h3&gt;&lt;p&gt;During a running turn, queued messages, pending steers, and context chips
appear above the composer so you can see what will be sent next.
&lt;code&gt;Alt+↑&lt;/code&gt; pops the last queued message back for editing.&lt;/p&gt;
&lt;h3 id=&#34;-grouped-config-editor&#34;&gt;⚙️ Grouped &lt;code&gt;/config&lt;/code&gt; editor
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/config&lt;/code&gt; now groups settings by section (Model, Permissions, Display,
&amp;hellip;) with a live filter. &lt;code&gt;↑/↓&lt;/code&gt; (or &lt;code&gt;j&lt;/code&gt;/&lt;code&gt;k&lt;/code&gt; when the filter is empty)
navigate; &lt;code&gt;Enter&lt;/code&gt;/&lt;code&gt;e&lt;/code&gt; edit the selected row; &lt;code&gt;Esc&lt;/code&gt; clears the filter
or closes.&lt;/p&gt;
&lt;h3 id=&#34;-searchable-help-overlay&#34;&gt;⌨️ Searchable help overlay
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;?&lt;/code&gt; (with empty input), &lt;code&gt;F1&lt;/code&gt;, or &lt;code&gt;Ctrl+/&lt;/code&gt; opens a searchable help
overlay. Type to filter commands and keybindings; multi-term searches
act as AND.&lt;/p&gt;
&lt;p&gt;Full history: &lt;a class=&#34;link&#34; href=&#34;CHANGELOG.md&#34; &gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;models--pricing&#34;&gt;Models &amp;amp; Pricing
&lt;/h2&gt;&lt;p&gt;DeepSeek TUI targets &lt;strong&gt;DeepSeek V4&lt;/strong&gt; models with 1M-token context windows by default.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Context&lt;/th&gt;
          &lt;th&gt;Input (cache hit)&lt;/th&gt;
          &lt;th&gt;Input (cache miss)&lt;/th&gt;
          &lt;th&gt;Output&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1M&lt;/td&gt;
          &lt;td&gt;$0.003625 / 1M*&lt;/td&gt;
          &lt;td&gt;$0.435 / 1M*&lt;/td&gt;
          &lt;td&gt;$0.87 / 1M*&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1M&lt;/td&gt;
          &lt;td&gt;$0.0028 / 1M&lt;/td&gt;
          &lt;td&gt;$0.14 / 1M&lt;/td&gt;
          &lt;td&gt;$0.28 / 1M&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Legacy aliases &lt;code&gt;deepseek-chat&lt;/code&gt; and &lt;code&gt;deepseek-reasoner&lt;/code&gt; silently map to &lt;code&gt;deepseek-v4-flash&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NVIDIA NIM&lt;/strong&gt; hosted variants (&lt;code&gt;deepseek-ai/deepseek-v4-pro&lt;/code&gt;, &lt;code&gt;deepseek-ai/deepseek-v4-flash&lt;/code&gt;) use your NVIDIA account terms — no DeepSeek platform billing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;*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.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek                                      &lt;span class=&#34;c1&#34;&gt;# interactive TUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek &lt;span class=&#34;s2&#34;&gt;&amp;#34;explain this function&amp;#34;&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# one-shot prompt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model deepseek-v4-flash &lt;span class=&#34;s2&#34;&gt;&amp;#34;summarize&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# model override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --yolo                               &lt;span class=&#34;c1&#34;&gt;# YOLO mode (auto-approve tools)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider deepseek         &lt;span class=&#34;c1&#34;&gt;# save API key to ~/.deepseek/config.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor                               &lt;span class=&#34;c1&#34;&gt;# check setup &amp;amp; connectivity&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor --json                        &lt;span class=&#34;c1&#34;&gt;# machine-readable diagnostics&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek setup --status                       &lt;span class=&#34;c1&#34;&gt;# read-only setup status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek setup --tools --plugins              &lt;span class=&#34;c1&#34;&gt;# scaffold local tool/plugin dirs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek models                               &lt;span class=&#34;c1&#34;&gt;# list live API models&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek sessions                             &lt;span class=&#34;c1&#34;&gt;# list saved sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek resume --last                        &lt;span class=&#34;c1&#34;&gt;# resume latest session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek serve --http                         &lt;span class=&#34;c1&#34;&gt;# HTTP/SSE API server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek mcp list                             &lt;span class=&#34;c1&#34;&gt;# list configured MCP servers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek mcp validate                         &lt;span class=&#34;c1&#34;&gt;# validate MCP config/connectivity&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek mcp-server                           &lt;span class=&#34;c1&#34;&gt;# run dispatcher MCP stdio server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;keyboard-shortcuts&#34;&gt;Keyboard shortcuts
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Key&lt;/th&gt;
          &lt;th&gt;Action&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Complete &lt;code&gt;/&lt;/code&gt; or &lt;code&gt;@&lt;/code&gt; entries; while a turn is running, queue the draft as a follow-up; otherwise cycle mode&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Shift+Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Cycle reasoning-effort: off → high → max&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;F1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Help&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Back / dismiss&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+K&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Command palette&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Resume an earlier session&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Alt+R&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Search prompt history and recover cleared drafts&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;@path&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Attach file/directory context in composer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;↑&lt;/code&gt; (at composer start)&lt;/td&gt;
          &lt;td&gt;Select attachment row for removal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Alt+↑&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Edit last queued message&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/attach &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Attach image/video media references; select the row with &lt;code&gt;↑&lt;/code&gt; at composer start and remove with &lt;code&gt;Backspace&lt;/code&gt;/&lt;code&gt;Delete&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;modes&#34;&gt;Modes
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Mode&lt;/th&gt;
          &lt;th&gt;Behavior&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Plan&lt;/strong&gt; 🔍&lt;/td&gt;
          &lt;td&gt;Read-only investigation — model explores and proposes a decomposition plan (&lt;code&gt;update_plan&lt;/code&gt; + &lt;code&gt;checklist_write&lt;/code&gt;) before making changes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Agent&lt;/strong&gt; 🤖&lt;/td&gt;
          &lt;td&gt;Default interactive mode — multi-step tool use with approval gates; model outlines work via &lt;code&gt;checklist_write&lt;/code&gt; before requesting writes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;YOLO&lt;/strong&gt; ⚡&lt;/td&gt;
          &lt;td&gt;Auto-approve all tools in a trusted workspace; model still creates &lt;code&gt;checklist_write&lt;/code&gt;/&lt;code&gt;update_plan&lt;/code&gt; to keep work visible and trackable&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;~/.deepseek/config.toml&lt;/code&gt; — see &lt;a class=&#34;link&#34; href=&#34;config.example.toml&#34; &gt;config.example.toml&lt;/a&gt; for every option.&lt;/p&gt;
&lt;p&gt;Key environment overrides:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Variable&lt;/th&gt;
          &lt;th&gt;Purpose&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DEEPSEEK_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DEEPSEEK_BASE_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;API base URL&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DEEPSEEK_MODEL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Default model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DEEPSEEK_PROVIDER&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Provider: &lt;code&gt;deepseek&lt;/code&gt; (default), &lt;code&gt;nvidia-nim&lt;/code&gt;, &lt;code&gt;fireworks&lt;/code&gt;, or &lt;code&gt;sglang&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DEEPSEEK_PROFILE&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Config profile name&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;NVIDIA_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;NVIDIA NIM API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FIREWORKS_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Fireworks AI API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SGLANG_BASE_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Self-hosted SGLang endpoint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SGLANG_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Optional SGLang bearer token&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Quick diagnostics: &lt;code&gt;deepseek setup --status&lt;/code&gt; checks API key, MCP, sandbox, and
&lt;code&gt;.env&lt;/code&gt; state without network calls; &lt;code&gt;deepseek doctor --json&lt;/code&gt; is suitable for CI;
&lt;code&gt;deepseek setup --tools --plugins&lt;/code&gt; scaffolds local tool and plugin directories.&lt;/p&gt;
&lt;p&gt;DeepSeek context caching is automatic — when the API returns cache hit/miss token fields, the TUI includes them in usage and cost tracking.&lt;/p&gt;
&lt;p&gt;Full reference: &lt;a class=&#34;link&#34; href=&#34;docs/CONFIGURATION.md&#34; &gt;docs/CONFIGURATION.md&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;docs/MCP.md&#34; &gt;docs/MCP.md&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;UI locale is separate from model language — set &lt;code&gt;locale&lt;/code&gt; in &lt;code&gt;settings.toml&lt;/code&gt;
or via the &lt;code&gt;LC_ALL&lt;/code&gt;/&lt;code&gt;LANG&lt;/code&gt; environment variables. See &lt;a class=&#34;link&#34; href=&#34;docs/CONFIGURATION.md&#34; &gt;docs/CONFIGURATION.md&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;publishing-your-own-skill&#34;&gt;Publishing your own skill
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI discovers skills from the active skills directory. Workspace-local
&lt;code&gt;.agents/skills&lt;/code&gt; wins when present, then &lt;code&gt;./skills&lt;/code&gt;, then the configured global
directory (&lt;code&gt;~/.deepseek/skills&lt;/code&gt; by default). Each skill is a directory with a
&lt;code&gt;SKILL.md&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.deepseek/skills/my-skill/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; must start with YAML frontmatter:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: my-skill
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: Use this when DeepSeek should follow my custom workflow.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# My Skill
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Instructions for the agent go here.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;/skills&lt;/code&gt; to list discovered skills, &lt;code&gt;/skill &amp;lt;name&amp;gt;&lt;/code&gt; to activate one for
the next message, or &lt;code&gt;/skill new&lt;/code&gt; to use the bundled skill-creator helper.
Installed skills are also listed in the model-visible session context so the
agent can choose relevant skills when the user names them or when the task
matches their descriptions.&lt;/p&gt;
&lt;p&gt;DeepSeek-TUI can also install community skills directly from a GitHub repo,
with no backend service in the loop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a public GitHub repo with a &lt;code&gt;SKILL.md&lt;/code&gt; at the root containing the
usual &lt;code&gt;---&lt;/code&gt; frontmatter (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Multi-skill bundles use &lt;code&gt;skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt; instead — the installer
picks the first match and names the install after the frontmatter &lt;code&gt;name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Push to &lt;code&gt;main&lt;/code&gt; (or &lt;code&gt;master&lt;/code&gt;); the installer fetches
&lt;code&gt;archive/refs/heads/main.tar.gz&lt;/code&gt; and falls back to &lt;code&gt;master.tar.gz&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Users install via &lt;code&gt;/skill install github:&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&lt;/code&gt; — installs are
gated by the &lt;code&gt;[network]&lt;/code&gt; policy, validated for path traversal and size, and
placed under &lt;code&gt;~/.deepseek/skills/&amp;lt;name&amp;gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Submit a PR to the curated &lt;code&gt;index.json&lt;/code&gt; (default registry) to make the skill
installable by name (&lt;code&gt;/skill install &amp;lt;name&amp;gt;&lt;/code&gt;) instead of the GitHub spec.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/skill update &amp;lt;name&amp;gt;&lt;/code&gt;, &lt;code&gt;/skill uninstall &amp;lt;name&amp;gt;&lt;/code&gt;, or
&lt;code&gt;/skill trust &amp;lt;name&amp;gt;&lt;/code&gt; for installed community skills. Trust is only needed
when you want scripts bundled with a skill to be eligible for execution.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Doc&lt;/th&gt;
          &lt;th&gt;Topic&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/ARCHITECTURE.md&#34; &gt;ARCHITECTURE.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Codebase internals&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/CONFIGURATION.md&#34; &gt;CONFIGURATION.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Full config reference&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/MODES.md&#34; &gt;MODES.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Plan / Agent / YOLO modes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/MCP.md&#34; &gt;MCP.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Model Context Protocol integration&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/RUNTIME_API.md&#34; &gt;RUNTIME_API.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;HTTP/SSE API server&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/RELEASE_RUNBOOK.md&#34; &gt;RELEASE_RUNBOOK.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Release process&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/OPERATIONS_RUNBOOK.md&#34; &gt;OPERATIONS_RUNBOOK.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Ops &amp;amp; recovery&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt;. Pull requests welcome!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Not affiliated with DeepSeek Inc.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;MIT&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;star-history&#34;&gt;Star History
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.star-history.com/?repos=Hmbown%2FDeepSeek-TUI&amp;amp;type=date&amp;amp;logscale=&amp;amp;legend=top-left&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/chart?repos=Hmbown/DeepSeek-TUI&amp;amp;type=date&amp;amp;legend=top-left&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
