鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册

dsh-devices

去中心化多设备舰队:mDNS 同网发现、密钥配对、SSH 跨网直连指挥。

远程移动端
访问 GitHub
文档README

dsh-devices

English · 简体中文

Turn your devices into a fleet.

Zero core changes, pure plugin mounting. A dsh plugin that lets your devices collaborate. Tools auto-register in dsh sessions — any dsh-hosted agent can call them directly. Uninstall leaves no core patches.

Requirements: ① At least 2 devices, each with dsh-devices installed (pairing is two-sided; a single device has nothing to pair with). ② Connectivity: same LAN with mDNS multicast allowed (UDP 5353; doesn't cross routers/subnets), or publicly reachable devices with SSH (port 22) open. NAT-isolated devices cannot connect to each other in this version (V2 = P2P/tailscale planned).


▼
text
复制代码
┌──────────────┐ ┌──────────────┐ │ dsh + devices │◄────────►│ dsh + devices │ └──────────────┘ └──────────────┘
▼
sh
复制代码
npm install -g @deepseek-ai/dsh
▼
sh
复制代码
dsh plugin add dsh-devices
▼
sh
复制代码
▼
text
复制代码

Platform Notes

Verified on real hardware: macOS / Ubuntu 22.04+ / Windows Server 2025 & Windows 11.

macOS

  • mDNS auto-announce starts with the plugin (no manual fleet7 serve); if discovery fails, allow UDP 5353 in the firewall.
  • Remote login (SSH server) is off by default — enable it in System Settings → General → Sharing → Remote Login for other devices to command this machine.
  • Fleet keys live in ~/.fleet/ssh-keys/ (0600 enforced).

Linux (incl. Ubuntu / cloud servers)

  • Node ≥ 22.19 required (22.14 and below lack the zstd API → createZstdDecompress boot error). Upgrade via nvm or the distro.
  • As a managed host: sshd running, authorized_keys 600, ~/.ssh 700.
  • Cloud security groups must allow SSH (22), or public pairing will time out.
  • Slow networks: use npm config set registry https://registry.npmmirror.com to speed up dsh installs.

Windows (10/11 desktop and Server 2016+)

  • Node ≥ 22.19 required — the zip build is most reliable (MSI silent install can silently fail on low-memory VMs).
  • As a managed host: install OpenSSH Server (Settings → Optional features), then:
    ▼
    powershell
    复制代码
    Start-Service sshd; Set-Service sshd -StartupType Automatic
    Allow port 22 through the firewall.
  • As a controller: single commands, fleet8 ssh, upload/download all work; && chains may return only the first command's output (OpenSSH for Windows console limitation — see TROUBLESHOOTING Q7). Split compound commands.
  • fleet7/fleet8 exit cleanly on Windows (pipe-handle handling is explicit).

Known Limitations

  • mDNS is LAN-only (beta): discovery works on one subnet only; cross-network devices use the SSH route.
  • mDNS auto-announce requires the plugin loaded in dsh (it starts automatically).
  • Windows as a controller: fleet_ssh_exec with && chains may return only the first command's output (OpenSSH for Windows console-session quirk; see TROUBLESHOOTING Q7). Windows as a managed device is unaffected.

Tools

ModuleToolWhat it does
mdnsfleet_discoverScan the LAN for devices
mdnsfleet_pairPair with a device key
sshfleet_ssh_execRun a command on a paired device
sshfleet_workspaceSet/view remote workspace
sshfleet_uploadUpload a file to a paired device
sshfleet_downloadDownload a file from a paired device
sshfleet_statusLiveness probe for all paired devices (online/latency/last used)

Disabled modules don't register their tools (modules: mdns | ssh | both).

No commands to memorize — discovery, pairing, and execution are all done by the agent calling fleet_discover / fleet_pair / fleet_ssh_exec in your session.

Or grab the tgz from Releases: dsh plugin add ./dsh-devices-<version>.tgz.


▼
sh
复制代码
▼
sh
复制代码
dsh plugin add dsh-devices dsh plugin add ./dsh-devices-<version>.tgz

You should see a clean install with no warnings. Four fleet_* tools are then auto-registered in dsh sessions.

▼
sh
复制代码
git clone https://github.com/polaris-smart/dsh-devices.git

Scenario A: Same LAN (recommended start)

Both devices need dsh-devices (pairing is two-sided). Devices A and B on the same LAN.

B's user asks B's dsh agent to "start fleet broadcast" (agent runs fleet7 serve), or manually:

▼
sh
复制代码
fleet7 serve
▼
text
复制代码

B generates a device key (fleet-d-..., printed in the terminal) on first fleet7 serve. Then on A:

▼
text
复制代码
▼
text
复制代码

Pair once, use forever — B has authorized A's public key; A remembers how to reach B.

Scenario B: Cross-network (SSH direct)

When devices are not on the same LAN (e.g., commanding a cloud server from home):

▼
sh
复制代码
▼
sh
复制代码
echo "ssh-ed25519 AAAA... my-server" >> ~/.ssh/authorized_keys
▼
sh
复制代码
fleet8 ssh my-server "hostname"

Then use fleet_ssh_exec / fleet_workspace in dsh sessions.

Scenario C: One-command fleet join (new in v0.1.2)

Onboarding a new device in three commands — the invite code travels over WeChat/phone, no manual key setup:

Host — generate an invite code:

▼
sh
复制代码
fleet8 invite <your-ip-or-host> --user <remote-user> --port 22 # prints an invite code: host:port/user/token — send it to your teammate

New device — join with one command:

▼
sh
复制代码
fleet8 join <invite-code> # parses the code, generates an SSH keypair, registers the device, prints the public key

Host — authorize:

▼
sh
复制代码
fleet8 allow <device-id> "<public key from the step above>" # done — the new device can now be reached via fleet8 ssh / fleet_* tools

|---|---|---|---|

Disabled modules don't register their tools.

|---|---|---|

Errors carry next-step guidance; file transfer & workspace go through the agent tools.

After install, just say "call fleet_discover" in your dsh session to see LAN devices; pair once, then command remote devices with fleet_ssh_exec. No extra config — tools are exposed to every agent in the dsh session.

Only paired devices are reachable; key files must be 0600; all errors return readable text instead of throwing.

▼
text
复制代码

|---|---|---| | modules | both | mdns / ssh / both |

▼
text
复制代码
┌─────────────────────────────────────────────────────┐ │ dsh (DeepSeek Harness) │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │ │ │ fleet_pair │ │ fleet_workspace│ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └───────────┘ │ │ │ mDNS │ SSH │ └─────────┼─────────────────┼─────────────────────────┘ ▼ ▼ ┌────────────┐ ┌──────────────┐ └────────────┘ └──────────────┘ │ │

For full troubleshooting see TROUBLESHOOTING.md.

A: Both devices must be on the same LAN (mDNS multicast doesn't cross routers); the target must run fleet7 serve; allow UDP 5353 through firewalls.

A: Use Scenario B manual pairing; check port 22 reachability and that the public key is in authorized_keys.

A: You likely have an outdated package — download the latest tgz from the Releases page.

A: After restarting the dsh session, type /fleet — seeing your device identity and paired devices means it works. Or ask the agent to call fleet_discover.

A: Check: ① the plugin was added to the profile you're booting (dsh plugin --profile <name> add dsh-devices) ② the session was restarted ③ Node 22+ (node --version). Still missing? Open an issue with the dsh plugin output.

A: Verify port 22 reachability (nc -vz <ip> 22 or fleet8 ssh <name> hostname) and that the public key is in the target's authorized_keys. Timeouts are usually network/firewall issues, not plugin issues.

Found a bug or have an idea?

▼
text
复制代码
Task-board claiming: post tasks from any device, paired devices claim them

Changelog

v0.1.1 (2026-08-20)

  • 🔒 Internal codenames removed from the package (mDNS service type & SSH key comment now dsh-devices); per-platform notes added to README.

v0.1.0 (2026-08-20)

  • 🎉 First release on npm + GitHub: dsh plugin add dsh-devices
  • ✨ mDNS auto-announce (no manual serve), fleet_status liveness probe (7th tool), real /fleet commands, SFTP transfer, SSH connect-retry, Windows adaptations
  • 🧪 92 tests + verified on macOS / Ubuntu / Windows Server 2025

History (pre-rename, v0.2.x era)

  • v0.2.10 → v0.2.0: /fleet command, SFTP, zero-dependency rebuild, CLI precompile, decentralized pivot (mDNS + SSH)

MIT © polaris-smart

远程移动端

快捷安装

复制到终端去安装插件

dshplugin--profilewebaddgithub:polaris-smart/dsh-devices

温馨提示

装插件等于在本机跑第三方代码,权限与你相同,能读文件、用凭据、访问网络,工具审批管不到。请只装可信来源,并尽量锁定 commit。

站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题
dsh 插件推荐
dsh-web#packages/dsh-ssh
SSH 远程运维面板:Web 终端、SFTP 传输、本地端口转发与一条命令并发集群执行,Agent 与面板共用同一份主机配置。
dsh-tether
用 Android/iOS 手机远程使用电脑上的 dsh 完整网页界面,经 iroh 跨网点对点直连,中间不经过任何服务器。
dsh-im-gateway
DeepSeek Harness 聚合 IM 网关:通过微信、飞书、Telegram、Discord、QQ、WhatsApp 等 20+ 聊天平台驱动 agent,支持统一会话、远程审批和交互提问。默认放行所有能给机器人发消息的人,需要限制请配置 allowedUserIds。
dsh-android
在对话里直接操作 Android 设备——模拟器或 USB 手机,完全通过 adb 驱动:20 个 Agent 工具用于流式投屏、Gradle 构建运行、UI 树或 OCR 交互、logcat、进程与内存检查,并附带三键导航面板。
dsh-remote-ssh
类 VSCode Remote-SSH 的 DSH 插件:SSH 连接超算/服务器,内置文件页签直读远程文件、终端页签自动 SSH,远程工作区配单往返合并读与结果缓存,含 12 个会话感知的 remote_ssh_* 模型工具。