DeepSeek CLI 🤖
Your AI-powered terminal companion for DeepSeek models
Unofficial terminal UI (TUI) + CLI for the DeepSeek platform — chat with DeepSeek models and collaborate with AI assistants that can read, write, execute, and plan with approval-gated tool access.
Not affiliated with DeepSeek Inc.
✨ Features
- Interactive TUI with multiple modes (Normal, Plan, Agent, YOLO, RLM, Duo)
- Comprehensive tool access – File operations, shell execution, task management, and sub-agent systems
- File operations: List directories, read/write/edit files, apply patches, search files with regex
- Shell execution: Run commands with timeout support, background execution with task management
- Task management: Todo lists, implementation plans, persistent notes
- Sub-agent system: Spawn, coordinate, and cancel background agents (including swarms)
- Web search: Integrated web search with DuckDuckGo
- Multi‑model support – DeepSeek‑Reasoner, DeepSeek‑Chat, and other DeepSeek models
- Context‑aware – loads project‑specific instructions from
AGENTS.md - Session management – resume, fork, and search past conversations
- Skills system – reusable workflows stored as
SKILL.mddirectories - Model Context Protocol (MCP) – integrate external tool servers
- Sandboxed execution (macOS) for safe shell commands
- Git integration – code review, patch application, diff analysis
- Cross‑platform – works on macOS, Linux, and Windows
🚀 Quick Start
- Get an API key from https://platform.deepseek.com
- Install and run:
# Install via Cargo
# Set your API key
# Bootstrap MCP + skills templates (recommended)
# Start chatting
- Press
F1or type/helpfor the in‑app command list.
If anything looks off, run deepseek doctor to diagnose configuration issues.
📦 Installation
From crates.io
Build from source
Direct download
Download a prebuilt binary from GitHub Releases and put it on your PATH as deepseek.
⚙️ Configuration
On first run, the TUI can prompt for your API key and save it to ~/.deepseek/config.toml. You can also create the file manually:
# ~/.deepseek/config.toml
= "YOUR_DEEPSEEK_API_KEY" # must be non‑empty
= "deepseek-reasoner" # optional
= false # optional
= 3 # optional (1‑20)
Useful environment variables:
DEEPSEEK_API_KEY(overridesapi_key)DEEPSEEK_BASE_URL(default:https://api.deepseek.com; China users may usehttps://api.deepseeki.com)DEEPSEEK_PROFILE(selects[profiles.<name>]from the config; errors if missing)DEEPSEEK_CONFIG_PATH(override config path)DEEPSEEK_MCP_CONFIG,DEEPSEEK_SKILLS_DIR,DEEPSEEK_NOTES_PATH,DEEPSEEK_MEMORY_PATH,DEEPSEEK_ALLOW_SHELL,DEEPSEEK_MAX_SUBAGENTS
To bootstrap MCP and skills at their resolved locations, run deepseek setup. To
only create an MCP template, run deepseek mcp init.
See config.example.toml and docs/CONFIGURATION.md for a full reference.
🎮 Modes
In the TUI, press Tab to cycle modes: Normal → Plan → Agent → YOLO → RLM → Duo → Normal.
| Mode | Description | Approval Behavior |
|---|---|---|
| Normal | Chat; asks before file writes or shell | Manual approval for writes & shell |
| Plan | Design‑first prompting; same approvals as Normal | Manual approval for writes & shell |
| Agent | Multi‑step tool use; asks before shell | Manual approval for shell, auto‑approve file writes |
| YOLO | Enables shell + trust + auto‑approves all tools (dangerous) | Auto‑approve all tools |
| RLM | Externalized context + REPL helpers; auto‑approves tools (best for large files) | Auto‑approve tools |
| Duo | Player‑coach autocoding with iterative validation (based on g3 paper) | Depends on phase |
Approval behavior is mode‑dependent, but you can also override it at runtime with /set approval_mode auto|suggest|never.
🛠️ Tools
DeepSeek CLI exposes a comprehensive set of tools to the model across 5 categories, with 16+ individual tools available, all with approval gating based on the current mode.
Tool Categories
File Operations
list_dir– List directory contents with file/directory metadataread_file– Read UTF‑8 files from the workspacewrite_file– Create or overwrite filesedit_file– Search and replace text in filesapply_patch– Apply unified diff patches with fuzzy matchinggrep_files– Search files by regex pattern with context linesweb_search– Search the web and return concise results
Shell Execution
exec_shell– Run shell commands with timeout support- Background execution – Run commands in background with task ID return
Task Management
todo_write– Create and update todo lists with status trackingupdate_plan– Manage structured implementation plansnote– Append persistent notes across sessions
Sub‑Agents
agent_spawn– Create background sub‑agents for focused tasksagent_swarm– Launch a dependency‑aware swarm of sub‑agentsagent_result– Retrieve results from sub‑agentsagent_list– List all active and completed agentsagent_cancel– Cancel running sub‑agents
System Behavior
- Workspace boundary: File tools are restricted to
--workspaceunless you enable/trust(YOLO enables trust automatically). - Approvals: The TUI requests approval depending on mode and tool category (file writes, shell).
- Web search:
web_searchuses DuckDuckGo HTML results and is auto‑approved. - Skills: Reusable workflows stored as
SKILL.mddirectories (default:~/.deepseek/skills, or./skillsper workspace). Use/skillsand/skill <name>. Bootstrap withdeepseek setup --skills(add--localfor./skills). - MCP: Load external tool servers via
~/.deepseek/mcp.json(supportsserversandmcpServers). MCP tools currently execute without TUI approval prompts, so only enable servers you trust. Seedocs/MCP.md.
🧠RLM (Reasoning & Large‑scale Memory)
RLM mode is designed for "too big for context" tasks: large files, whole‑doc sweeps, and big pasted blocks.
- Auto‑switch triggers: "largest file", explicit "RLM", large file requests, and large pastes.
- Shortcut:
/rlm(or/aleph) enters RLM mode directly. - In RLM mode,
/load @pathloads a file into the external context store (outside RLM mode,/loadloads a saved chat JSON). - Use
/replto enter expression mode (e.g.search("pattern"),lines(1, 80)). - Power tools:
rlm_load,rlm_exec,rlm_status,rlm_query.
rlm_query can be expensive: prefer batching and check /status if you're doing lots of sub‑queries.
👥 Duo Mode
Note: Duo mode is experimental and may not work correctly in all cases. Use with caution.
Duo mode implements the player‑coach autocoding paradigm for iterative development with built‑in validation:
- Player: implements requirements (builder role)
- Coach: validates implementation against requirements (critic role)
- Tools:
duo_init,duo_player,duo_coach,duo_advance,duo_status
Workflow: init → player → coach → advance → (repeat until approved)
📚 Examples
Interactive chat
One‑shot prompt (non‑interactive)
Agentic execution with tool access
Resume latest session
Work on a specific project
Review staged git changes
Apply a patch file
List saved sessions
Generate shell completions
đź”§ Troubleshooting
No API key
Set DEEPSEEK_API_KEY environment variable or run deepseek and complete onboarding.
Config not found
Check ~/.deepseek/config.toml (or DEEPSEEK_CONFIG_PATH).
Wrong region / base URL
Set DEEPSEEK_BASE_URL to https://api.deepseeki.com (China).
Session issues
Run deepseek sessions and try deepseek --resume latest.
Skills missing
Run deepseek setup --skills to create a global skills directory, or add --local
to create ./skills for the current workspace. Then run deepseek doctor to see
which skills directory is selected.
MCP tools missing
Run deepseek mcp init (or deepseek setup --mcp), then restart. deepseek doctor
now checks the MCP path resolved from your config/env overrides.
Sandbox errors (macOS)
Run deepseek doctor to confirm sandbox availability. On macOS, ensure
/usr/bin/sandbox-exec exists. For other platforms, sandboxing is limited.
đź“– Documentation
docs/CONFIGURATION.md– Complete configuration referencedocs/MCP.md– Model Context Protocol guidedocs/ARCHITECTURE.md– Project architecturedocs/RLM.md– RLM mode deep‑divedocs/MODES.md– Mode comparison and usageCONTRIBUTING.md– How to contribute to the project
đź§Ş Development
See CONTRIBUTING.md for detailed guidelines.
đź“„ License
MIT
DeepSeek is a trademark of DeepSeek Inc. This is an unofficial project.