The store installed community plugins through its own writer chain (family `pluginManager` service to the loopback gateway to the `dsh plugin` CLI), which the packaged Desktop client refuses. Install through the official in-process manager's remote face when the host publishes it, keep the family face as the fallback, add a manage action that hands an installed bundle to the official Plugins page via `pluginNavigation.openBundle`, and bridge both faces with `ctx.inject` as contract observations instead of cross-package imports.
dsh-web · DeepSeek Harness Web GUI Plugins & Themes
中文 | English
dsh-web is a modular plugin ecosystem and desktop workstation for the DeepSeek Harness (DSH) Web GUI. It equips AI coding workflows with task automation boards, cross-device mobile remote control, SSH terminal operations, visual Git commit graphs, and personalized theme skins. Users can install the complete plugin bundle into an existing dsh web instance via the official profile mechanism, or into the official DeepSeek Harness desktop client the same way.
DeepSeek Harness (DSH) Web Plugin Ecosystem · Modular Agent Workspace
Workshop · Task Board · Mobile Remote · SSH Ops · Git Graph · Usage Statistics
What It Is · Desktop Client · Workshop · Feature Plugins · Skins · Quick Start · FAQ · Known Limitations · Community
What It Is
Stock DeepSeek Harness Web delivers fundamental chat interactions and tool execution capabilities. However, production workflows often require concurrent task scheduling, persistent background runs, remote collaboration, and developer-oriented tooling.
dsh-web mounts directly into dsh web via official profiles without modifying DSH core source code, providing a comprehensive modular extension suite:
- Developer Operations & Collaboration Plugins: Long-running scheduled task boards, cross-device mobile remote control, SSH terminal operations and file transfers, Git history graphs with worktree isolation, full session archive management, model capability declarations, and a sidebar resource explorer;
- Decoupled Visual Themes & Assets: Functional plugins and visual assets remain strictly separated. The skin loader handles stylesheet and dynamic effect rendering, while themes and animated desktop pets can be installed on demand from the DSH Workshop;
- Bundled or Pick-and-Choose: Install everything with one command via
@linxin666/dsh-web-all, or install individual plugins independently. The aggregate pre-integrates every family plugin; the alpha branch bundles no external plugin such asdsh-better-sidebar(install it on demand) - see the plugin bundle installation and configuration guide.
| Capability | Stock dsh web | dsh-web family |
|---|---|---|
| Agent presets | Official presets (Standard / Minimal…) | Official and community presets |
| Custom model capabilities | None | Declare image input and reasoning efforts per model, and disable / re-enable custom providers |
| Task board | None | Multi-column board + cron-scheduled real runs |
| Mobile remote control | None | QR pairing with SSE real-time sync; the same link also pairs a PC browser |
| Remote server ops | None | SSH panel: terminal / transfer / tunnels / cluster |
| Usage statistics | None | Token usage, provider balances, plan quotas, and Token Bank |
| File preview & changes | None | Right panel: explorer / editor / terminal / git / browser |
| Git visualization | None | Branch picker + commit history graph |
| Session archive | None | Browse and filter every session, batch archive / restore / delete with automatic policies |
| Themes & skins | Default theme | Blue Fantasy bundled with skin center; others install from Workshop |
Find the Right DSH Extension
| Goal | Entry Point |
|---|---|
| Run and schedule autonomous AI agent tasks | Task board and cron execution |
| Access DSH from a mobile phone or another computer | Mobile and PC browser remote control |
| Manage remote servers over SSH | SSH terminal, file transfer, and tunnels |
| Customize skins and desktop pets | Explore the DSH Workshop |
| Run inside the official desktop client | Official desktop client |
| Add plugins to an existing DSH setup | Quick start installation |
Official Desktop Client
The DeepSeek Harness desktop client ships from the official project; this repository no longer publishes dsh-desktop-* installers with its Releases. The desktop client shares the ~/.dsh data directory with dsh web, and installs plugins into its own desktop profile with the same command:
dsh plugin --profile desktop add @linxin666/dsh-web-all@latest
Restart the desktop client afterwards and the plugin entries appear under "Settings > Plugin Configuration".
Workshop (dsh-market.com)
The DSH Workshop is a unified hub for themes, pets, plugins, and community Agent presets. Entries are ranked by verified device likes; themes provide live interactive previews, and plugins offer copy-ready install commands. The classic Blue Fantasy theme is bundled with the skin center plugin; additional themes and pets can be previewed, inspected, and installed on demand. In the Web GUI, the "Workshop" settings tab lets you browse the catalog directly: skins and pets install straight into the DSH home directory for immediate use, while community presets install to an inactive local library and activate under "Settings → Agent Presets".
The site is built directly from this repository: static pages are generated by scripts/market-build from authoritative manifests (skin.json, pet.json, and community.json), while interactive features like anonymous voting run on Cloudflare Workers edge functions with D1 persistence (one vote per device). Changes deploy automatically on push to main.
The Workshop provides an open, transparent space for community creators to share their work and for users to discover vetted extensions.
Feature Plugins
Task Board(任务看板)
Open from the "Task Board" icon in the sidebar. Tasks are organized into five columns: Backlog, Todo, In Progress, Done, and Failed. Clicking "Run" on any card dispatches the task to an autonomous DSH agent session; status updates automatically write back to the card upon completion, and you can jump straight into the execution session to review the conversation log.
Tasks also support persistent host scheduling: configure cron expressions in task details (such as running daily upgrades at 23:00 or generating weekly reports on Mondays at 09:00). Scheduled tasks execute reliably even when browser tabs are closed. An optional power-management setting prevents system idle sleep while allowing screens to power down on macOS, Windows, and Linux with systemd-logind (disabled by default).
Tasks can optionally reuse sessions: when enabled, subsequent runs continue in the previous session if it remains idle in memory (retaining conversation context while re-applying designated permissions and models); if the session has exited, a fresh session is spawned automatically.
| Multi-Column Board | Scheduled Execution |
|---|---|
![]() |
![]() |
Mobile Remote Control(移动端远程控制)
Click the phone icon at the bottom of the sidebar to open the pairing modal. Scan the QR code or copy the link to access the full Web GUI on your mobile browser with dedicated touch adaptations: tap the whale floating button to toggle the sidebar, swipe horizontally to show or hide panels, long-press session items for context menus, press Enter for newlines, and interact with 16px inputs configured to prevent viewport auto-zooming. Desktop-heavy panels (such as SSH terminals, task boards, and Git graphs) automatically collapse on mobile screens, leaving a focused interface for message exchange, model switching, and reasoning adjustments in sync with the desktop state.
The same pairing link works seamlessly on secondary PC browsers: open the desktop URL variant on another computer to launch the full Web GUI interface. All traffic passes through the authenticated /remote/api proxy route; unpaired devices encounter an access-denied banner. Pairing tokens are single-use and time-limited, and clicking "Stop" immediately revokes active device sessions. Communication defaults to the local network; pairing over wide-area networks is easily enabled using tunnel utilities like cloudflared. For security, route connections through the pairing gateway and avoid setting --trusted-host on tunnel domains, as that flag bypasses pairing checks (see remote plugin README).
Real-Time Streaming & Tunnels: Mobile clients rely on SSE (Server-Sent Events) for token streaming. Services like Cloudflare quick tunnels (trycloudflare.com) and Tailscale Serve do not proxy SSE streams by default; under these connections, the plugin automatically falls back to short polling. Messages send and receive normally with a minor polling interval delay. For smooth real-time streaming, use tunnels supporting persistent HTTP connections (such as Cloudflare named tunnels or self-hosted TCP proxies).
| Mobile Home (Whale toggle) | Session List |
|---|---|
![]() |
![]() |
| Chat (Thinking & Tool execution) | Model Selection Sheet |
![]() |
![]() |
SSH Remote Ops(远程连接)
Open the remote operations panel from the "SSH" sidebar icon. Supports key-based and password authentication, and imports existing host definitions from ~/.ssh/config with one click; configurations persist securely in ~/.dsh/dsh-ssh.json. Available capabilities include:
- Web Terminal: Full-featured interactive terminal powered by xterm.js with real-time output and responsive window resizing;
- File Transfer: Built-in SFTP file manager with visual upload and download progress bars and directory browsing;
- Port Forwarding: Local tunnels routing to remote internal services (such as databases or internal APIs), binding exclusively to 127.0.0.1;
- Cluster Execution: Concurrently dispatch commands across multiple servers filtered by alias, environment, or tags;
- Agent Integration: AI agents share host configurations with the panel; simply instruct the agent in chat to inspect remote servers and run diagnostics.
Usage Statistics(使用统计)
Monitor token consumption, provider balances, and subscription quotas under "Settings > Usage Statistics" with automated refresh and manual query options.
- Usage Breakdown: Track daily input, output, and cache token metrics segmented by provider and model, alongside 30-day expenditure trends; compatible providers display real-time balances, and DeepSeek official routes estimate off-peak pricing and billing details.
- Subscription Tracking: Monitor percentage allowances and reset schedules for personal plans including Kimi, GLM, MiniMax, OpenCode Go, and Codex / ChatGPT.
- Token Bank: Automatically mint 1 Whale Yuan for every token processed via DeepSeek official routes, tracked as collectible Whale Vouchers with sharing capabilities.
- Pet Integration: With the desktop pet plugin installed, floating desktop companions provide conversational bubble notifications displaying current quota balances and daily consumption.
Tracking starts upon initial plugin activation without backfilling historical sessions; vouchers cover DeepSeek official usage within configured ledger retention windows. See dsh-usage README for supported providers and limitations.
Model Capabilities(模型能力)
Configure model-level parameters for custom providers directly within "Settings > Models". This plugin supplies a visual editor for capabilities omitted from default cards:
- Image Input Declarations: Expand "Model Capabilities" within custom provider cards to explicitly declare multimodal support (
["text","image"]or["text"]); - Reasoning Effort Profiles: Mark non-reasoning models (hiding thinking sliders in the chat composer), inherit global defaults, or define explicit reasoning tiers with exact payload values;
- Immediate Effect & Conflict Protection: Changes save through official storage pathways and apply immediately without restarting the host; writes enforce revision checks to prevent overwriting concurrent updates;
- One-Click Provider Toggling: Temporarily disable provider routes without losing stored API keys, instantly hiding inactive models from selection pickers.
Note: Declarations inform outgoing request payloads and do not perform automated gateway probing. If a model is declared with image support but the upstream provider gateway rejects multimodal payloads, the request will fail at the gateway level. Details in dsh-model-capabilities README.
Right Panel(右侧面板)
The right panel is provided by community plugin dsh-better-sidebar. It embeds a file explorer, inline code editor, auxiliary terminal, Git interface, and web browser, while allowing third-party plugin panels to dock cleanly. The alpha branch's aggregate does not bundle it (its 0.19.1 peers declare ^0.1.5-rc.1, which this branch's 0.1.7-rc.2 cohort does not satisfy); install it on demand with dsh plugin --profile web add dsh-better-sidebar@latest. Architecture and setup details are available in its repository.
Git Graph(Git 图谱)
An integrated Git toolbar and visual commit history graph positioned above the chat composer:
- Branch & Commit Graph: Visualizes branch forks, merge swimlanes, and commit timelines to help developers track changes and switch branches across projects.
- Git Worktree Isolation: When multiple agents run concurrent tasks, modifying files in the primary checkout risks branch collisions and dirty working trees. The plugin creates isolated worktrees under
$DSH_HOME/worktrees/on dedicated branches (wt/<name>), leaving primary repository files untouched. An integrated management view lets developers inspect and prune temporary checkouts. - Automated Policies & Agent Tooling: Enable automatic worktree allocation for new sessions entering Git workspaces, or provide the
git_worktreetool to autonomous agents for self-directed environment management.
| Git Graph | Parallel Sessions with Git Worktree |
|---|---|
![]() |
![]() |
Session Archive Manager(会话归档管理)
The session archive manager (dsh-session-archive) provides centralized governance over growing numbers of short-lived and persistent conversation logs:
- Centralized Search & Filtering: Audit active, archived, blank, subagent, and orphaned historical sessions with keyword filtering across titles, workspaces, and session IDs.
- Batch Actions with Cascade Safety: Perform multi-select archiving, restoration, and permanent deletions. Physical deletions display affected descendant counts and estimated reclaimed disk space, requiring confirmation prompts for bulk actions; active sessions and sessions with running children remain protected against deletion.
- Automated Retention Policies: Two optional automated rules archive stale sessions based on last activity and prune aged archives by retention period, with dry-run previews supported before enabling.
Permanent deletions cannot be undone, and all operational routes bind strictly to the local loopback interface. See dsh-session-archive README.
More Plugins(更多插件)
- Skill Explorer (
dsh-client-ui-skill-explorer): Inspect and manage loaded agent skills grouped by origin, featuring keyword filtering across names and descriptions, workspace scoping, and activation toggling. - Plugin Manager (
dsh-client-ui-plugin-manager): Install plugins from npm or git repositories via official host interfaces, inspect statuses, and adjust configuration settings.
Skins
The classic Blue Fantasy theme serves as the built-in default skin: rich indigo gradients, semi-transparent frosted glass elements, and custom whale artwork provide an immersive dark-mode visual experience. Additional themes and Wallpaper Engine animated backgrounds are managed by the skin center and can be previewed, tried on, and installed through the Workshop.
Quick Start
System Requirements
- DeepSeek Harness installed with
dsh webfunctioning properly. - npm installations have no extra requirements; building from the source repository requires Node.js >= 22 and pnpm.
Get Started in 3 Steps (npm, Recommended)
- DSH Web CLI (Browser Installation):
- Install the bundle:
dsh plugin --profile web add @linxin666/dsh-web-all@latest - Restart
dsh webto display new plugin icons in the sidebar - Navigate to "Settings > Plugin Configuration" to toggle individual features, or select skins from the skin panel
- Install the bundle:
- Official Desktop Client (DeepSeek Harness Desktop):
- Install and launch the official desktop client
- Install the bundle:
dsh plugin --profile desktop add @linxin666/dsh-web-all@latest - Restart the client and toggle features under "Settings > Plugin Configuration"
To install only the skin engine, use
@linxin666/dsh-client-ui-skin-center. If your package manager pins an older version due to release age restrictions, see "Install Troubleshooting" below.
Install Directly from the GitHub Repository
The repository root includes a standard dsh.bundle manifest, allowing installation directly from git without cloning or manual building:
dsh plugin --profile web add github:zhu1090093659/dsh-web
# Equivalent: dsh plugin --profile web add git+https://github.com/zhu1090093659/dsh-web.git
This approach is equivalent to installing the npm aggregate package. Use either method, but do not install both simultaneously to prevent conflicting entry IDs.
Install from the Repository (Development)
For plugin development and debugging, build from source using Node.js >= 22 and pnpm:
# 1. Clone the repository
git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
# 2. Install dependencies and build all packages
pnpm install
pnpm -r build
# 3. Link packages into the web profile (linking sub-packages before the aggregate is recommended)
node scripts/link-profile.mjs
dsh plugin --profile web add link:$(pwd)/packages/dsh-web-all
# 4. Restart the web server
dsh web
Note: Because profile directories are not configured as pnpm workspaces, internal
workspace:*dependencies fall back to npm versions. If published npm packages differ from local builds, runnode scripts/link-profile.mjsfirst to ensure all sub-packages resolve to local build outputs.
Upgrade from the legacy aggregate
If your profile still references @linxin666/dsh-web-ui-all, the plugin manager's update routine recognizes this as a migration path (@linxin666/dsh-web-ui-all → @linxin666/dsh-web-all). Clicking "Update" executes a safe transactional replacement: the legacy package is unmounted and replaced with the new aggregate while preserving bundle order, followed by configuration verification via --dump-config with automatic rollback upon errors.
Install a Single Plugin
Install individual components independently if you prefer not to use the complete bundle:
dsh plugin --profile web add @linxin666/dsh-client-ui-task-board@latest # Task Board
dsh plugin --profile web add @linxin666/dsh-ssh@latest # SSH Remote Ops
dsh plugin --profile web add @linxin666/dsh-usage@latest # Usage Statistics
dsh plugin --profile web add @linxin666/dsh-client-ui-model-capabilities@latest # Model Capabilities
dsh plugin --profile web add @linxin666/dsh-pet@latest # Desktop Pet
dsh plugin --profile web add @linxin666/dsh-session-archive@latest # Session Archive Manager
dsh plugin --profile web add dsh-better-sidebar@latest # Right Panel (not bundled on the alpha branch)
Full npm Package Directory
All plugins are published under the @linxin666/dsh-* npm scope:
| Package Name | Description |
|---|---|
| @linxin666/dsh-web-all | Aggregate bundle: complete suite of feature plugins and skin center |
| @linxin666/dsh-client-ui-task-board | Task board: multi-column tracking and cron scheduling |
| @linxin666/dsh-remote-web-ui | Mobile remote control: QR pairing, cross-device sync, and touch gestures |
| @linxin666/dsh-ssh | SSH operations: web terminal, SFTP transfers, tunnels, and cluster commands |
| @linxin666/dsh-usage | Usage statistics: token consumption, balances, plan tracking, and Token Bank |
| @linxin666/dsh-client-ui-model-capabilities | Model capabilities: declare multimodal input and reasoning effort profiles |
| @linxin666/dsh-pet | Desktop pet: registry-driven interactive floating companions |
| @linxin666/dsh-client-ui-git-graph | Git graph: visual commit logs, branch flows, and worktree isolation |
| @linxin666/dsh-client-ui-skin-center | Skin center: runtime engine for themes and dynamic backgrounds |
| @linxin666/dsh-client-ui-market | Workshop client: one-click installation for skins, pets, and presets |
| @linxin666/dsh-client-ui-preset-center | Preset center: community Agent preset repository management |
| @linxin666/dsh-client-ui-plugin-manager | Plugin manager: install, toggle, and configure extensions |
| @linxin666/dsh-client-ui-skill-explorer | Skill explorer: browse, search, and manage registered agent skills |
| @linxin666/dsh-session-archive | Session archive: search, batch restore, and cascade pruning |
| @linxin666/dsh-client-ui-community-plugins | Community plugin source: authoritative index powering the Workshop |
| @linxin666/dsh-client-ui-web-ui-settings | Preferences panel: global settings and UI configurations |
Verify and Uninstall
Restart dsh web after installation; the appearance of corresponding sidebar icons indicates successful mounting. Run dsh --profile web --dump-config to confirm the configuration layer is loaded. If icons do not appear, verify that the service process has fully restarted.
To uninstall: run dsh plugin --profile web remove @linxin666/dsh-web-all and restart dsh web.
Architecture and mounting details are documented in docs/plugins.md.
Install Troubleshooting
Common Installation and Build Resolutions
Missing Sub-package Errors under Isolated pnpm: In strict isolated mode, pnpm may hoist only the aggregate package while placing sub-packages in nested directories, causing errors like
Cannot find package '@linxin666/dsh-...'. AddnodeLinker: hoisted(orpublic-hoist-pattern: ['@linxin666/*']) to your profile'spnpm-workspace.yamland reinstall.
Blocked Build Scripts (ERR_PNPM_IGNORED_BUILDS): If pnpm blocks native build scripts during initial setup, append
cloudflared,cpu-features, andssh2toallowBuildsin your profile'spnpm-workspace.yaml.
pnpm 11 Release Age Restrictions: For newly published versions, pnpm 11's default security window (
minimumReleaseAge) may pull older package revisions. Exclude the namespace inpnpm-workspace.yamlto ensure timely updates:minimumReleaseAgeExclude: - '@linxin666/*'
FAQ
Why do sidebar icons not show up after restarting?
Verify that the package was added with the --profile web parameter and run dsh --profile web --dump-config to inspect active configuration layers. Simply refreshing the web browser is insufficient; the backend dsh web process must be fully restarted.
Why did a scheduled task miss its execution window?
Scheduling runs directly on the dsh web host daemon without requiring browser tabs to stay open. If the host process exits or the system enters sleep, missed triggers are skipped rather than backfilled; overlapping runs will defer to the next matching interval. Enable task board power protection to keep the machine awake during unattended schedules.
Why does mobile pairing fail to stream real-time updates?
Streaming relies on SSE. Cloudflare quick tunnels and Tailscale Serve do not proxy SSE connections, causing the client to fall back to short polling. For seamless token streaming, use tunnels supporting persistent connections such as Cloudflare named tunnels or self-hosted TCP reverse proxies.
How do I revert a theme preview?
The skin center includes zero-disk previewing: preview changes apply instantly in memory and revert upon closing the preview panel. Themes persist to disk only when you click "Apply".
Can I install only the themes or a single plugin?
Yes. Install @linxin666/dsh-client-ui-skin-center for themes alone, or install any single package using the package names in the "Install a Single Plugin" section.
Can individual plugins be installed alongside the aggregate bundle?
Yes. Aggregate bundle entries use the web-ui- ID prefix (such as web-ui-usage), avoiding duplicate loader ID collisions with standalone packages. The host automatically deduplicates instances. Generally, the aggregate package alone fulfills all needs.
Known Limitations
- Task board scheduling runs on the backend host; closing browser tabs will not interrupt tasks, but stopping the host process or putting the machine to sleep will skip missed schedules without backfilling. Optional power management prevents idle sleep only and cannot bypass manual sleep, lid closure, or power shutdown (see dsh-task-board README).
- SSH credentials (passwords and private key passphrases) persist locally in
~/.dsh/dsh-ssh.jsonwith 0600 permissions; reconnecting during connection drops may replay non-idempotent commands, and remote outputs return without sanitization (see dsh-ssh README). - Mobile streaming uses SSE: connections through proxies without SSE pass-through automatically drop back to polling with small update latencies.
- Full repository builds require Node.js >= 22 and pnpm; standard npm installations have no developer tool prerequisites.
Community
Join the community to discuss workflows, report issues, and share ideas.
Scan the QR code to join the "DSH Web UI" QQ community:
You can also join our Discord community, or submit bug reports and feature requests directly via GitHub Issues.
Friendly Links
- DeepSeek Harness Desktop —— Modern desktop client tailored for the DeepSeek Harness ecosystem.
- LINUX DO —— An earnest community for modern developers.
- dshfind —— Learning and discovery hub for DSH: paper deep-dives, plugin directory, and community leaderboards.
- deepseek-plugin-store —— Community plugin directory to discover, install, and share vetted tools.
- dsh-data-agent —— Dedicated data agent presets for querying, analyzing, and transforming datasets.
- dsh-TUI —— Fullscreen terminal TUI inspired by Claude Code: status bars, streaming thought display, and TPS monitoring.
- dsh-tianshu-tui —— Interactive terminal interface with built-in TDD and evidence gates.
- dsh-genui —— Generative UI rendering inline cards, diagrams, 3D scenes, and forms directly within assistant replies.
- dsh-annotation —— Inline annotation plugin: select text, attach notes, and prompt models with point-by-point feedback.
Contributing
- Review CONTRIBUTING.md before opening a pull request; attach screenshots or evidence for user-facing modifications;
- Follow Conventional Commits (such as
fix(task-board): resolve state sync issue); emoji usage is prohibited across code, documentation, and commit messages; - Scaffold new plugins with
node scripts/dsh-plugin-new <name>; new skins are scaffolded in the dsh-skins repository withnode scripts/dsh-skin-new.cjs <id>; - Verify repository quality gates before submitting:
pnpm typecheck && pnpm test && pnpm docs:check; complete development workflow in docs/development.md.
License
Licensed under Apache-2.0. Imported third-party code must retain original licenses and attributions; active third-party dependencies should be integrated via npm packages or forks rather than code copying.
Sources & Licensing
Third-party sources & licenses (click to expand · plugins / skins / pets)
Plugins
- dsh-task-board / dsh-git-graph / dsh-pet / dsh-remote-web-ui / dsh-web-settings / dsh-ssh / dsh-skill-explorer / dsh-market / dsh-plugin-manager / dsh-community-plugins / dsh-web-all — authored by zhu1090093659, Apache-2.0 (zhu1090093659)
- dsh-better-sidebar — external integrated plugin omdsh-dev/DSH-better-sidebar (right panel, an on-demand install on the alpha branch rather than a bundled dependency), MIT (omdsh-dev)
- dsh-ssh — implemented against the capability list of badseal/ssh-skill; code is this repository's Apache-2.0 (zhu1090093659), the upstream capability list belongs to badseal/ssh-skill
- Community plugin index — 37 external plugins with sources and licenses declared by their authors, registered in community.json, browsable in Settings → Community Plugins and on dsh-market.com
Skins (third-party authors or artwork)
- maid-atelier / orca-link — Small-tailqwq/dsh-deep-whale, CC BY-NC-SA 4.0; attribution chains in the in-package LICENSE/NOTICE (maid: 上善 → zipzip → Small-tailqwq; orca: 上善 → Small-tailqwq)
- phoebe-atelier — Theater-ahyeon/phoebe-atelier, CC BY-NC-SA 4.0; the character Phoebe is (c) Kuro Games (Wuthering Waves); AI-assisted fan derivative, non-commercial use only (attribution chain in the package LICENSE/NOTICE)
- cyber-night — logan0116; code under the repository license, backdrop generated by the author with OpenAI GPT and released as CC0 1.0 (public domain)
- future-window — zhuqin; original background and decorative artwork Apache-2.0 (in-package LICENSE/NOTICE, attribution in skin.json)
- matrix — contributor seanchen original (Matrix dark eye-care skin), Apache-2.0 (declared by seanchen)
- blue-fantasy — powerdog996 (DreamSkin community) adapted by dsh-web; no third-party license statement in the skin directory (pending author confirmation)
- whalechan-harness — Whale-chan Theme contributors from online111111/whalechan-dsh-theme; character direction references Neko3000/deepseek-whalechan, CC BY-NC-SA 4.0, with full attribution and unofficial-project disclaimer in the skin directory LICENSE/NOTICE
- deep-current — Twelveeee; no license statement in the skin directory (pending author confirmation)
- furina — artwork by sclass53, skin code zhu1090093659 (in-directory LICENSE is BSD-3-Clause); the Furina character belongs to miHoYo (Genshin Impact) and is used as fan art
- harbor — moeblack; no license statement in the skin directory (pending author confirmation)
- miku — artwork by 涂山苏苏, skin code zhu1090093659; the Hatsune Miku character belongs to Crypton Future Media, INC. (Piapro Character License)
- pink-sakura — artwork by guomengjia618-dot, skin code zhu1090093659 (in-directory LICENSE is Apache-2.0)
- war-thunder — skin code is this repository's (Apache-2.0); the background art and launcher crest are extracted read-only from a local War Thunder client, copyright Gaijin Entertainment, personal non-commercial use only (see skin.json attribution)
- blue-throated-bee-eater — skin code is this repository's (dsh-web, Apache-2.0); background photo by Kriangsak Hongchumpae (Wikimedia Commons, CC BY-SA 4.0, downscaled and re-compressed; the license and attribution chain are in the in-directory NOTICE and skin.json attribution)
- whale-maid (Whale Girl · Sea Gaze) — the skin engineering, both backdrop illustrations and the decorative SVG assets are original work by stushansusu, released under CC BY-NC-SA 4.0 (in-directory LICENSE, attribution in skin.json)
The remaining skins (mint / whale-song / whale-mom / dragon-heir / minecraft / trading / summer-liquid-glass / wallpaper-exclusive / xp) are original to this repository, Apache-2.0.
Pets
- ouo-neko — Pessimist0906, MIT (contribution record in PR #1118 and dsh-pet THIRD_PARTY_NOTICES.md)
- whale / whale-refined — whale ornaments derived from the DeepSeek wordmark (MIT / BSD-3-Clause; materials and statements in dsh-pet THIRD_PARTY_NOTICES.md)
- miku — artwork by stushansusu (涂山苏苏), MIT; the "Hatsune Miku" name, likeness and portrait rights belong to Crypton Future Media, INC. (Piapro Character License)
- jyn (女仆鲸鱼娘) — 11726, MIT (contribution record in PR #1362)
- doro (朵拉) — stushansusu, MIT (contribution record in PR #1630); the "doro" character is an unofficial fan-made meme derivative of Dorothy from Goddess of Victory: Nikke — the character and all related rights belong to SHIFT UP, the assets are personal non-commercial use only, and this is not affiliated with the official work (see THIRD_PARTY_NOTICES.md)
- blue-throated-bee-eater (蓝喉蜂虎) — original to this repository (dsh-web, Apache-2.0; contribution record in PR #1402)
- starry-doll (星夜人偶) — Theater-ahyeon, CC BY-NC-SA 4.0 (non-commercial use only)
Contributors
If you like it, give us a star.
Support the Project
Thank you to everyone who uses, gives feedback on and contributes to dsh-web. If this project helps you, you are welcome to scan the QR code to support its continued maintenance and development:















