English · 简体中文
deepDDW gives DeepSeek Harness (DSH) the three pieces it's missing — memory, a knowledge base, and document search — and makes all of it reachable from any device on your LAN. No app install. No DSH source changes.
- 🧠 Memory — cross-session long-term memory, write/search via DSH's official MCP interface
- 📚 Knowledge base — ingest & search your docs (industry docs, SOPs, research notes) anytime
- 🌐 LAN-wide multi-device — deploy once; phones, laptops and tablets on the same network all use the same DSH workbench
Try it in 60 seconds:
npm i -g @deepseek-ai/dsh # 1. install official DSH on the server
git clone https://github.com/ccch713/deepddw.git && cd deepddw
./install.sh --with-dsh # 2. install deepDDW
./install.sh --port 8600 # 3. start
# 4. from any device on your LAN: open http://<server-ip>:8600/ (phone: scan the QR to auto-pair)📸 Screenshot: phone / tablet accessing the workbench (coming soon).
Status: v0.3.0 · MIT · CI (pytest + ruff) ✅ · Multi-device on LAN + workspace isolation + backup/restore + TLS (opt-in) + LLM reflections & ranked memory search · Listed in awesome-deepseek-harness · Roadmap below
Most DSH extensions give you memory alone. deepDDW is a complete workstation — memory + knowledge base + document search + LAN-wide multi-device access:
| Official DSH limitation | deepDDW solution |
|---|---|
| 🔒 Local-only access | ✅ LAN-wide access: deploy once on a server; desktops, laptops, phones and tablets on the same network all connect |
| 🧠 No memory | ✅ Long-term memory write/search — conversation experience is accumulated |
| 📚 No knowledge base | ✅ Knowledge base search/ingest — industry docs, SOPs, research notes, callable anytime |
In one sentence: turn a "personal toy" into a tool a small team can actually use — fully packaged, easy to deploy, low maintenance, ready for small businesses (up to ~20 people) for their daily AI workflow.
deepDDW is built on our DDW AI HUB platform — validated in enterprise deployments and packaged into the DSH ecosystem as open source (MIT).
📱 Phone / 💻 Desktop / 📱 Tablet / 🖥️ Laptop — any device on the LAN
│ (browser access, no App install)
▼
deepDDW Gateway (one server on the LAN)
├─ /dsh/* proxy → DSH engine (official UI, model config & chat untouched)
├─ /api/* proxy → DSH RPC/API
└─ /api/v1/* deepDDW capabilities: Knowledge Base / Memory / Docs / LLM config
│
│ DSH official MCP client (streamable-http)
▼
deepDDW MCP tools (auto-invoked by the model)
├─ mcp__deepddw__ddw_kb_search knowledge base search
├─ mcp__deepddw__ddw_memory_put write memory
├─ mcp__deepddw__ddw_memory_search search memory
└─ mcp__deepddw__ddw_docs_portal_search document search
Integration = DSH standard MCP: DSH natively supports MCP clients; deepDDW exposes a standard streamable-http endpoint — zero intrusion, zero changes to DSH source. The UI, settings and model configuration all remain official.
The official DSH listens on localhost only (for security), so phones/tablets cannot connect. deepDDW solves this with gateway proxying:
- DSH stays bound to localhost (official security design preserved)
- deepDDW gateway listens on the LAN, any device opens
http://<server-ip>:8600/to reach the original DSH workbench - All data stays on your server — never leaves the LAN
Deploy once, the whole family/team can use it — a capability the official DSH does not provide.
# 1. Install DSH (official) on the server
npm i -g @deepseek-ai/dsh
# 2. Install deepDDW (packaged, one command)
git clone https://github.com/ccch713/deepddw.git
cd deepddw && ./install.sh --with-dsh
# 3. Start
./install.sh --port 8600
# 4. Open from any device on the LAN:
# http://<server-ip>:8600/ → original DSH workbench
# Phones/tablets: "Add to Home Screen" for an App-like experience
# 5. Add your API Key in DSH Settings → Models
# 6. In chat, ask the model to "search the knowledge base" or "remember ..."
# → it auto-invokes the mcp__deepddw__* toolsRequirements: one ordinary computer/server (8 GB RAM minimum, 16 GB+ recommended), Python 3.11+, no GPU needed (LLM via cloud API or local Ollama).
A Windows build is produced automatically by the windows-build workflow — download deepddw-windows.zip from the latest Actions → Artifacts:
# 1. Unzip anywhere (no Python/Node needed on the target machine)
deepddw-windows/deepddw.exe
# 2. Optional: point data/config at a custom location
set DDW_DATA_DIR=%USERPROFILE%\.deepddw
set DDW_ACCESS_TOKEN=<your-token>
# 3. Start (listens on 0.0.0.0:8500) → open http://<host>:8500/health
deepddw.exeUpgrades are cheap: replace the whole folder with a newer zip — your data (under %USERPROFILE%\.deepddw) is untouched. See docs/windows-packaging.md for the full evaluation (PyInstaller one-dir + CI auto-build) and the manual build steps.
deepDDW is built for up to 20 devices on your LAN sharing one gateway:
- Device identity — each browser persists a
device_id(localStorage) and can set a friendly name on the launcher; reconnects keep the same identity. - Online status — devices register/heartbeat to the gateway;
/api/v1/status(Token-protected) shows who is online, active WebSockets, request counts, DB size and version. The launcher renders a live status card for admins. - Rate limiting — sliding-window per Token + per IP (default 60 req/min/token, global cap → 503 overload protection); configurable via
config/deployment.yaml→security.rate_limit.*orDDW_RATE_LIMIT_*env. - SQLite concurrency — WAL +
busy_timeout=5000+synchronous=NORMALon every connection, plus a process-wide write lock for cross-table transactions (20 concurrent writers verified, nodatabase is locked).
POST /api/v1/device/register # register / rename this device (idempotent)
POST /api/v1/device/heartbeat # keep-alive
GET /api/v1/status # status panel (token required)
Also in 0.2.0:
- Workspace isolation — devices pick a workspace (default
shared); memory/logs and MCP memory tools are scoped per workspace, docs filtered by slug prefix. Legacy clients are unaffected. - Session resume across devices — recent session summaries (up to 5) with a "continue" button: pick up a conversation on your phone where you left off on desktop.
- One-click backup / restore — backup via API (downloadable); restore validates the SQLite file (header + integrity check) and keeps a
.pre-restoresafety copy before replacing the main DB. - Optional TLS — one-command self-signed cert (
scripts/gen_self_signed_cert.sh, 1-year), enabled viasecurity.tls.*; HTTP unchanged when off. For external access prefer a Caddy/Nginx reverse proxy (seedocs/tls.md). - Version / upgrade check —
/api/v1/versionreportslatest_version/update_available(GitHub releases, 1h cache, offline-degraded); the launcher shows an upgrade banner.
| Capability | Description |
|---|---|
| 🔐 Local-only data | Knowledge base & memory stay on your server, never leave the LAN |
| 🏠 LAN password-free | Optional (opt-in): LAN requests skip the token — OFF by default (set DDW_LAN_BYPASS=1 to enable; trusted LANs only) |
| 🌐 External access | Optional Token gate (short-code supported); unauthorized → 401 |
| 🛡️ DSH secure binding | DSH stays on localhost; gateway exposes it — official security design preserved |
| Component | Description | License |
|---|---|---|
| DSH engine | Official DeepSeek Harness (source untouched) | MIT |
| deepDDW gateway | FastAPI + SQLite + MCP dual-protocol | MIT |
| Memory / Knowledge base | SQLite storage (agentmemory / vectors optional) | MIT |
| Search | Optional SearXNG | AGPL-3.0 (server-side HTTP, exemption assessed) |
deepDDW itself: MIT License — free to use, modify, and commercially deploy; keep the copyright notice.
See NOTICE for full third-party attribution.
- Extend with official DSH plugins: deepDDW keeps DSH's native plugin mechanism intact. Install official plugins straight from the npm registry via the DSH official command — the only channel we recommend, to avoid supply-chain poisoning:
See
dsh plugin --profile web add <npm-package> # official npm registry only
SECURITY.mdfor our third-party plugin disclaimer and what deepDDW guarantees (memory & knowledge base only; no data theft/exploitation/sale). - Knowledge distillation: use whatever distillation skill / workflow you prefer — the methodology is yours; deepDDW provides the complete pipeline "distilled output → searchable knowledge base → model-usable". More plugins and tools are on the way.
- Memory / knowledge migration: knowledge base uses standard SQLite; memory is organized by namespace/key/value — import from other agents or tools.
- Feedback: we'd love to hear how you use it; stronger open-source tools are coming in future releases.
Only items actually planned or already delivered are listed here.
Delivered:
- Multi-device on LAN (0.2.0) — device identity/online registry, status panel, rate limiting, SQLite WAL concurrency (up to 20 devices)
- Workspace isolation (P1-1) — per-workspace memory/knowledge scoping at the gateway (default
shared, backward compatible) - Session resume across devices (P1-3) — "recent sessions" summaries (up to 5) with a continue button
- Optional TLS (P1-2) — one-command self-signed cert; external access via Caddy/Nginx reverse proxy (see
docs/tls.md) - Backup / restore API (P2-1) — one-click backup, downloadable; validated restore with
.pre-restoresafety copy - Load-test report (P2-2) — 5/10/20 devices: 0% errors, P95 ≤ 126 ms, no
database is locked(seedocs/load-report.md) - Version / upgrade check (P2-3) —
/api/v1/versionprobes the latest release (1h cache); launcher shows upgrade banner - Docker one-click deployment —
docker compose -f deepddw-compose.yml up -d --build(verified on a real macOS arm64 host: core + SearXNG containers up, health/MCP/chat end-to-end green) - Session → document auto-ingest — conversations saved to the knowledge base via
ddw.docs.save/ddw.session.docsMCP tools + REST API, searchable and traceable per session - Vector search enhancement — hybrid retrieval (SQLite FTS5/LIKE + LanceDB, RRF fusion; optional, degrades to keyword-only when LanceDB is absent)
- Windows packaging — PyInstaller one-dir build via the
windows-buildCI workflow, distributed as an Actions artifact, verified in release v0.1.0 (seedocs/windows-packaging.md) - Reflection & consolidation (LLM polish) — daily reflection follows a style guide (auto/professional/casual), enforces a progress/issues/tomorrow structure and avoids repeating the previous day; consolidation skips logging when the LLM judges the conversation valueless
- Memory search quality — results ranked by relevance score (hit-count × layer weight: user > notes > reflection > logs, plus freshness) instead of insertion order; keyword-expansion cache expiry tested
deepDDW — enterprise-grade capability, open-sourced for everyone.