All apps · 0 apps
DSH
Docker app from zhangliang5327's Repository
Overview
Readme
View on GitHubDeepSeek Harness
English | 中文
DeepSeek Harness (dsh) is an open-source agent harness developed by DeepSeek AI.
It is built on an everything-is-a-plugin architecture and powered by Cordis, whose design is described in A Programming Paradigm for Spatiotemporal Composability.
Documentation: https://deepseek-harness.github.io/deepseek-harness/
Developer preview
DeepSeek Harness is in developer preview and iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.
Review the safety notice before running the project.
Run
Run from npm
Install Node.js, then run:
npx @deepseek-ai/dsh web
The command starts the Web UI at http://127.0.0.1:3080 by default and opens it in the default browser for a local launch. An SSH launch only prints the host URL because the SSH client or editor owns the local forwarded address. Pass --no-open to run the server without opening a browser. See Web UI guide.
Run from source
To run from a repository checkout:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
pnpm run build prepares the repository artifacts. pnpm dsh web uses those built artifacts without rebuilding.
Community and support
- Submit feedback or bug reports through GitHub Discussions.
- Add the
dsh-plugintopic to your plugin repository for discoverability. - Join DeepSeek Harness Discord community.
Contributing
See CONTRIBUTING.md.
Development
Start with the development guide and architecture documentation.
pnpm run dev:web builds, serves, and rebuilds client bundles on source edits in one terminal, and make help lists the matching Make targets for Web and Desktop; the guide's application commands section owns the full table.
For agents, follow AGENTS.md.
Citation
@misc{deepseek-harness2026,
title={DeepSeek Harness: Everything is a Plugin},
author={DeepSeek-AI},
year={2026},
publisher={GitHub},
howpublished={\url{https://github.com/deepseek-ai/deepseek-harness}},
}
License
Third-party dependencies and their licenses are disclosed in THIRD_PARTY_NOTICES.md.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/2220545672/dsh:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--security-opt seccomp=unconfined --security-opt systempaths=unconfined
Template configuration
DeepSeek Harness Web UI 的宿主侧绑定,格式必须是 IP:端口(Unraid 会把裸端口号误解析成 IP,容器会卡在 Created)。容器内端口固定为 8080;想只让本机访问就改成 127.0.0.1:8080,暴露范围请配合「允许访问的 IP / 域名」一起收紧。| Host-side binding, and it MUST be written as IP:port — Unraid mis-parses a bare port number as an IP and the container stays in Created. The container port is always 8080; use 127.0.0.1:8080 to expose it on the loopback only.
- Target
- 8080
- Default
- 0.0.0.0:8080
- Value
- 0.0.0.0:8080
DSH_HOME:会话、凭据、agent home(/data/dsh)与 Caddy 状态。必须是持久化目录,否则重建容器即丢失全部会话。DSH_HOME (sessions, credentials, agents) plus Caddy state; keep it persistent.
- Target
- /data
- Default
- /mnt/user/appdata/dsh/data
- Value
- /mnt/user/appdata/dsh/data
智能体的工作目录(DSH_WORKSPACE),容器启动即 cd 到此。宿主机上建议放需要长期保留的项目。The agent's working directory; the container cd's here at start.容器内也可用 ~/workspace 访问,目录选择器默认就落在这里。Also reachable inside the container as ~/workspace, where the directory picker starts.
- Target
- /workspace
- Default
- /mnt/user/appdata/dsh/workspace
- Value
- /mnt/user/appdata/dsh/workspace
只允许这些来源访问界面,逗号分隔。**IP 或 CIDR** 按连接来源地址匹配;**域名**按 Host 头匹配。模板默认已放宽到私有网段(RFC1918 + 链路本地 + Tailscale CGNAT),装完即可从局域网/Tailscale 打开,公网仍进不来——因为公网来源不属于任何一条;想收紧就把多余的网段删掉,只留你自己的。**镜像本身的默认值是严格的 127.0.0.1**(只允许本机),模板只是替你放宽到「不会被公网碰到」的范围。填域名时浏览器必须用该域名访问(经代理时域名应为 PUBLIC_URL 的主机名)。| Only these clients may reach the UI, comma separated: IPs/CIDRs match the peer address, hostnames match the Host header. The default 127.0.0.1 means localhost only (loopback is always allowed because the container's own healthcheck needs it). Add your LAN subnet, or your reverse proxy's address, when something else must connect.
- Target
- ALLOWED_CLIENTS
- Default
- 127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,100.64.0.0/10,fc00::/7,fe80::/10
- Value
- 127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,100.64.0.0/10,fc00::/7,fe80::/10
登录框里的用户名(**默认 dsh**,必填)。改这里等于换用户名;浏览器会记住旧的用户名/口令组合,改完请清理已保存的登录信息。| User name for the built-in gate (default dsh, required). The browser remembers the old pair, so clear the saved login after changing it.
- Target
- AUTH_USER
- Default
- dsh
- Value
- dsh
⚠️ **模板自带默认口令 12345678,请务必改成只有你知道的口令**(改完点 Apply 重建容器即生效;默认值 12345678 以圆点显示,改了它浏览器下次就会用新口令)。这是容器自带门禁(认证方式 = builtin)的唯一口令;在改掉之前,任何能访问这个端口、且知道这个公开默认值的人都能操作你的智能体(可在你的项目里执行命令、读取 /data 里的凭据)。在界面上它以圆点显示(Mask 只影响显示,值会照常传给容器);清空内容 = 用回默认值 12345678;想改成随机口令请在 CLI/compose 里显式传空 `-e DSH_PASSWORD=`(首启生成并打印一次)。口令至少 8 位、不能含空白字符;改口令会让此前签发的登录 Cookie 全部失效。Password for the built-in gate. The template ships 12345678 as a default — change it before you go further; until then anybody who can reach the port and knows this public default can drive the agent. It shows as dots in the GUI (Mask is display only; the value still reaches the container); clearing it falls back to the default 12345678; for a random one pass an explicitly empty `-e DSH_PASSWORD=` from the CLI/compose (generated on first start and printed once). At least 8 characters, no whitespace.
- Target
- DSH_PASSWORD
- Default
- 12345678
builtin(默认)= 容器自带口令门禁,适合直接给内网使用或经端口转发远程访问;none = 不使用自带认证,把鉴权交给前面的反向代理 / SSO(如 SWAG + Authelia)或受信内网。其它取值会让容器拒绝启动。注意:口令走明文 HTTP 时可被监听,公网访问仍必须由反向代理提供 HTTPS。builtin serves the container's own password gate (default); none delegates to an authenticating proxy or a trusted LAN. Other values fail closed. A password over plain HTTP is sniffable, so internet exposure still needs a TLS reverse proxy.
- Target
- AUTH_MODE
- Default
- builtin
- Value
- builtin
仅当容器前面有反向代理时填写:Caddy 只对这些来源读取 X-Forwarded-For,从而按**真实客户端 IP** 匹配「允许访问的 IP / 域名」。切勿填写不可信客户端也能发起的网段——那样任何人都能伪造来源绕过白名单。| Only when a reverse proxy fronts this container: Caddy then reads X-Forwarded-For from these peers only, so the allowlist sees the real client address. Never list a range untrusted clients can originate from; they could forge the header and bypass the allowlist.
- Target
- TRUSTED_PROXY_CIDRS
对外访问地址的完整 origin,例如 https://dsh.example.com(不要带路径)。设置后会启用严格模式:DSH 只接受该 authority 的请求,并拒绝其它 Origin。留空 = 局域网模式:仅剥掉 Origin 并把 Host 固定为 loopback,适合受信内网或 VPN。Full origin when a reverse proxy fronts this container; leave empty for a trusted LAN.
额外的可信 authority,逗号分隔(如 dsh.example.com,192.168.1.10:8080)。仅在设置了 PUBLIC_URL 时生效。Extra accepted host[:port] authorities, comma separated; only used together with PUBLIC_URL.
容器时区。Container time zone.
- Target
- TZ
- Default
- Asia/Shanghai
- Value
- Asia/Shanghai