Desktop AI Worker · AI collaboration assistant
Simple, efficient, reliable, economical.
Dipper Worker is a desktop AI collaboration assistant. Through conversation you can handle file operations, code execution, web retrieval, browser automation, image text recognition, document generation, and more, plus built-in browser, terminal, screenshot, bookmarks, and other desktop collaboration features.
Chinese: README_ZH_CN.md.
- Simple: Add a workspace → fill in API Base / Key / Model → start chatting. Built-in catalog of 20 major model providers (DeepSeek, Zhipu, Tongyi Qianwen, Doubao, Kimi, Google, OpenAI, Anthropic, xAI, etc.); one-click select and auto-fetch model lists.
- Efficient: Agent worker dispatches built-in tool packs (+ optional workspace plugins and MCP); after each turn, background learning deposits memory and reusable skills—smoother over time; explore subagents run in parallel by CPU core count.
- Reliable: Keys encrypted via OS secure storage (safeStorage); permission gates + authorized folders + path guards + network guards (SSRF protection); sessions persisted locally.
- Economical: Pure local desktop app—no subscription, no middleman service; ships with China mirrors for packaging, ready out of the box. Conversations automatically conserve tokens: oldest messages are trimmed to context budget before send, long sessions auto-compact with summaries, avoiding oversized context driving up per-request cost.
- Built-in browser: Multi-tab, back/forward/refresh, bookmarks (library + floating overlay), browsing-data cleanup, browser fingerprint isolation, open local HTML / images.
- Built-in terminal: Default cwd is the current workspace; create / restart / end sessions.
- File panel: Browse the workspace tree; quick open / reveal in folder / download.
- Screenshot: Global hotkey; annotate (rectangle / arrow / text / brush), color picker.
- System tray: Closing the window keeps the app in the tray for quick restore; single-instance lock.
- Session management: Groups, drag-and-drop, pin, archive, search, rename, context compaction.
- Settings: AI providers, Agent parameters, permissions & authorized folders, shortcuts, appearance (theme / layout / font scale).
- Chinese / English UI: Language auto-detected; switch anytime.
After each turn, background silent deposition:
- User preferences & habits →
memory/USER.md - Project facts / decisions → searchable memory notes
- Reusable experience →
skills/*/SKILL.md(auto-loaded by the agent next time) - Reusable flows →
workflows/*/WORKFLOW.md(mermaid orchestration + steps + rules; agent follows the flow)
Low-confidence results are discarded automatically; logs go to .dipper-worker/learning.jsonl and do not interrupt by default.
- Single workspace: Sidebar
+to add or switch directories; rename, change color / icon, open folder, remove (clears registration only, does not delete disk). - Global config (includes secrets):
~/.dipper-worker/worker.json— Provider / API Key / Model / MCP / Agent params, workspace registry.- Optional
retentionblock controls cleanup (built-in defaults if omitted):maxUserMemoryBullets,maxMemoryNotes,toolResultRetentionMs,learningLogRetentionMs/learningLogPruneMinSize/learningLogPruneIntervalMs.
- Optional
- Inside workspace (no secrets):
sessions/,session-groups/,memory/,skills/,workflows/,uploads/,downloads/,outputs/,plugins/; permissions, authorized dirs, and appearance profiles under<workspace>/.dipper-worker/. - Workspace plugins: install packs at
<workspace>/plugins/<pack>/(manifest.json+ entry). External packs share one plugin-host child process and one workspace trust domain (packs are not isolated from each other). Loaded on workspace start; hot-reloaded when files change (idle; selective by kind).reloadWorkspace()forces a full refresh. Trusted local code; cannot override builtin pack ids or tool names. Sample:examples/plugins/echo-pack/. - Security: API keys live only in OS secure storage (
secrets.json, safeStorage encrypted);getConfigis redacted before return; plaintext keys only via the dedicatedreveal-api-keychannel after in-app confirmation.
Three process layers (renderer / worker / runtime); microkernel packages live under runtime/packages. Electron is one product host; the runtime can also run headless via runtime/hosts/cli.
┌─ renderer/ ─────────────────────────────────────────────────────┐
│ Renderer (React) ◀── contextBridge ──▶ Electron IPC │
└───────────────────────────────┬─────────────────────────────────┘
│ ipcRenderer.invoke / on
▼
┌─ worker/ ───────────────────────────────────────────────────────┐
│ Main (Electron) ◀── UtilityProcess ──▶ RPC │
└───────────────────────────────┬─────────────────────────────────┘
│ call / host-req · event / host-res
▼
┌─ runtime/bootstrap ─────────────────────────────────────────────┐
│ Agent Worker (UtilityProcess · agent-host) │
└───────────────────────────────┬─────────────────────────────────┘
├──▶ LLM Provider HTTP (OpenAI-compatible)
├──▶ MCP Server JSON-RPC 2.0
└──▶ Child processes exec / scripts
| Package | Role |
|---|---|
@dipper/protocol |
Wire messages, invoke allowlists, capability / pack IDs, plugin contracts |
@dipper/kernel |
CapRegistry, transports, PluginRegistry, disk pack loader |
@dipper/agent |
Runtime, sessions, tools, packs, runners (runtime/packages/agent) |
@dipper/host-desktop |
Desktop browser + OS secrets capabilities |
@dipper/host-cli |
File/env secrets (no browser) |
dipper-worker/
├── renderer/ # Layer 1 · React UI
├── worker/ # Layer 2 · Electron main / preload / IPC / desktop
│ ├── bridge/ # AgentBridge
│ ├── caps/ # browser Cap implementations
│ ├── desktop/ # tray / browser-panel / terminal / screenshot…
│ ├── i18n/ # main-process UI strings (e.g. tray)
│ └── ipc/
├── runtime/ # Layer 3 · Agent runtime (standalone headless capable)
│ ├── bootstrap/ # agent-host, child-host
│ ├── hosts/cli/ # embedded / child library API
│ └── packages/ # @dipper/* microkernel packages
├── shared/ # renderer ↔ worker type boundary
├── examples/plugins/ # Sample workspace tool packs
├── scripts/ # electron-dev / dist / clean / rasterize-icon
├── resources/ # Icons
├── skills/ # Bundled skills
└── docs/ # PACKAGE / PROTOCOL / MODEL-DATA / PLUGINS / workflow
- Node.js >= 20
- pnpm 11+
cd dipper-worker
pnpm install
pnpm dev # build packages + electron main → Vite + Electron| Command | Description |
|---|---|
pnpm dev |
Build runtime/packages + worker + runtime/bootstrap → Vite + Electron |
pnpm build |
Clean dist → build renderer + electron (includes build:packages) |
pnpm build:packages |
Clean and build @dipper/* packages |
pnpm typecheck |
Build packages + TypeScript check |
pnpm runtime:smoke |
Headless runtime smoke (no Electron) |
pnpm icon:rasterize |
Generate platform icons from SVG |
pnpm dist |
Icons + build + package for current environment |
pnpm dist:win |
Windows x64: NSIS |
pnpm dist:mac |
macOS arm64: dmg + zip |
pnpm dist:linux |
Linux x64: AppImage |
pnpm dist:protected:* |
Obfuscate electron side, then package (raise reverse-engineering bar) |
Packaging: docs/PACKAGE.md. App↔model data: docs/MODEL-DATA.md. Wire protocol: docs/PROTOCOL.md. Workspace plugins: docs/PLUGINS.md.
Dipper Worker is open source under the MIT License.
Copyright © 2026 Dipper. All rights reserved.