How flykit-cc/dsh-flykit works
dsh-flykit extends DeepSeek Harness’s web GUI into an agent cockpit. A user opens the session panel to browse and edit workspace files, preview supported documents, and watch filesystem changes; they can also start or control coding-agent PTYs and inspect their output. The host plugin scopes workspace operations to the session and exposes routes consumed by the browser client. Separate branches provide model selection and status, Claude usage, OpenRouter catalog refresh, and an embedded WhatsApp viewer. The README documents these capabilities; unsampled implementation details and uncertain wiring are omitted.
Main entry points: src/index.ts Host routes · FilePanel.tsx File panel · terminals.ts PTY service · client/index.ts Client plugin
Components 29
Host services
- Workspace files
src/files.ts - Git status
src/git.ts - File watcher
src/watch.ts - Host routes
src/index.ts
Browser cockpit
- Client plugin
src/client/index.ts - File panel
src/client/FilePanel.tsx - Explorer tree
src/client/Explorer.tsx - Editor and preview
src/client/Editor.tsx - Document preview
src/client/Preview.tsx - Terminal views
src/client/Terminals.tsx
Agent terminals
- PTY service
src/terminals.ts - Terminal output
src/term-io.ts - Agent tools
src/agent-tools.ts - Agent notifications
src/notify.ts
Models and status
- Status line
src/client/StatusLine.tsx - Model picker
src/client/ModelPicker.tsx - Catalog sync
src/catalog-sync.ts - Claude usage
src/claude-usage.ts
Embedded apps
- Apps tab
src/client/Apps.tsx - App startup
src/apps.ts - App proxy
src/apps-proxy.ts - WhatsApp viewer
apps/whatsapp/wa.mjs
Other components
- DSH user
- DSH host
- Session workspace
- DSH settings
- OpenRouter catalog
- Anthropic usage API
- Headless Chrome
Connections 42
- DSH user → DSH host: opens web UI
- DSH host → Host routes: loads plugin
- DSH host → Client plugin: loads client
- DSH user → File panel: uses panel
- Client plugin → File panel: injects panel
- File panel → Explorer tree: shows files
- File panel → Editor and preview: opens files
- Editor and preview → Document preview: renders documents
- File panel → Host routes: requests session data
- Host routes → Workspace files: lists and accesses
- Workspace files → Session workspace: reads and writes
- Host routes → Git status: gets status
- Git status → Session workspace: checks repository
- Host routes → File watcher: streams changes
- File watcher → Session workspace: watches files
- DSH user → Terminal views: uses agents tab
- Terminal views → Host routes: sends terminal requests
- Host routes → PTY service: manages PTYs
- PTY service → Session workspace: starts in workspace
- PTY service → Terminal output: buffers output
- Terminal views → Terminal output: renders stream
- DSH host → Agent tools: registers tools
- Agent tools → PTY service: starts and controls
- Agent tools → Terminal output: reads output
- PTY service → Agent notifications: signals output changes
- Agent notifications → DSH host: sends agent message
- Client plugin → Status line: injects status
- Client plugin → Model picker: injects picker
- Model picker → DSH host: uses model directory
- Host routes → Catalog sync: runs catalog refresh
- Catalog sync → OpenRouter catalog: fetches models
- Catalog sync → DSH settings: writes model list
- Host routes → Claude usage: serves usage
- Claude usage → Anthropic usage API: fetches usage
- DSH user → Apps tab: opens Apps tab
- Apps tab → Host routes: requests app list
- Host routes → App startup: ensures apps running
- App startup → WhatsApp viewer: starts app server
- Apps tab → App proxy: loads proxied viewer
- Host routes → App proxy: registers proxy
- App proxy → WhatsApp viewer: proxies viewer and CDP
- WhatsApp viewer → Headless Chrome: controls and streams