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.
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/skillsand 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.
