DSH Go

A DeepSeek Harness client for Android: run DSH on the phone itself, or drive DSH on your computer remotely.

Stars
★ 9.3k
Last updated
today
License
AGPL-3.0
Primary language
Dart

At a glance

How it runs
Desktop app
Works with
Portable with changes
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
Android 8.0 (API 26)+Flutter 3.47.7Dart ^3.13.5JDK 17Android SDK/NDKShell / CLINetwork accessLocal filesystem
Typical use
Developers who only carry an Android phone and want to keep using DSH for coding or tool-driven tasks while commuting or travelling.
Not a fit if
  • Users unwilling to reserve about 1 GB on the phone for a local Linux runtime
  • Users who expect a Google Play or iOS install path
  • Teams that must support 32-bit ARM or x86 devices

What does this agent do, and when should you use it?

DSH Go is a community-built, unofficial Android client for DeepSeek Harness, with a Flutter UI, Kotlin platform code on the Android side, and AGPL-3.0 licensing. It supports two execution models: install Ubuntu, Node.js and the DSH runtime inside the app and run the DSH engine on the phone without root or Termux, or connect to DSH on a computer or server over SSH or DSH Remote. The chat UI covers model switching, image and voice input, tool approvals and questions, plus one-tap switching between the native interface and the official web client on the same conversation. The repository also ships packages/dsh_client (Dart client for the DSH Web API), packages/dsh_remote (Dart client for DSH Remote), the sdk/plugin-kit authoring kit and examples/plugins. The DSH engine runs locally, but model requests still go to whichever provider you configure and are billed to that account. Targets Android 8.0+, distributed as a sideloaded APK rather than a Google Play build; iOS and HarmonyOS are only stated as planned.

On first launch you pick either a local runtime install or a remote host, then configure a model and credentials for that host and start chatting. In local mode the app prepares an in-app Linux runtime (PRoot-compatible by default; the direct-launch developer option is off by default), runs Node.js and the DSH engine inside it, and talks to the DSH Web API through packages/dsh_client. Remote hosts go through packages/dsh_remote or SSH. During a run you can queue a message and send it immediately, collapse the tool trace into a single line once finished, and switch between the native UI and the official web client without losing the conversation. Phone control, once permissions are granted, lets the local engine read the screen, tap and type, while payments, passwords, verification codes and system settings are handed back to you for confirmation. Outputs include share cards, exported conversations as end-to-end encrypted replay links, and appearance options for theme colors, launcher icons and the Deepy / 鲸娘 pets. Plugin authors use sdk/plugin-kit to build native tool cards, forms and panels, with examples/plugins as reference.

  1. Developers who only carry an Android phone and want to keep using DSH for coding or tool-driven tasks while commuting or travelling.
  2. Users who already run DSH on a desktop or server and want to pick up the same workflow from a phone via SSH or DSH Remote.
  3. Plugin authors who want native tool cards, forms and panels in DSH Go and need an SDK plus examples to start.
  4. Anyone who needs to hand a coding conversation to a colleague as a share card or an encrypted replay link.
  5. Tablet and landscape-phone users who want a persistent sidebar and centered content for long conversations.
  6. Users willing to grant accessibility permissions so the local engine can tap and type for them, while keeping sensitive steps under human confirmation.

How do you install or deploy this agent?

Requires Android 8.0 (API 26) or later. Common 64-bit phones take the arm64 package from the Releases page; x86_64 devices and emulators use the x64 package listed under "other downloads" at the end of the release notes. No 32-bit ARM build exists.

  1. Download the matching APK from GitHub Releases or the official download page and allow that install source when prompted.
  2. On first launch, either install the local runtime or connect to a remote host. A remote-only setup does not need the local runtime; running DSH on the phone needs roughly 1 GB of free space.
  3. Configure the model and credentials for the chosen host, then start chatting.

Building from source targets Linux x86_64 and needs Bash, Git, curl, tar, unzip, xz, Python 3, zstd, file and standard GNU tools:

git clone https://github.com/ccch1mneyyy/dsh-go.git
cd dsh-go

bash tooling/setup-toolchain.sh
source tooling/env.sh
flutter --version
java -version

bash runtime/build-runtime.sh arm64-v8a
DSH_BETA_TOKEN_FILE= bash tooling/build-apk.sh -f arm64 --keep-daemon

The output lands at app/build/app/outputs/flutter-apk/app-arm64-release.apk. Without app/android/key.properties, local release builds use debug signing and cannot overwrite an official APK signed with a different key.

How do you use this agent?

After choosing a host on first launch, configure the model and provider credentials for that host to enter the chat UI. Local mode finishes installing the bundled runtime first, so requests go through the on-device DSH engine; remote mode uses the instance on your computer or server over SSH or DSH Remote.

Day-to-day operations include switching models, sending images and voice input, handling tool approvals and questions, queuing a message mid-run and choosing "send now", toggling between the native UI and the web client, and producing share cards or end-to-end encrypted replay links.

Phone control requires enabling accessibility and related permissions as prompted; Do Not Disturb mode additionally needs Android 14+ with Shizuku or self-connected ADB. The guide at docs/guide/README.md covers first-time setup step by step.

Plugin authors start here:

# read the plugin guide and SDK docs
docs/plugins/README.md
sdk/plugin-kit/README.md

To inspect the APK build commands without running them:

DSH_BETA_TOKEN_FILE= bash tooling/build-apk.sh --dry-run -f all

What are this agent's strengths and limitations?

Pros
  • Genuinely runs DSH on Android: an in-app Ubuntu and Node.js runtime with no root or Termux, and remote-only users can skip the local runtime entirely.
  • Local and remote paths coexist, so you can continue the same workflow between phone and computer over SSH or DSH Remote instead of picking one.
  • Careful conversation handling: queue and immediately send messages during generation, collapse the tool trace to one line, and toggle between native UI and the official web client on the same conversation.
  • Privacy-aware sharing: share cards and replay links are end-to-end encrypted with the key only in the link, and phone control hands payments, passwords and verification codes back to you.
  • A real plugin path for authors via sdk/plugin-kit and examples/plugins, with sdk/ and examples/ kept under the more permissive MIT license.
  • Landscape and tablet layouts, six theme colors, selectable launcher icons, and a fully bilingual Chinese/English interface.
Limitations
  • Android sideload APK only, with no Google Play build and no iOS or HarmonyOS release; those are stated intentions, not shipping targets.
  • No 32-bit ARM build, so device architecture must match arm64 or x64.
  • Building from source is heavy: Linux x86_64, JDK 17, Flutter 3.47.7, Android SDK/NDK, a runtime build step and network downloads.
  • Local release builds fall back to debug signing without key.properties, so they cannot overwrite an official APK; early differently-signed test builds also require uninstalling, which wipes conversations, the Linux environment and settings.
  • Capabilities vary by host and connection: DSH Remote supports image attachments only, cannot open the web client in-app, limits plugin management to toggles, and lacks DS Bot and conversation-log export.
  • Anonymous usage statistics are on by default and must be turned off in Settings → Privacy & Sharing; with phone control enabled, screen text and screenshots may be sent to the model.
  • Community, unofficial project with no affiliation to DeepSeek; the name, marks and the Deepy and 鲸娘 mascots are outside the AGPL grant.

How does this agent compare with similar options?

The README positions DSH Go against the upstream DeepSeek Harness and the author's own DSH-TUI: it does not reimplement the engine, but puts DSH on Android and adds remote takeover, letting you alternate between the native client and the official web client. The remote connection work references the ds-harness-remote project and servers.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
DSH Go This agent 55 · Major gaps Desktop appFree + model costs ★ 9.3k today Dart —
Harness Remote 69 · Some gaps Desktop app ★ 434 1d ago JavaScript Codex · Claude Code
Lody 75 · Good Self-hosted service ★ 1.7k today TypeScript Codex · Claude Code
Autoprompt Skill 69 · Some gaps CLIFree + model costs ★ 1.2k 1mo ago JavaScript Codex · Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
55/ 100 5-point scale 2.8 / 5
This review covers the source as of Oct 30, 2026. The project has shipped 6 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 16/29
Reliability 8/14
Adaptability 10/18
Convention 10/18
Effectiveness 7/13
Verifiability 4/8
Why each dimension lost points
Trust16 / 29 · 2.8/5

README states plainly that model requests go to the configured provider, that phone control may send screen text/screenshots to the model, and that anonymous usage stats are on by default and can be disabled; the plugin-config design doc adds a default-deny whitelist, write-only secrets, and error codes that never echo host messages. Those are concrete constraints. Deductions: phone control needs Accessibility and reads the screen — a high-sensitivity capability justified only by a one-line promise that payments/passwords/codes stay with the user, with no verifiable interception mechanism; telemetry is opt-out; dependency security is asserted ('versions and verification data pinned') without a lockfile or scan evidence in the files; external effects (share links, companion service, go.dshtui.com download page) lack a server-side trust-boundary description; rollback is explicitly not transactional ('cancel is not a rollback') and the bridge route is not yet implemented.

Reliability8 / 14 · 2.9/5

The design docs are internally coherent on concurrency, generations, lock ordering, bounded queues, temp-file cleanup and fixed reason codes, and the plugin-config doc enumerates 400/404/409/422/503/500 semantics with the app's handling — failure messaging is well designed. Deductions: the build needs network access to fetch SDK/NDK, Ubuntu packages and runtime assets plus extra tools (gpgv, zstd), and dependency availability rests on a single 'pinned versions' sentence; the docs themselves admit the bridge route is unimplemented and ConfigEditor has a path-normalization defect, so documented behavior and current state diverge.

Adaptability10 / 18 · 2.8/5

Audience and scenarios are clear: Android 8+, arm64/x64, on-device PRoot runtime or SSH/DSH Remote hosts, tablet/landscape layouts, bilingual UI. Capability boundaries are explicitly listed (DSH Remote accepts images only, no DS Bot or log export, plugin management limited to enable/disable). Deductions on trigger precision: phone-control activation conditions, safe-mode boundary and the Android 14 + Shizuku requirement for non-disruptive mode get one README sentence each, with no verifiable start/stop rules; environment fit covers vendor battery savers but only as 'it tells you and opens the setting'.

Convention10 / 18 · 2.8/5

README is well structured (download, features, install, data/permissions, FAQ, build, layout, contribute, community, license); install notes distinguish arm64/x64, warn that a differently signed build cannot update in place, and document the build script plus dry-run; FAQ and known limitations (remote capability limits, no 32-bit ARM, sideload-only) are present; AGPL-3.0 with MIT for sdk/examples and ASSETS.md trademark terms are clear. Deductions: naming stability suffers from dsh-go / DSH Go / dsh-go-bridge / r13 / r14 version codenames and a dated design doc marked 'pending backend'; no changelog or versioning scheme; maintenance responsibility is only Issues, SECURITY.md and chat groups, with no release cadence or support commitment, and the publisher is unverified.

Effectiveness7 / 13 · 2.7/5

Output usability has concrete evidence: the plugin quickstart gives a runnable 5-minute view function, toolCard fallback rules, check.mjs self-check and a symptom/cause table; the plugin-config doc maps every error code to user-facing copy. Marginal value is real — running DSH on the phone with one-tap host switching is differentiated. Deductions on cost/benefit: ~1 GB free space, an embedded Linux environment, Accessibility permission and possibly Shizuku/ADB, while the bridge route is unimplemented and some capabilities are limited; the trade-off is never quantified.

Verifiability4 / 8 · 2.5/5

Fact/inference separation is handled well: the design docs distinguish measured from unverified, refuse to extrapolate Android frame timings, and require unrun device paths to stay unverified; the plugin-config doc marks which fixtures are real captures and which parts await backend work. Deductions: README security/privacy claims (local web interface answers only to the app, share links are end-to-end encrypted with the key only in the link) point to no code or test; cross-source corroboration is limited because test fixtures are synthetic and cannot be checked against real runs; publisher identity is unverified and the external download page and companion service cannot be confirmed from the repository.

Risks and how to mitigate them
  • Phone control requires Accessibility and reads the screen; screen text and screenshots may be sent to the configured model. Check the provider's data policy before enabling, and note the README offers no verifiable interception for payments or passwords.
  • Anonymous usage statistics are enabled by default and must be turned off during onboarding or in Settings.
  • The plugin-config bridge route is not implemented; hosts currently fall back to the volatile path, so the full configuration capability described in the docs is not yet available.
  • The plugin-config whitelist is currently a client-side defense only; any client holding /api credentials can still write core config (the doc says so in §7.4). Do not rely on that isolation until the server side lands.
  • The APK is sideloaded; an early test build signed with a different key cannot update in place, and uninstalling clears chats, the Linux environment and settings — back up first.
  • Publisher identity is unverified; the go.dshtui.com download page and companion sharing service cannot be confirmed from the repository. Prefer GitHub Releases and verify the signature.
  • Building requires network access for SDK/NDK, Ubuntu packages and runtime assets plus extra tools (gpgv, zstd); dependency security rests on a 'pinned versions' statement with no lockfile or scan evidence in the files.
Evidence confidence: Low Reviewed Oct 30, 2026 Reviewed revision bf01594471e1 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v1.0.10 DSH Go 1.0.10
    Release notes excerpt
    手机安装:只需下载 [dsh-go-1.0.10-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.10/dsh-go-1.0.10-arm64.apk)。 update.json 和 SHA256SUMS 供自动更新与校验使用,无需手动下载。GitHub 自动生成的 Source code 是源码包,不是安装包。 Install on your phone: download [dsh-go-1.0.10-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.10/dsh-go-1.0.10-arm64.apk). update.json and SHA256SUMS support automatic updates and verification. You do not need to download them manually. GitHub's Source code archives are not installers. 中文 …
    View on GitHub ↗
  2. v1.0.9 DSH Go 1.0.9
    Release notes excerpt
    手机安装:只需下载 [dsh-go-1.0.9-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.9/dsh-go-1.0.9-arm64.apk)。 update.json 和 SHA256SUMS 供自动更新与校验使用,无需手动下载。GitHub 自动生成的 Source code 是源码包,不是安装包。 Install on your phone: download [dsh-go-1.0.9-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.9/dsh-go-1.0.9-arm64.apk). update.json and SHA256SUMS support automatic updates and verification. You do not need to download them manually. GitHub's Source code archives are not installers. 中文 …
    View on GitHub ↗
  3. v1.0.8 DSH Go 1.0.8
    Release notes excerpt
    手机安装:只需下载 [dsh-go-1.0.8-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.8/dsh-go-1.0.8-arm64.apk)。 update.json 和 SHA256SUMS 供自动更新与校验使用,无需手动下载。GitHub 自动生成的 Source code 是源码包,不是安装包。 Install on your phone: download [dsh-go-1.0.8-arm64.apk](https://github.com/ccch1mneyyy/dsh-go/releases/download/v1.0.8/dsh-go-1.0.8-arm64.apk). update.json and SHA256SUMS support automatic updates and verification. You do not need to download them manually. GitHub's Source code archives are not installers. 中文 …
    View on GitHub ↗

FAQ

Do I pay anything to use DSH Go?
The app itself is free and open source (AGPL-3.0, with sdk/ and examples/ under MIT), but model requests go to your own configured provider and are billed to that account, and network access is required.
If I only connect to DSH on my computer, do I still need the Linux runtime on the phone?
No. The roughly 1 GB of space is only needed for the local runtime install; a remote-only setup skips it.
Can the phone-control agent pay for things or read my passwords on its own?
Per the README, payments, passwords, verification codes and system settings are always handed back to you, with three confirmation levels to choose from. Still, once enabled, on-screen text for a task may be sent to the model and image-capable models may receive screenshots, so read the permission notes first.
Will Android kill it in the background?
Battery policies on some ROMs will. DSH Go detects this and offers a shortcut to the relevant allowlist settings for vivo, Xiaomi, Huawei, Honor and OPPO, but it cannot guarantee every device stays alive.
Is this an official DeepSeek product?
No. DSH Go is a community-built unofficial client based on the open-source DeepSeek Harness, unaffiliated with and not endorsed by DeepSeek.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents