npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@asong111/dsh-cloud-sync

v0.3.0

Published

Cloud sync for the dsh web GUI: bidirectionally sync plugins, config, agent-presets, skills and task history between two machines through a private Git remote (default SSH). Auto-installs dependencies after pull; excludes plaintext secrets (credentials/SS

Readme

dsh-cloud-sync

在两台不同网络的电脑之间,通过一个私有 Git 远端(默认 SSH 免密)做 DSH 云端同步:把 ~/.dsh 下的插件清单、配置、agent presets、skills、任务历史双向同步,做到换台电脑接着干。拉取后自动安装依赖,并默认排除明文密钥

独立插件项目(不依赖 dsh-web-ui 全家桶),与 DSH 本身同款双 face(host + client)插件范式,热插拔、不改 dsh 源码。

特性

  • 双向同步push(本机 → 云端远端)、pull(云端远端 → 本机)。
  • 自动装依赖pull 后检测到 package.json / pnpm-lock.yaml 变化时,自动 dsh plugin install 复现插件(installAfterPull 默认开,可在 GUI 关)。
  • 安全:默认排除 .credentials.yamldsh-ssh.json(含明文 SSH 密码)、设备匿名 ID、pet.jsonnode_modules / .git 一律不进镜像。
  • 冲突保守:不静默覆盖;冲突时先备份本机旧文件,标记「待处理」,绝不 --force 推送。
  • GUI:侧边栏「云同步」面板(配置远端 / 一键上传 / 一键拉取 / 自动同步开关与间隔)。
  • 动作日志:面板「日志」页按天展示每次 push/pull/resolve 新增/修改/删除的具体文件;原始数据落盘 ~/.dsh-sync/logs/<profile>/sync-<日期>.jsonl
  • 同步介质:Git(有版本历史、可冲突检测、可 age/git-crypt 加密)。

支持的同步内容

| 内容 | 路径 | 说明 | |---|---|---| | 插件清单 | profiles/<profile>/package.json + pnpm-lock.yaml | 不拷 node_modules,拉取后自动 install | | 配置 | profiles/<profile>/cordis.patch.ymlsettings.yamlcordis.patch.yml(home) | settings.yaml 已确认无明文密钥 | | agent presets | .agent-presets/ | 梁神等预设 | | skills | skills/ | | | 任务历史 | sessions/storages/task-board/ | |

安装与使用

# A 机 / B 机都执行一次
dsh plugin --profile web add @asong111/dsh-cloud-sync

# GUI 侧边栏「云同步」:
#   1) 填远端仓库地址(如 [email protected]:ASong111/dsh-sync.git)
#   2) 点「↑ 上传到云端」完成首次 push
#   3) 另一台电脑点「↓ 从云端拉取」→ 自动装依赖

两机 SSH 免密(Git 鉴权,一次配置)

  • 同一把密钥:把 A 机 ~/.ssh/id_rsa + id_rsa.pub 复制到 B 机 ~/.ssh/;或
  • 各自密钥:在 B 机新生成密钥,把公钥加到 GitHub 账号。

installAfterPull 走 npm registry 网络,与 Git 的 SSH 鉴权相互独立。

完整的两机部署走查(首次上传/拉取、link: 依赖注意事项、ERR_PNPM_UNEXPECTED_STORE 修复、冲突恢复)见 DEPLOY.md

开发

pnpm install
pnpm test      # vitest:excludes / store / engine(双机模拟)
pnpm build     # tsc + tsdown -> lib/
pnpm watch

安全红线

以下文件永不进入同步(硬编码黑名单,无法通过配置强行纳入):

  • ~/.dsh/.credentials.yaml
  • ~/.dsh/dsh-ssh.json
  • ~/.dsh/.anonymous-user-id
  • ~/.dsh/pet.json
  • node_modules/.git/

许可证

Apache-2.0