packages/dsh-remote-web-ui
zhu1090093659/dsh-web手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
DeepSeek Harness 多端远程访问:从手机、平板、浏览器或另一台电脑继续进行中的会话,端到端加密通道(Noise IK + 自适应 Relay/WebRTC 传输),设备授权管理;远程端仅开放 ApiProxy 能力,支持 dsh-file-viewer 只读文件预览,不提供 Shell、远程桌面或写入权限。
English · 中文 · Documentation · Web · Android · iOS
Self-hosting · npm ·
Remote mode supports the official plugin page for listing, configuration, and enabling/disabling plugins (requires an updated Host Remote plugin). Remote itself remains locally managed on the Host; remote installation and removal are not exposed.
Continue using your DeepSeek Harness instance from a phone, computer, or browser. Return to the same Harness session from whichever device is with you.
Harness keeps running on your work computer, with the same workspaces, tools, and project setup.
DS Harness Remote is simply another window into that environment.
The DeepSeek Harness desktop edition is supported. Install the latest release:
ds-harness-remote@0.5.18
Harness automation tasks are available through the native Desktop/browser UI over Remote: view tasks and delivery history, edit timing/name/instructions, and delete tasks. Create tasks through the official schedule_create Agent tool. Tasks remain stored and executed on the Host; update the Host Remote plugin to enable management.
and local favorites. Conversation text is loaded from the connected Host.
Client · Form · Status · Notes DSH Desktop plugin · Remote sidebar inside DeepSeek Harness Desktop · Supported · Install ds-harness-remote@0.5.18; this computer can also be the Host Remote Web · Browser page · Supported · Open dsh.r2049.cn/app; reuses the native Harness interface Android · Native app · Supported · Download the APK from Releases; see the Android guide iOS · TestFlight beta · Beta · Not publicly released; see issue #20 VS Code · IDE extension · Experimental · Sign-in, Host fingerprint pinning, workspace-to-session navigation and prompts; streaming updates, automatic reconnect and the question UI are still in development, and cross-machine end-to-end validation is not finished Browser extension · Chrome / Edge MV3 extension · Entry point only · Exchanges an already signed-in Web authorization for a separate device credential, lists online Hosts and opens the same-origin Remote Web; it does not host a conversation UI dsh-TUI · Terminal-only CLI profile · Supported · Can act as a Host; see the dsh-TUI Remote guide. The installer never creates a Web service for it automatically
Several clients can connect to the same Host at once; RPC calls and streams are isolated per connection.
Open Extensions / Plugin management in DeepSeek Harness Desktop, choose installation from npm, and enter this package:
ds-harness-remote@0.5.18
Restart Desktop afterward. Its official dsh launcher can also install the pinned package with dsh plugin --profile desktop add -w ds-harness-remote@0.5.18.
For terminal Host setup with dsh-TUI, see the dsh-TUI Remote guide.
Add the exact package version through DSH's plugin manager for the web profile:
dsh plugin --profile web add -w ds-harness-remote@0.5.18Restart DeepSeek Harness after installation.
For CLI installation, use dsh plugin to install the npm package into the selected profile and add its bundle configuration layer.
The sole installer is scripts/install.sh:
See the installation guide for private token input, updates, service controls and validation limits. Repository changes do not automatically deploy the hosted installer.
Download the latest APK from GitHub Releases, sign in to the same account, and select a Host and workspace to continue your conversation.
By default, Remote uses this project's hosted Server at https://dsh.r2049.cn.
For self-hosting, use the repository's minimal Server; its Web page shows device status only.
The current computer starts with Allow control of this device enabled and is available as a Host. Remote terminal access is also enabled by default and can be turned off in the Host's detailed Remote settings.
On another computer, select an online Host and open one of its workspaces.
The workspace opens in the native Harness interface, with the active Host and encrypted connection status shown in the header.
Use text or image prompts, switch models, and access supported workspace files and terminals. The interface follows the system language and supports English, Simplified and Traditional Chinese, Japanese, Spanish, German, and French. In language settings, tap “More ...” to show all languages. See the Android guide for details.
The Bot button to the left of + on the Host workspace header opens the native DS Bot team mode: Bots, group chats, management, questions and interactive cards. In Bot mode, the header shows a Workspace switch immediately left of the three-dot menu. DS Bot must be enabled on the connected Host; see the Bot mode guide for availability and validation limits.
Mobile Settings includes an opt-in Compact conversations switch, applied globally when a conversation is next opened. Supporting Hosts send shorter historical tool details while preserving messages and tool status. Older Hosts keep the existing behavior. Turn it off and reopen the conversation to load full history.
DSH Desktop / Remote Web / Android
↔ authenticated, end-to-end encrypted channel
Remote Plugin on the Host
↔ supported Harness or optional Codex workspace support
Harness sessions/workspaces or Codex projectsThe Harness Host does not need a public listening port. You can connect from anywhere with internet access.
Remote communicates over a bidirectional end-to-end encrypted channel and switches the client to the selected Host's native Harness API.
The original workspace, tools, and permission flow remain on that computer.
Every settings namespace currently registered by the Host can also be configured remotely through the official Harness settings API.
Credential values remain write-only, and Host-local document/open actions are never exposed.
The Host runs local AI backends and forwards prompts, streamed replies and approvals through the encrypted Remote channel.
Desktop and Android project their workspaces and sessions into the existing interface in memory, without writing them to Harness storage.
Supported backends:
@earendil-works/pi-coding-agent and pi-acp on the Host, configure Pi's provider locally; Remote automatically detects and initializes Pi unless explicitly disabled in Remote settings. The workspace is available only after ACP initialization succeeds. Uses the separate ACP data plane. Tools run with Host-user permissions; per-tool confirmation requires a Pi extension and is not enabled by default.opencode acp, with workspace discovery and history recovery. Host startup checks the CLI's supported options, accepting both native-listener and stdio-only ACP builds. Native session archiving on Desktop/Android requires the authenticated loopback API; builds without it report archiving unavailable. Archive state is saved by OpenCode; history is retained. Unarchive is not yet exposed.claude-agent-acp on the Host; enable it in Remote settings. Desktop/Android support workspaces, history, text prompts and approvals. Image input and direct Files/Terminal access are not available.Model selection is available for Cursor, Claude, Pi, OpenCode, and AGY on Desktop/Android using the Host's actual model catalog and confirmed changes. Effort choices appear when advertised by the backend. Cursor uses a separate process per session so model changes cannot affect other conversations.
Setup and adapter development: Agent workspace integration guide.
Harness business traffic is encrypted on the Client and decrypted only by the selected Host using the fixed Noise_IK_25519_ChaChaPoly_SHA256 suite. Account membership and locally pinned device identity keys must both authorize a connection. The service can route connections and observe network metadata, but it cannot read session messages, prompts, tool output, workspace paths, or remote file contents. See End-to-end encryption for the handshake, key lifecycle, visible metadata, replay protection, and security limits.
The Host opens outbound connections only; it does not listen on a public port or require router port forwarding. Remote negotiates LAN -> P2P -> TURN -> Relay, falling back to the encrypted WebSocket Relay when WebRTC is unavailable or cannot connect. Every path carries the same Noise ciphertext and keeps the same Host/Client identity boundary. An established path that fails is closed and re-established on a new transport and Noise channel. A CONNECTION_FAILED error can come from the Server or from the Host's local fallback, so check the closedBy and retryable log fields before blaming WebRTC. See Network and transport for the topology, control and data planes, NAT behavior, fallback, reconnect semantics, and current validation status.
Creating a Harness workspace can create missing directories as the Host user, independently of the terminal switch. Paths must be absolute and non-root; created directories remain if registration fails.
OAuth sign-in methods are loaded from the Server. Use ds-harness-remote login list or /remote login list to see available QR providers; new server integrations need no further plugin release.
terminal.enabled switch (on by default). They run as the Host user, independently of Agent approvals. General tool RPC and remote desktop remain unavailable.Do I need a public IP or port forwarding?
No. The Host only opens outbound connections and never listens on a public port.
Can the service read my conversations?
No. The service relays ciphertext only. Routing, authorization, presence and rate limiting require control metadata such as account and device ownership, online status, connection times and connectionId; prompts, conversation content, tool input and output, workspace paths and file preview contents stay unreadable.
Which machine can act as a Host?