chinahhy/DSH-plugins--packages-dsh-tether-ios ↗★ 0

dsh-tether-ios

为macOS桌面端提供iOS远程连接伴侣 适合使用Apple Silicon Mac并希望在iOS设备上远程连接使用DSH的用户。

套件
dsh-tether-ios
相容性
待驗證
Harness 依賴範圍
0.2.0-rc.2
版本
0.1.0
授權
MIT
最近更新
2026年10月10日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:chinahhy/DSH-plugins#71f84addab8bab34de83ead863ea86df0269dec9&path:packages/dsh-tether-ios

dsh-tether-ios

macOS Apple Silicon companion for the iOS arm64 app at chinahhy/dsh-tether ios-only. Verified with DSH Desktop 0.2.0-rc.2 only, Mac mini M4 and an iOS arm64 iPhone. On 2026-10-05 the maintainer confirmed normal physical-device use and an outdoor cellular connection to the home DSH. The actual direct/relay path and sleep/wake recovery were not separately established. See validation scope.

Architecture

Desktop's existing desktop profile → owned tether-host → iroh → iOS app. No additional DSH runtime or CLI daemon. ALPN dsh-tether/0, Pair/Hello, Proxy, Approval/ApprovalCancel and field spellings remain compatible. Approvals are notifications only; decisions stay in DSH's normal web UI.

The sidebar “连接 iPhone” button generates an expiring pairing string on demand. Only the local authenticated Mac window can manage pairing/revocation. There is no automatic startup code, console credential output or settings-file export. A paired phone has full DSH operator access. Keep the phone and Mac trusted. Pairing: 6 digits, 10 minutes, at most 3 wrong attempts per window. Revocation closes active connections. The phone app's existing localhost-proxy limitation still applies; the plugin does not create an iOS background push service.

Installation

The published main package includes the verified bin/darwin-arm64/tether-host. No Rust compiler, installation hooks or separate download are needed. Install the GitHub subpackage through DSH's plugin manager:

github:chinahhy/DSH-plugins#path:/packages/dsh-tether-ios

For manual/offline installation, use the versioned .tgz and SHA256SUMS from GitHub Releases. Use the existing Desktop desktop profile. Do not create an extra web profile. Development branches intentionally omit native binaries; use published main or a complete CI archive. Existing local link/file installs do not automatically follow GitHub updates and require an explicitly authorized source migration.

The official Desktop profile/package manager owns dependency and bundle changes. The bundle adds the host plus in-app directory browsing, and disables the exact 0.2.0-rc.2 automatic picker. While enabled, folder selection on the Mac also uses in-app browsing. Removing the bundle restores the base picker unless overridden by another user patch. No persistent user patch is directly written by this plugin.

Files and removal

`` below means the application's ctx.dshHomePath() result, normally ~/.dsh; no HOME fallback is guessed by this plugin.

LocationOwner / behavior
/profiles/desktop/node_modules/dsh-tether-ios/Installed package and bin/darwin-arm64/tether-host; package-manager symlinks/store may affect physical location
/profiles/desktop/package.json, lockfile, bundle inventoryExisting DSH package manager updates these when installing/removing
/data/dsh-tether-ios/identity.keyHost identity, 0600
/data/dsh-tether-ios/paired.jsonDevice allowlist, 0600; containing plugin directory 0700
/data/dsh-tether-ios/.identity.key.tmp, .paired.json.tmpAtomic-write crash remnants, normally absent
DSH-owned package cache/storePackage-manager controlled; may retain archive/package after uninstall
iOS application's own sandboxExisting iOS identity and host list; unaffected by Mac uninstall

Disable/remove the plugin using DSH's plugin manager. The disposer closes routes, stops renewal, ends sidecar stdin, sends SIGTERM and escalates to SIGKILL after 2 seconds if needed. Parent-pipe EOF also stops the sidecar after a parent crash. There is no LaunchAgent or login item. Confirm the sidecar has exited.

Uninstall removes the package/bundle through DSH. Pairing data is deliberately preserved for reinstall; for a full reset, after stopping the plugin, explicitly delete only /data/dsh-tether-ios/ and remove the saved computer from iOS. This destroys that host identity and requires re-pairing. Do not delete the whole DSH home or shared package cache. No automatic deletion hook runs.

No /usr/local/bin, npm global installation, Homebrew, new ~/.xxx, external runtime, permanent background service, or real account credentials are needed. The browser session cookie stays in parent/child memory and is never logged.

Development / artifacts

node scripts/build.mjs; node --test test/*.test.mjs require only Node 24. Rust build/test and official DSH API integration run on the macOS arm64 Actions runner. scripts/build-sidecar.mjs uses Cargo.lock and targets aarch64-apple-darwin. Actions builds and tests the locked macOS arm64 host, verifies the native checksum and licenses, then promotes only this package to main and creates a versioned Release. Source installs and tgz installs both include the binary. It has an ad-hoc linker signature; it is not a notarized distribution. No npm publication or global installation is involved.

Remaining validation boundaries

  • Full uninstall/reset and all reload paths; normal Desktop quit/restart was verified.
  • Exhaustive iPhone UI, reconnect/revocation and folder browsing scenarios.
  • Identify direct versus relay transport, force relay fallback, and test sleep/wake and app foreground return. Outdoor cellular use was confirmed by the maintainer.
  • Approval notification while connected and approval decision in the real web UI.
  • Gatekeeper/quarantine behavior with the actual downloaded binary and signed iOS IPA.
  • Narrow-screen usability; this candidate does not copy upstream's fragile CSS selectors.

See API evidence and upstream changes.