Foreword

DeepSeek Harness (DSH) runs agents in your local code environment, with the Web interface handling conversations, tool calls, and approvals. In daily development, when the machine is at your desk and you are at your desk, this is no problem. Once you leave your workstation—using your phone on 4G/5G or your computer on a home broadband connection—wanting to continue operating the same DSH setup, there are typically only two common approaches: connecting both devices to the same local network, or setting up your own relay/tunnel service.

DSH Tether is a connectivity tool plugin released by community maintainer zexadev, taking a different path: the development machine and the phone connect directly via iroh point-to-point hole punching, without going through your self-hosted intermediate server. What you see on the phone is still the native DSH Web interface, not a third-party rewritten client.

What This Is

DSH Tether (package name dsh-plugin-tether, repository zexadev/dsh-tether) pushes the DSH Web interface running on your development machine to your phone via a P2P channel. The agent always runs on the machine where the code resides; the phone only handles display and interaction.

This project is an independent community work and has no official affiliation with DeepSeek. The current version is 0.1.7, under the MIT license, with approximately 22 GitHub stars. It has been verified on dsh versions 0.1.0-rc.7 and 0.1.0-rc.8; dsh is still in a developer preview stage, so please refer to the repository notes before upgrading.

If you only need to access the development machine from your phone on the same Wi-Fi network, it’s simpler to use the local network directly and you don’t need to install this solution.

Core Features

Cross-Network P2P Direct Connection

The two endpoints establish a connection via iroh hole punching. Once hole punching is successful, traffic does not go through third parties; it only falls back to iroh relay if hole punching fails, and the relay only forwards encrypted ciphertext it cannot decrypt. It does not require a public IP or for you to deploy your own tunnel service.

Native DSH Interface

The phone loads DSH’s own Web UI: conversations, tool calls, approvals, and settings are all present. Minor style injections are made for narrow screens—the sidebar becomes a drawer overlay, the settings dialog navigation is pinned to the top, and the content area fills the width—but the underlying capabilities are not rewritten.

Multi-Machine Management and Pairing

On the development machine side, at the bottom of the dsh web sidebar, click Connect phone to generate a pairing line. In the phone app, select Add computer → paste the entire line → name the machine → connect. Pairing uses a 6-digit CSPRNG code, valid for 10 minutes, with a maximum of 3 attempts per window. After pairing, the phone authenticates via iroh public key, and both devices can automatically find each other even on different networks.

The My computers option at the bottom of the sidebar allows management of multiple paired machines: switching, renaming, deleting, or adding, without needing to re-enter credentials when switching machines; the development machine can also click Connect phone again at any time to generate a new code.

Approval Notifications

When an agent is waiting for your approval, the phone will show a system notification. The approval is still completed within the DSH interface—the plugin only sends the “someone is waiting for you” alert to the lock screen and does not approve on your behalf.

Installation and Enablement

The plugin is distributed with the Rust sidecar for each platform. During installation, it only fetches the binary matching the current system, without manual selection.

Development Machine (DSH Plugin)

On a machine with dsh installed, execute:

dsh plugin --profile web add dsh-plugin-tether

After installation, start dsh web as usual.

Phone (Standalone App)

Download the corresponding package from GitHub Releases:

Platform Package Name Notes
Android dsh-tether-<version>-arm64.apk For mainstream devices from the last decade, use arm64; arm is for 32-bit legacy devices; x86 / x86_64 are for emulators and ChromeOS
iOS dsh-tether-<version>-ios-unsigned.ipa Beta, unsigned, requires self-signing with tools like AltStore or Sideloadly (free Apple ID signing is valid for 7 days)

Android packages are signed and can be installed directly; selecting the wrong architecture will be rejected during installation.

Alternatively, you can compile the sidecar from source (requires Rust):

git clone https://github.com/zexadev/dsh-tether && cd dsh-tether
cargo build --release -p tether-host
dsh plugin --profile web add .

Typical Usage

  1. Install the plugin on the development machine and run dsh web.
  2. At the bottom of the sidebar, click Connect phone and copy the generated pairing line.
  3. On the phone, open DSH Tether → Add computer → paste the entire line → name this machine → connect.
  4. After that, opening the app will automatically reconnect to the paired development machine; to connect to another machine, switch in My computers or regenerate the pairing code on the target machine.

Security and Limitations

Security Mechanisms (Excerpt from Project Documentation)

  • Post-pairing access is controlled by the phone’s iroh public key, verified via iroh TLS.
  • Unpaired nodes cannot access the interface: proxy streams are only provided after the control flow handshake is complete; unpaired connections are rejected after sending at most 512 bytes.
  • Traffic is end-to-end encrypted via iroh (QUIC/TLS).
  • The plugin’s two HTTP routes follow dsh’s browser trust rules for /api: Host must be loopback, cross-origin marks are rejected, Origin must match Host, and malicious pages and DNS rebinding requests return 403.

Known Limitations

  • The above browser-side defenses cannot block local processes: local processes can spoof loopback Host and pair themselves. If untrusted code may run on the development machine, it is not advisable to enable this plugin.
  • iOS builds are only produced in CI; the project has not been verified on physical devices; Android is the verified platform.
  • The app maintains a connection when open and does not maintain a background connection when closed (Android Doze also does not allow long-term background operation).
  • The phone interface relies on the DSH layout; major changes to dsh may require the plugin to update its style injections.
  • The plugin runs with the current dsh process permissions; before installation, please read the source code and MIT license to assess risks yourself.

Summary

DSH Tether is suitable for developers who need to remotely operate their local DSH on mobile networks without wanting to set up their own relay service. Install the plugin on the development machine, install the app on the phone, pair once, and you can continue using the full DSH interface even when the two devices are not on the same network.