Mobile remote-control suite: bundle plugin with native sidebar entry and admin drawer, self-healing bearer-token gateway over LAN/Tailscale, Android app (sessions/approvals/questions/goals), /fs/* file transfer (Range resume, 2GB upload), latency-based multi-server auto-switch, offline chat cache.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-remote-plugin
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Blank-not-black/dsh-Remote#path:/packages/plugin
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
The official DSH bundle plugin for DSH Remote. It adds a DSH sidebar entry, a compact status panel, a full admin console, and a gateway managed alongside DSH.
Install
dsh plugin --profile web add dsh-remote-plugin
dsh plugin --profile web list --depth 0
# Optional version pin
dsh plugin --profile web add dsh-remote-plugin@0.6.8
The second command verifies installation in the web profile. Completely restart DSH Web and hard-refresh with Ctrl+F5. For a user service, a typical restart is systemctl --user restart dsh-web; for a manual setup, stop the old dsh web process and launch it again.
Open http://127.0.0.1:8787/health on the DSH host before pairing a phone. Once it returns JSON, connect the phone to http://PC-LAN-IP:8787 or the host's Tailscale IP. Do not use 127.0.0.1 or localhost on the phone; those point to the phone itself.
What the plugin provides
- Compact panel: gateway state, connected devices, token usage, and quick actions.
- Admin console: port, upstream, devices, requests, token statistics, QR pairing, and token rotation.
- Bundled
gateway.cjs: Bearer-token gateway listening on0.0.0.0:8787by default. - Self-healing lifecycle: relaunches the gateway after a DSH restart or unexpected exit; start and stop it from the panel.
/fs/*file endpoints: list, download, chunked upload, resume, pause/continue/cancel, and SHA-256 verification.- Mobile, desktop, and admin WebUI assets, plus the Android APK distributed with the plugin.
Mobile capabilities
The Android app / mobile WebUI has five main destinations: Sessions, Files, Home, Stats, and Settings. Session detail supports goals, subagent interruption, model selection, fullscreen input, slash commands, and image attachments. Images can come from the camera or gallery and are sent as image content in session.prompt.
Notification settings include approval / question notifications, background polling, peak reminders, task completion notices, and announcement history. Announcements update from a central HTTPS source every 30 seconds while the app is in the foreground, with gateway-cache and bundled-file fallback. Four themes are retained: Default Deep Space, Sunset, Elbphilharmonie, and Prairie Tower.
Gateway configuration
- Port priority:
DSH_REMOTE_GATEWAY_PORT→~/.dsh-remote/gateway-port→8787. - Token:
~/.dsh-remote/token, generated on first run. - Self-healing:
~/.dsh-remote/gateway.enabled; useDSH_REMOTE_AUTOSTART=0to disable automatic management. - File roots: registered DSH workspaces are allowed automatically; configure other directories with
DSH_REMOTE_FS_ROOT, separated by:on Linux/macOS and;on Windows. - Upload limit:
DSH_REMOTE_FS_MAX_UPLOAD, 2 GB by default. - Central announcements: override the default HTTPS endpoint with
DSH_REMOTE_ANNOUNCEMENTS_URL, or set it to an empty string to disable the central source. - DSH upstream:
http://127.0.0.1:3080by default.
The token grants remote control of DSH. Keep it private. For cross-network access, prefer Tailscale or another authenticated secure tunnel.
Gateway cannot be opened
curl -i http://127.0.0.1:8787/health
ss -ltnp | grep ':8787'
curl -i http://127.0.0.1:3080/
- If port 8787 refuses locally, verify the
webprofile installation, gateway state in the plugin panel, a real DSH Web restart, and port ownership. - If
/healthworks butupstreamOkis false, the gateway is running; troubleshoot DSH Web on port 3080. - If local access works but the phone fails, use the host LAN/Tailscale IP and permit inbound TCP 8787. Do not expose port 3080 publicly.
- A 401 response means the token is wrong; pair again or copy the current
~/.dsh-remote/token. - For a blank/stale page after an upgrade, hard-refresh or fully close and reopen the app.
The managed gateway may be a transient process. Do not rely on systemctl --user restart dsh-remote-gateway.service; use Start Gateway in the plugin panel or restart DSH Web to trigger self-healing.
Links
- Admin page:
http://<gateway-ip>:8787/admin - Desktop WebUI:
http://<gateway-ip>:8787 - Main project: dsh-Remote
- Stable releases: GitHub Releases
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-remote-web-ui★ 8262
Remote control of a dsh web workspace from phone or PC: QR-code pairing through a token-gated channel, SSE real-time sync, and separate mobile and full desktop GUI modes.
zhu1090093659/dsh-web#packages/dsh-ssh★ 8262
SSH ops panel for DSH: web terminal, SFTP transfer with progress, local port forwarding, and one-command cluster execution across hosts; agents share the same host config.
saya-ch/dsh-mobile★ 350
Access DeepSeek Harness from the Android app or a mobile browser with secure LAN and remote connections, persistent device pairing, and a customizable mobile interface.
ZSeven-W/dsh-ios★ 310
A live iOS Simulator or USB-connected iPhone inside the conversation: 22 agent tools for booting, building, driving the UI by accessibility identity or OCR text, list-row actions and SwiftUI preview hot reload, plus a streaming sidebar panel you can tap and drag on.
liguobao/ds-harness-remote★ 248
Multi-device remote access for DeepSeek Harness: continue an active session from your phone, tablet, browser, or another computer over an end-to-end encrypted channel (Noise IK + adaptive relay/WebRTC transport), with device authorization, ApiProxy-only remote capabilities, and read-only file preview via dsh-file-viewer — no shell, remote desktop, or write access.
wenbin-wb/dsh-bridge★ 179
Remote and mobile access for DeepSeek Harness: provides LAN QR code connection, Cloudflare/custom tunnels, WeChat, QQ, Feishu, Telegram bot integration, and security authentication.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.