|
██████╗ ███████╗███████╗██████╗ ██████╗ ██████╗ ██████╗ ███████╗
██╔══██╗██╔════╝██╔════╝██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝
██║ ██║█████╗ █████╗ ██████╔╝██║ ██║ ██║██║ ██║█████╗
██║ ██║██╔══╝ ██╔══╝ ██╔═══╝ ██║ ██║ ██║██║ ██║██╔══╝
██████╔╝███████╗███████╗██║ ╚██████╗╚██████╔╝██████╔╝███████╗
╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
|
DeepCode: Open Agentic Coding
Advancing Code Generation with Multi-Agent Systems
🖥️ Interface Showcase
🖥️ DeepCode Desktop
Work with DeepCode in a visual workspace for Sessions, goals, tool activity, code changes, and verification.
DeepCode provides TUI, Desktop, and Web clients over one shared local service.
They share Projects, Session history, models, Skills, permissions, Goals, and
Automations. Use deepcode, deepcode desktop, or deepcode web; see
Quick start for installation and your first task.
🎬 Introduction Video
🎯 Watch our complete introduction - See how DeepCode transforms research papers and natural language into production-ready code
"Where AI Agents Transform Ideas into Production-Ready Code"
📑 Table of Contents
News
2026-09-09 · TUI, Desktop, and Web share one local background service
- Choose your interface. Run
deepcode for the TUI, deepcode desktop
for the native app, or deepcode web to open the workbench in your browser.
All three connect to the same local service; Web needs no DeepCode account.
- Continue the same task across interfaces. Closing a client leaves running
work in the background. Reconnect from another interface to follow the same
conversation, review tool activity, and respond to approvals. The computer
must remain awake, and pending approvals still need your response.
- Configure and verify your models. Save cloud or local model connections
for use across all three interfaces. Browse available models, check a model's
response, and test streaming and tool calls before using a custom server.
See Models and providers.
- Manage your background service and prepare for upgrades. Use
deepcode service commands to check status, read logs, or stop after current
work finishes. Create a runtime snapshot before upgrading and restore it when
needed; keep project files in your usual version control or backup.
See Upgrading DeepCode.
Start with the updated Quick start and
first coding task tutorial.
(#212)
2026-09-06 · DeepCode v2.2.0: Session context-window caps, compaction that leaves a memory, and a fully localized Desktop
- Cap a Session's context window.
/context 64k in the TUI or the
preset next to the Desktop model picker narrows the model's published
window for future Turns; the cap is frozen into each accepted Turn and
feeds the compaction gate directly. /context auto follows the model
again. (#203)
- Compaction leaves a note in memory, and memory notes cannot escape their
boundary. A compaction summary is deposited into the workspace memory on
a background thread, and injected memory content is wrapped in an
<untrusted-data> boundary whose closing tags are escaped, so a poisoned
note cannot forge instructions. (#204)
- Appearance settings speak Simplified Chinese too, completing the
Desktop shell's zh-CN coverage. (#202)
2026-09-03 · Desktop catalog race, an honest command screen, GLM-5.2, and two dependency bumps
- Switching projects no longer strands the MCP catalog. A probe or
mutation started in one project can no longer invalidate the load of the
project you switched to, so the catalog stops sticking in a loading state.
(#201)
- The legacy
execute_bash screen matches on argv, not substrings.
rm -r -f, --recursive --force, chmod 0777 and a destructive stage
inside a pipeline are caught; touch rm-rf-notes.txt is not. It stays a
cheap first pass in front of the sandbox, which remains the boundary.
(#195)
- GLM-5.2 is in the model catalog — 1M context, 128K output,
reasoning_effort high / max. (from #198)
- Security bumps:
browserslist past GHSA-c83g-rgw3-j3cx in the Desktop
toolchain, and the App Server sidecar's pypdf to 6.16.1
(CVE-2026-84309/84310/84311).
2026-08-28 · Community fixes: plugin credential warnings and a wider zh-CN Desktop
- Agent Plugin manifests now warn about plaintext credentials. Literal
env and headers values in a Plugin's mcp.json that look like secrets
produce a redacted warning instead of loading silently, and the docs point
to runtime credential bindings instead. (#194, landed 2026-08-27)
- Most of the Desktop shell speaks Simplified Chinese. The thread header,
Goal rail, approval card, inspector, sidebar, and the Updates and
Diagnostics settings gained about a hundred zh-CN strings; English stays
the inline default. (#187)
2026-08-25 · Command executors close two bypasses
- Case and whitespace no longer slip past the dangerous-command check, and
the native
mkdir/touch/rm/cp/mv fast path declines any operand
outside the working directory, so those commands run through the sandbox
like every other command instead of as in-process file operations. (#193)
2026-08-23 · Five repaired contributions land together
- MCP servers can start lazily.
deferLoading keeps a server off until
the agent calls activate_server; deferred servers stay reachable and
cancellation-safe. (#184)
- Hooks see the whole lifecycle.
SessionEnd runs exactly once at
teardown and PreCompact can inject context before a compaction. (#172)
- Instruction files can be excluded, and the dangerous preset must be named
explicitly. (#186)
- Windows private files get a fail-safe ACL, applied once at creation
(#164); the Desktop sidecar's pip pin also moved past PYSEC-2026-3721 (#191).
2026-08-19 · Sessions that survive resume, compaction, and a second window
- Resuming a session restores what the agent did, not only what it said.
Tool calls and their results are part of the canonical record now, so a
resumed agent can answer "what did you just run?". A test makes the rule
executable: every request a run sends must be rebuildable from the session
file alone.
- Compaction keeps the recent tail. The checkpoint replaces the older
range and everything recent survives verbatim — assistant messages and tool
results included — instead of dropping them and putting the summary last.
Manual
/compact used to refuse almost every real conversation; it works,
and the checkpoint speaks as the model's own history, so it stops being
discounted as someone else's report.
- Context pressure is measured, not guessed. The gate now anchors on the
size the provider itself reports. The built-in estimator prices Chinese
prose at more than twice its real cost, which was compacting Chinese
conversations at roughly half the context they could hold.
- Two windows on one Session no longer crash each other. Each Session
now has one live writer, enforced by an OS lock held around a turn: the
second window gets a sentence naming who is running it, instead of a
process dying to a database constraint about half the time. Alternate
freely between Desktop and the terminal — just not mid-turn.
2026-08-18 · The runtime learns dsh's context discipline, and the TUI gets a face
- A new turn no longer throws away the prompt cache. The environment
block used to be re-inserted before your newest message every turn, so each
turn diverged from the previous request right where that block had been:
7,420 prompt tokens recomputed at every turn boundary, now 28.
- The TUI has a logo, a live status line, and tool cards that read. A
spinner and a sweep while work runs, paths written the way you would type
them, the plan tool's checklist visible at last, and a turn footer with its
time and token usage. An idle TUI costs nothing to animate.
- A source-level comparison against dsh became a plan. Where the message
list the model sees comes from, what compaction should keep, and what the
session record must contain — measured and written down, and four
unreferenced documents retired.
2026-08-17 · Fixes from a review pass over the new settings and TUI work
- A declared model reads the same everywhere. Per-model declarations now
shape the catalog a picker shows, not only what a Turn executes with, so a
context window you set to avoid overflow is the number you see.
- Adopting fetched models shows them immediately. The catalog cache is
keyed on the settings that shape it, instead of serving the previous remote
listing for up to an hour.
- Escape closes one thing. Dismissing the provider editor no longer tears
down the settings dialog around it and discards a half-typed key.
- A removed model row takes its own capacities with it rather than leaving
them on the row that survived — which then saved them onto the wrong model.
- Automated runs keep their tools. A default agent preset chosen for
interactive chatting no longer narrows
deepcode exec and goal runs behind
your back.
- The provider section says it is user-scoped, instead of letting the
dialog's project write scope imply otherwise.
2026-08-16 · The TUI answers every bare command with a selector
- Type the command, pick from a list.
/model now opens the full model
directory — every configured connection's catalog (remote snapshot or
declared entries, near a thousand rows on OpenRouter) in one filterable
selector with the current route pinned first and each model's published
reasoning ladder on Shift+Tab; Enter commits model and effort together.
/preset, /effort, /permissions, /transcript and /skill join
/resume: a bare invocation opens a picker with the current choice
marked, while argument forms and piped runs keep their text paths.
- Background tracebacks can no longer shred the transcript. Stdlib
logging is bridged into loguru with call-site fidelity, so file-only
transports really are file-only; and the durable event relay backs off
exponentially on persistent failure — one traceback per streak, one-line
repeats, a recovery notice.
2026-08-15 · Settings grow up: a dsh-style dialog, declared models, and a safer config
- A connection's key now reaches exactly the requests it was resolved
for. Building a provider no longer exports the key into the process
environment, where every same-template connection could pick it up as its
own; removing a provider un-configures every key source instead of letting
it reappear; and when a launch environment variable shadows a pasted key,
the editor says which one and that it wins. Verification also works from
async hosts now.
- The agent-preset picker grew up. A menu with per-preset descriptions
and trust marking replaces the cramped native dropdown, the duplicate
"Default" row is gone, and a started session shows a read-only label of
what it runs.
- Manage what each connection actually serves. The provider editor can
fetch the live model list from a connection's endpoint and adopt picked
models as its manual list, an environment-provided key locks the paste
field instead of silently outranking it, and connection rows show the
discovered model count.
deepcode chat reads like a terminal app, not a log. A restyled
transcript — brand-gradient banner, status-colored tool cards with result
elbows, block spacing, word-boundary wrapping — plus streaming that
survives the prompt redraw with real colors instead of ?[36m litter.
- Desktop Settings became a dsh-style dialog. General / Models /
Plugins / Agent presets in a left rail, with Open configuration file and
the write-scope picker in the header. General gains the five canonical
rows — default agent preset for new sessions (applied as a by-value
snapshot at creation, CLI and TUI included), permissions, language
(English/中文, first translated batch), Light/Dark/System appearance
cards, and a steer-or-queue busy-Enter preference.
- Models are declarations now.
manualModels entries can carry a
label, capacities, and the published reasoning ladder; declarations are
authorit