DS·IDE

DeepSeeks agentic desktop IDE built on Tauri v2 — no Electron.
Powered by the DeepSeek model, with a partner who has a name of his own.


DSIDE.webp


What is DS·IDE?

DS·IDE is a lightweight, native desktop IDE built for agentic coding with DeepSeek. Instead of a heavy Electron stack, it runs on Tauri v2 — a Rust core, a lean web frontend, and deep system integration.

The coding partner inside the app is called Ziggy. He picked that name himself, once — until then he went by the placeholder Seeky. Not an anonymous agent, not a dropdown option: a named collaborator.


Current Capabilities

A working app that goes well beyond a prototype:

Chat & Agent

  • Agentic chat with streaming — real tool execution, not just text: reading, writing, editing, shell, search, memory and sub-agents.
  • One answer, one timeline — thinking, text and tool calls in the order they happened. Tool rows open to show the command, its output, and whether it ran without asking.
  • Long-term memory you can read, correct and retire (nothing is deleted), with a visible marker for what you wrote or rewrote.
  • Context ring & compression — see how full the model's window is; older turns fold into a summary the model writes itself (automatically at 75 %, or on click).
  • Image attachments by paste or picker — they stay with the message and are sent along.

Files & Formats

  • File tree and source view (Monaco, read-only).
  • Previews without external tools: Markdown, PDF, images, Word (docx, doc, odt), Excel (all sheets, values or formulas), presentations (pptx, ppt, odp) and RTF.
  • Integrated browser — web content right inside the IDE.
  • Skills live in ~/.ds-ide/skills and can be written in the app.

The App

  • Everything survives a restart — sessions, open tabs, the last file, the window geometry.
  • Settings with a group named after your partner: memory, name, and your own instructions.
  • Everyday mode — no shell, no code panels, no code editor. For documents and the web.
  • Six languages (de, en, es, fr, ru, zh-Hans), light and dark theme, adjustable reading size.
  • Security first: API key in the OS keychain, never in the frontend. Everything local in SQLite.

The authoritative status, every design decision and the open list live in PROGRESS.md — not in this file.


Getting Started

Prerequisites

  • Node + pnpm (pnpm 10 — another major gives ERR_PNPM_UNEXPECTED_STORE, the store layouts are incompatible)
  • Rust (stable)
  • Linux: WebKitGTK 4.1, libsoup3, GTK3

Run it

pnpm install
pnpm tauri dev

First start: enter the API key under Settings → Usage & Model → API Key. It is stored in the OS keychain. Without "Full permissions" enabled, write, edit and bash do not run — and the tool row says so.

Build an Installer

pnpm tauri build

Produces src-tauri/target/release/bundle/: .deb, .rpm and .AppImage on Linux (dmg on macOS, nsis on Windows). GitHub Actions builds all three platforms on a tag; see .github/workflows/release.yml.

Testing

pnpm build                                                   # vue-tsc + vite
cd src-tauri && cargo test                                   # unit tests
DS_IDE_API_KEY=... cargo test --lib live_deepseek -- --ignored --nocapture

The live tests talk to the real provider and cost tokens; they are ignored by default.

Structure

src/                  Vue frontend (components, stores, i18n)
src/engine/           persona, name pool, mode policy
src/lib/              previews, office readers, persisted UI state
src-tauri/src/        Rust: engine/ (LLM loop + tools), db.rs (SQLite), secret.rs (keyring)
scripts/              small tools (e.g. the name-table importer)

Origins & Acknowledgments

Protocol formats and tool names were adopted from MiniMax Code (MIT): packages/protocol/src/runtime.ts, agent-tools/src/desktop/builtin-defs.ts.

The persona was written independently; no identity-defining text was copied. Typeface: Ubuntu Font Licence 1.0 (public/fonts/UFL.txt). Both are credited in the app under Settings → About.

The reference checkouts this project was built against (minimax-code-main, minimax-jarvis, kilocode-main) are not part of this repository; where to find them is recorded in PROGRESS.md §30–§31.