DeepSeek Harness Plugin

saya-ch/dsh-mobile

Stars ★ 33 Category Remote & Mobile Added 2026-08-19 npm dsh-mobile

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:

  1. Select Create and copy key or Copy pairing link; the panel shows a pairing QR code.
  1. 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.
  2. 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.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →