Use DeepSeek Harness from your phone over a protected LAN: a dedicated mobile UI, secure HTTPS pairing, and /mobile conversation customization.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-mobile
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:saya-ch/dsh-mobile
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. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Alpha software. Android is the only supported native app; the iOS client remains an unpublished local experiment and is not built or released. This is a community plugin, not an official DeepSeek product.
DSH Mobile is a DeepSeek Harness plugin that lets a mobile browser or the Android app connect over a protected LAN and keep using the same sessions, Workspaces, messages, and tools. It is a mobile entry point only; the DeepSeek Harness source is not modified and no public-Internet tunneling is needed.
Mobile access runs on its own HTTPS origin with pinned certificates; only paired devices pass validation.
It also lets you customize the phone from a DSH conversation: /mobile <what you want>.
What it does
- Continue DSH work from a phone: the same sessions, Workspaces, messages, and tools, in real time.
- Customize the phone UI by talking to DSH: change the mobile layout, interactions, and features from a conversation; open pages refresh within seconds.
- A dedicated touch layout: session drawer, tool details, settings, and composer reorganized for phones.
- Auto-discovery, no re-pairing: Wi-Fi, hotspot, or IP changes normally recover automatically.
- Three pairing options: scan a QR code, paste a pairing link, or enter a key.
A paired device is fully trusted and can operate the DSH on the computer. Use this only on a trusted home or office LAN, or a trusted VPN.
Quick start
With an installed dsh command:
dsh plugin --profile web add dsh-mobile@alpha
dsh plugin --profile web exec dsh-mobile setup
dsh --profile web
From a DeepSeek Harness source checkout:
corepack enable; pnpm install
pnpm dsh plugin --profile web add dsh-mobile@alpha
pnpm dsh plugin --profile web exec dsh-mobile setup
pnpm dsh --profile web
Or via the plugin market (optional):
dsh plugin --profile web add dshmarket
Restart DSH, then search for dsh-mobile under Settings → Plugin Market and install it with one click.
After starting DSH, open Mobile Access in the lower-left sidebar, then:
- Select Create and copy key or Copy pairing link; the panel shows a pairing QR code.
- In the Android app, tap Scan QR code and point the camera at the screen — or tap Scan, select the computer, and paste the key or pairing link.
- Pairing establishes persistent device trust; later launches do not ask again.
setup automatically selects and remembers the current LAN; Wi-Fi, hotspot, and IP changes normally recover without re-pairing. Use --address 192.168.x.x only when automatic selection fails. Settings, certificates, devices, and customization files live under $DSH_HOME/mobile-access/.
Extend and customize
Type /mobile <what you want> in a DSH conversation, and DSH edits the phone client's files for you; changes apply within a few seconds. For example:
/mobile turn the phone UI into an old CRT terminal, with messages scrolling like terminal output
It can also drive computer capabilities the phone can use, like reading the machine's live state:
/mobile give the phone a cyberpunk-style computer monitor panel that shows live CPU, memory, and disk usage
Two kinds of changes are supported: the phone UI itself (theme, layout, buttons), and computer capabilities the phone can use (browsing computer files, running programs on the computer). /mobile hands the request to the DSH agent, which edits files under the local DSH configuration directory ($DSH_HOME/mobile-access/); the phone client applies them automatically. UI changes live in mobile.css/mobile.js. Computer capabilities come from extensions under extensions/, whose host.mjs runs with the local user's privileges on the computer. DeepSeek Harness source is not modified.
When using computer-side capabilities, use only content you trust.
The examples above, applied:
App or mobile browser
| Client | Best for | Notes |
|---|---|---|
| Android app | Everyday use | Auto-discovery; private certificate pinning inside the app, no manual browser trust step |
| Mobile browser | Temporary or cross-platform | Open the HTTPS origin shown by Mobile Access; trust the certificate manually on first visit |
The Android app is a thin Kotlin WebView shell and contains no frontend copy; mobile browsers load the same page. For compatibility diagnosis, append ?frontend=stock to the browser URL to temporarily use the previous desktop-page adaptation.
How it works
flowchart LR
Phone["Android / mobile browser"] -->|"HTTPS + device session"| Gateway["DSH Mobile gateway"]
Gateway -->|"loopback proxy"| DSH["Stock DSH Web and Host"]
Three layers: the Host face for discovery, pairing, HTTPS, loopback proxying, and extension registration; the Client face for the dedicated mobile layout and extension SDK; and the Android app for a narrow native bridge. Neither the DeepSeek Harness source nor its desktop page on port 3080 is modified.
Security
- Use the plugin only on a trusted LAN or trusted VPN; never expose it to the public Internet.
- A paired device is a fully trusted DeepSeek Harness operator and can run tools on the computer; revoke lost devices from the computer.
- The LAN gateway listens only while Mobile Access is enabled; with it off, DSH keeps running normally on the computer.
See SECURITY.md.
Compatibility
| DSH Mobile | Verified DeepSeek Harness releases |
|---|---|
0.1.0-alpha.36 |
0.1.0-rc.5, 0.1.0-rc.6, 0.1.0-rc.7 |
At startup, the plugin verifies the DSH Host version and the frontend dependencies required by the mobile layout; an unverified release fails with a clear error instead of serving a broken page. CI also tracks the DSH main branch layout contract. If a DSH upgrade reports an incompatibility, update DSH Mobile first.
Uninstall
dsh plugin --profile web remove dsh-mobile
To remove local plugin data first:
dsh plugin --profile web exec dsh-mobile purge --yes
dsh plugin --profile web remove dsh-mobile
Source users replace dsh with pnpm dsh.
Development
npm ci
npm run verify
See the Android guide. Licensed under Apache-2.0.
Links
More in this category
mexiaosqwq/dsh-web-mobile★ 31
Mobile-adaptive layout for the DSH Web UI: the sidebar becomes a content-hugging overlay drawer, the conversation gets the full width, and the settings panel becomes a near-full-width sheet.
liguobao/deepseek-harness-remote★ 23
Secure multi-device remote access for DeepSeek Harness: connect from your phone or browser to your local Harness over an end-to-end encrypted channel (Noise IK with a WebRTC-ready adaptive transport), with device authorization and ApiProxy-only remote capabilities, no shell or arbitrary file access.
AcidGr/dsh-web-lan-access★ 21
LAN/remote access for the Web UI: injects a crypto.randomUUID polyfill on plain-HTTP origins so the frontend survives LAN or Tailscale IP direct links.
JUANWANG-BUAA/dsh-full-remote★ 15
Remote DeepSeek Harness with full server-side API access (`settings.*` / `credentials.*` / `host.listDirectory`). Token-gated reverse proxy, per-device sessions, phone invite QR, fence self-check, optional approval / CIDR / idle timeout / local TLS, WebSocket/SSE.
Blank-not-black/dsh-Remote#plugin★ 10
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.
Leon0555/dsh-lan-access★ 8
LAN access for the Web GUI: 0.0.0.0 bind plus a crypto.randomUUID polyfill for non-secure (LAN HTTP) contexts.