DeepSeek TUI is an open source terminal based coding agent designed for DeepSeek AI models. Unlike a simple chatbot, it can interact with your local workspace, execute shell commands, manage git operations, and assist with software development tasks directly from the command line.
The project is written in Rust and focuses on speed, low resource usage, and keyboard driven workflows. It is especially appealing for developers who spend most of their time in the terminal.
DeepSeek TUI is gaining attention among developers who prefer terminal based workflows and want direct access to AI powered coding tools without relying on heavy IDE integrations. Built around DeepSeek models, it transforms the terminal into an interactive coding assistant capable of editing files, running commands, and managing development workflows.
Download DeepSeek TUI v0.9.4 - Software Mirrors |
|---|
Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit Download DeepSeek TUI v0.9.4 Windows 64bit |
Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 |
Download DeepSeek TUI v0.9.4 macOS x64 Download DeepSeek TUI v0.9.4 macOS x64 Download DeepSeek TUI v0.9.4 macOS x64 Download DeepSeek TUI v0.9.4 macOS x64 |
Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 Download DeepSeek TUI v0.9.4 macOS arm64 |
Download DeepSeek TUI v0.9.4 Linux x64 Download DeepSeek TUI v0.9.4 Linux x64 Download DeepSeek TUI v0.9.4 Linux x64 Download DeepSeek TUI v0.9.4 Linux x64 |
Download DeepSeek TUI v0.9.4 Linux arm64 Download DeepSeek TUI v0.9.4 Linux arm64 Download DeepSeek TUI v0.9.4 Linux arm64 Download DeepSeek TUI v0.9.4 Linux arm64 |
DeepSeek TUI v0.9.4 Release Notes:Codewhale is the public product from Shannon Labs. The
command, npm package, and release-asset names remain lowercase technical identifiers. The legacy npm package
receives no further releases. Users coming from v0.8.x legacy
InstallRecommended — npm (one command, all three entrypoints)
The wrapper downloads the matched codewhale, codew, and codewhale-tui
binaries from this Release and places them in the same directory.
Docker / GHCR
The image ships the codewhale dispatcher, codew shim, and codewhale-tui runtime. The latest tag is also updated on release.
Cargo (Linux / macOS)
Both crates are required — codewhale-cli produces the codewhale dispatcher and codew shim, while codewhale-tui produces the interactive runtime that the dispatcher delegates to. Installing only one crate will fail at runtime with a MISSING_COMPANION_BINARY error.
Manual download — platform archives (recommended)Each archive below contains thecodewhale dispatcher, codew shim, and codewhale-tui runtime, plus an install script:
Windows:
codewhale-windows-arm64.zip
codewhale-, codew-, and codewhale-tui-) — the npm wrapper and the in-app codewhale update download the matched runtime binaries, whereas the .tar.gz / .zip archives above are the recommended manual download and additionally bundle an install script. The legacy npm package deepseek-tui is deprecated and is not republished. For migration from v0.8.x legacy binary names, see docs/REBRAND.md.
Verify (recommended)Download the checksum manifests from this Release and verify:
What's in v0.9.4Codewhale v0.9.4 ships the release-train harness work: the familiar Fleet roster/setup face with a clear operator-leader and user/folder scope, a work strip that keeps actionable agents instead of a permanent archive, waiting policy that forbids polling without freezing independent work, calmer tool output and session recovery, account/Workflow-search/ automation/handoff surfaces, a shorter translation-ready website, and release-blocker fixes across permissions, DeepSeek Responses, SQLite, File edits, terminal width, and Windows installation.Added
append. Both name the exact note they target and both require
the evidence for the change. Append-only memory decays — a correction
sits behind the note it contradicts and both keep reaching the model —
so the model can now keep its own durable notes true instead of only
adding to them.
memory/JOURNAL.md, and every
continual-harness refine / remove to a JOURNAL.md beside its state,
each with before, after, and evidence. Harness removal previously left no
record at all even though the entry leaves state entirely, so the journal
is now the only place its content survives.
/memory, translated into all fifteen complete
locale packs. This state shaped later sessions and nothing ever mentioned
it existed.
interrupted_continuable child from its checkpoint into a fresh agent loop —
new agent id, original prompt plus the prior conversation tail — when a
runtime is attached, and otherwise keeps queue-only semantics with the
continuation_handle returned; a second followup on the same interrupted id
returns the existing resumed target instead of spawning a duplicate (PR #5242).
mcp-discovery
skill documents the flow (PR #5238).
project_context_pack_enabled) counted in context reports, and load_skill
catalogue discovery via name="list"; the measured fresh-context budget
drops by roughly 40% (PR #5077).
schema = "fleet"), with scope-explicit selection (user-global default vs
folder override), migration receipts from legacy role profiles, and atomic
saves that refuse to clobber a different Fleet on the same slug.
telemetry = true and a recorded "Enable" answer are present, so
a telemetry = true written before this release stays inert: the key has been
settable and inert for a long time, and setting it was never consent.
An enabled session sends its batches to the first-party ingest endpoint,
https://telemetry.codewhale.net/v1/telemetry, which is the shipped default
for telemetry_endpoint. That is a Cloudflare Worker whose complete source is
in this repository under telemetry-ingest/; it writes to Workers Analytics
Engine, whose row is exactly _sample_interval, blob1–blob20, dataset,
double1–double20, index1, and timestamp — there is no IP, country,
or geo column, so storing one is structurally impossible rather than merely
disabled. The handler reads two request headers, never touches the request's
geo properties, logs nothing, and validates against a closed field set that
rejects an entire batch carrying any unpublished key. Cloudflare's retention
for that data is a fixed three months. Setting telemetry_endpoint = ""
instead writes each batch to $CODEWHALE_HOME/telemetry/dryrun.jsonl and
constructs no HTTP client at all, so you can read exactly what would have been
sent.
Turning it off is an answer, not a flag: it deletes the random install id,
truncates every buffered event, and leaves a permanent tombstone that a
session already running re-checks before it appends and before it sends. A
failed wipe fails closed. CODEWHALE_TELEMETRY=0 is a hard floor that beats
--telemetry true and the config key, and a value the parser cannot read
also resolves to off. Fleet workers are hard-off. A repo-local
.codewhale/config.toml can set neither key.
Never collected: prompts, completions, tool arguments, diffs, file contents,
filenames, paths, git remotes, repo or branch names, memory entries, chat
history, credentials (not even a boolean asserting one exists), model ids,
custom provider table names, MCP server names, error or panic message bodies,
per-event timestamps, keystrokes, clipboard, screenshots, or location. The
full schema is docs/TELEMETRY.md, and a test parses the
field names out of that file and asserts set equality with the structs the
serializer uses.
This supersedes the roadmap's previous "no Codewhale product telemetry" entry,
which moves from "Ruled out" to an opt-in framing. What stays ruled out:
always-on or silent telemetry, per-keystroke or per-tool-call phone-home, and
any third-party ad or analytics SDK in the runtime binary.
glm-5.3, glm-5-3,
zai-glm-5.3, zai-glm-5-3). Z.ai had not released GLM-5.3 as of
2026-08-03 — the ids are registered so they resolve to the Z.ai/OpenRouter
routes instead of being rewritten to another vendor's model, and they will
fail upstream until Z.ai ships the model. Metadata (context, output,
reasoning controls) is inherited wholesale from GLM-5.2 pending official
Z.ai release metadata; pricing is intentionally absent, and GLM-5.2 remains
the default Z.ai model. No third-party gateway roster gained the model:
OpenCode Zen, OpenCode Go, Alibaba Model Studio, and TelecomJS publish no
glm-5.3 entry, so Codewhale advertises none.
keys) with browser device flow, profile- and origin-scoped secure sessions,
refresh/revocation, redacted BYOK-vault management, and a token-free Runtime
account receipt. Provider authentication remains separate, and cloud
remains a compatibility alias.
automation tool.
/v1/runtime/info; unknown source provenance continues to fail
closed.
plugin.toml scaffold is deliberately out
of scope for this train.
automation tool
(PR #5183).
EX_TEMPFAIL
exit.
Changed
/fleet fleets (Enter selects in the row's own scope). Session route changes
stay temporary until /fleet save, /fleet save-as, or /model save-default.
{brand} token parity preserved.
permission_posture. Auto-Review can proceed without approval or structured
question modals, unresolved holds fail closed, and a call planned under stale
authority is retried after a posture change (PR #5025).
Terminal::clear() issue a blocking cursor-position report that
raced the TUI input loop and could kill first launch; both pins are
load-bearing, because 0.30.0 declares ratatui-core ^0.1 and would
otherwise resolve forward on its own (PR #5192 by @bistack; upstream
ratatui/ratatui#2640).
todo_write as the single canonical progress tool, and
work_update, TodoWrite, and todo stay registered as hidden
compatibility aliases so saved transcripts keep replaying.
sentinels.
timeout_ms, and block as an alias
for wait, so a habit formed on other wait tools gets the duration it
asked for instead of silently falling back to the 30 s default; the result
metadata reports the real wait_timeout_ms applied.
Fixed
before: line — putting the
exact facts a revision had just removed back into the prompt.
muse-spark-1.2, so the CLI and
app-server routed those aliases somewhere the configured default never
pointed. The registry now carries 1.2 and the contributor variant.
write_authority=read_only now fails closed at spawn instead of launching a
labeled write role that silently had only recon tools and then self-BLOCKED
after burning a turn (#5123). The check is deliberately narrow, because two
neighbouring combinations are legitimate and stay legal:
general) and takes its capability from authority, not from its name, so a
-- read-only worker is an ordinary general-purpose child. Worker, scout,
-- reviewer, and verifier remain the four canonical read-only Fleet roles.
implementer to its saved profile while scoping that child to verification.
Callers that spelled a read-only narrowing as type: "implementer" should
move it to role: "implementer".
N left) when the child's own ledger has unsettled items — never a
fabricated zero when no list exists.
files: workspace and
/status read sandbox workspace-write while nothing was restricted. Both
now resolve the real backend and say (unenforced).
category = "shell" deny hook — the security control docs/HOOKS.md
documents — silently never fired. Categories now use the registered names,
and multi-action tools classify by action.
Duration::from_secs_f64 panics on a negative). Parsing is now guarded and
bounded to one hour.
SK-live-… survived.
/bin/rm -rf / did not match a rm -rf / rule), and a typed Allow
rule no longer auto-approves a chained suffix such as git log ; curl … | sh.
start_line:"1200" string used to
return the head of the file, and a non-string stdin ran the command with no
stdin and reported success.
127.evil.example.com
is no longer treated as loopback.
rlm_open; Bash rather than exec_shell).
#[tokio::main], leaving every worker thread on the 2 MiB default while
only the owner thread received the explicit 16 MiB stack — and the engine runs
on a worker. A debug-build agent dispatch exceeded that stack and raised
SIGABRT, which is not a panic and so could not be caught; the process died
mid-spawn with no child request ever issued. Release builds were unaffected.
model_overrides exported each role's model while dropping its
provider, so a scout pinned to another provider's model was dispatched against
the active client and denied at the wire — visible as an instant auth failure
on the first sub-agent of a fan-out.
sidebar_focus = "auto" into a pinned
always-on strip, which had silently handed that panel to every user who had a
settings file at all. (An empty panel collapses; a panel holding settled
to-dos or finished workers is not empty — see the standing-register entry
below.)
base_url no longer receives Alibaba-specific
enable_thinking fields, and qwen3.8-max is no longer sent a thinking
switch it does not accept (PR #5233 by @Inference1, closing #5203).
enable_thinking / preserve_thinking / reasoning_effort only when the
configured base_url is a verified Alibaba Chat Completions host, so
pointing a modelstudio-* provider ID at a custom gateway no longer injects
DashScope's dialect into it. qwen3.8-max and qwen3.8-max-preview are
thinking-only and no longer receive an enable_thinking: false they cannot
honor; preserve_thinking is sent for the models documented to accept it, so
their reasoning trace survives into the next turn; and deepseek-v4* /
glm-5.x map the reasoning tier onto the documented high / max ladder.
web_search_call items, and parses cache-hit, cache-miss, cache-write, and
pricing telemetry while retaining the OpenAI-style nested fallback.
D:\DevEco Studio\... install) keeps its
--sysroot intact through the final Rust link, and extend the no-SDK release
guard to keep the re-quoting contract (PR #5095).
retrieve_tool_result ref for the elided middle instead of telling the
model the bytes are unrecoverable; write failures degrade to the honest
no-ref footer.
.md paste file; the submitted message now carries only the
@-mention so the model reads the file once.
Bash writes with
"cannot prove a bounded file target" and pushed toward worktree isolation,
which puts the work in a checkout the operator never looks at. The gate now
asks the question it meant to ask: is another running child writing in this
shared checkout. Concurrent writers are still gated; a lone builder writes in
the workspace you are actually watching.
work_update as coordination tools. Neither is callable by the model —
update_plan replays older Plan artifacts and work_update is a hidden
compatibility alias — so the page listed two tools a reader cannot use and
omitted todo_write, the one they can.
Security
npm audit for
the website.
Removed
/debt, /cleanup, /slop, and /canzha
command surface.
Contributors
|
Key Features of DeepSeek TUI
Terminal Native Workflow
DeepSeek TUI operates entirely within the terminal, allowing developers to work without switching between browser windows or external interfaces.AI Assisted Coding
The assistant can read and edit files, generate code, explain logic, and help automate development tasks.Shell Command Execution
It supports running terminal commands directly through the interface, streamlining development workflows.Git Integration
Developers can manage repositories, review changes, and handle version control related tasks from inside the tool.Multiple Work Modes
DeepSeek TUI includes modes like Plan, Agent, and YOLO, offering different levels of automation and approval control.Large Context Handling
The tool is built around DeepSeek V4 capabilities, including support for extremely large context windows that help with understanding bigger codebases.
User Experience
DeepSeek TUI is designed for developers comfortable with terminal environments. The interface is keyboard focused and efficient, though beginners may need time to adapt.
The workflow feels closer to tools like Claude Code or Codex style assistants rather than traditional chat applications. Community feedback on Reddit and GitHub discussions highlights its speed and practical coding workflow.
Performance and Compatibility
Because it is written in Rust, DeepSeek TUI is lightweight and responsive. It supports Linux, macOS, and Windows, with installation available through npm, Cargo, or direct binaries.
Performance depends heavily on the connected DeepSeek models and API configuration, but the local interface itself remains fast and efficient.
Pros
Fast terminal native workflow
AI powered coding and automation
Lightweight Rust based architecture
Supports file editing and shell execution
Open source and actively developed
Cons
Requires familiarity with terminal workflows
Depends on external AI APIs
Advanced automation modes may feel risky for inexperienced users
DeepSeek TUI is ideal for developers, DevOps engineers, and terminal focused power users who want AI assistance integrated directly into their command line workflow. It is especially attractive for users seeking a lightweight alternative to browser based AI coding tools.
DeepSeek TUI combines AI coding assistance with the efficiency of terminal workflows. Its fast performance, flexible automation, and developer focused design make it one of the most interesting open source AI terminal tools currently gaining traction.
Developer:
Hunter Bown
Operating System:
Windows / macOS / Linux
Date Added:
2026-08-08T16:02:07.134Z
Categories:

Post a Comment/Report Broken Link: