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

relaydesk-bridge

v0.1.10

Published

WeChat mini program prototype for a paid encrypted Codex Desktop relay.

Readme

RelayDesk Miniapp

微信小程序客户端原型,用于通过付费 relay 远程连接用户电脑上的 Codex bridge。

定位:

  • 小程序负责移动端交互、微信登录和支付入口。
  • Relay 服务负责账号、订阅、设备在线状态和密文转发。
  • 电脑 Bridge 负责本地 Codex session、项目、权限确认和工具调用。
  • 小程序与 Bridge 端到端加密,Relay 默认只处理路由元数据和密文。

当前内容

  • 原生微信小程序骨架
  • 工作台、会话、对话、安全设备页
  • Mock 数据兜底的核心 UI 状态
  • 本地 WebSocket relay 开发服务
  • Desktop bridge mock,用来模拟 Codex 会话、消息流和审批请求
  • Local bridge,用来列出真实本机项目并预留 Codex CLI 执行路径
  • 开发版配对骨架,展示 mobile/bridge 指纹、pairId 和 verify code
  • 会话 cursor 恢复骨架,移动端重连时只补缺失事件
  • 可部署的 hosted relay 服务入口,带健康检查和 token 门禁
  • 产品与架构说明文档

本地开发链路

先不做支付。当前目标是跑通“手机小程序 -> relay -> 电脑 bridge -> relay -> 小程序”的主路径。

WeChat Mini Program
  -> ws://127.0.0.1:8787/ws
  -> scripts/relay-dev.js
  -> scripts/bridge-mock.js
  -> scripts/relay-dev.js
  -> WeChat Mini Program

安装依赖:

npm install

推荐直接启动完整本地链路:

npm run dev

这个命令会同时启动本地 relay 和 bridge mock。看到 relay listening on ws://127.0.0.1:8787/ws 后,再刷新微信开发者工具。

如果要用本机项目而不是 mock 数据:

npm run dev:local

dev:local 默认是 dry-run,会列出本机项目并模拟 Codex 执行,不会调用模型或写文件。小程序发起配对时,电脑终端会显示 mobile/bridge 指纹和 verify code;输入 YES 后才会确认配对。

如果只想做 UI 演示,可以用自动确认:

npm run dev:local:auto

真实运行 Codex CLI 需要显式开启:

BRIDGE_CODEX_MODE=exec npm run dev:local

真实模式会运行 codex exec,可能产生模型费用,也可能修改项目文件。

当前配对与 crypto 状态是开发骨架:协议里已经有 public key、fingerprint、pairId 和 cipher suite 元数据,但 payload 仍是 dev-plaintext。生产版需要替换成真实 X25519/AES-GCM,并在电脑 bridge 上做本地确认。

bridge-local 会在本地生成 bridge.trust.jsonbridge.events.json,分别保存已信任手机和会话事件历史。这两个文件已被 .gitignore 忽略。

也可以分两个终端单独启动 relay:

npm run dev:relay

另开一个终端启动 bridge mock:

npm run dev:bridge

用微信开发者工具导入当前目录 /Users/monkeyin/projects/agent2miniapp。开发阶段已关闭 urlCheck,生产版本需要改成合法 HTTPS/WSS 域名。

如果控制台出现:

WebSocket connection to 'ws://127.0.0.1:8787/ws?...' failed

先确认 npm run dev 正在运行。真机预览不能使用 127.0.0.1,需要把 utils/config.js 里的 relayUrl 改成电脑的局域网 IP 或线上 WSS 域名。

Hosted Relay

公网测试 relay 使用独立入口:

npm run start:relay

部署时用 RELAY_TOKEN 做临时门禁。小程序和电脑 bridge 的 URL 都需要带同一个 token,并且 userId 要一致:

ws://SERVER_IP/relaydesk/ws?role=miniapp&userId=dev-user&deviceId=iphone-dev&token=TOKEN
ws://SERVER_IP/relaydesk/ws?role=bridge&userId=dev-user&deviceId=bridge-local-dev&token=TOKEN

当前服务器通过 Nginx 暴露 /relaydesk/healthz/relaydesk/ws,Node relay 只监听 127.0.0.1:8787。IP 直连 ws:// 适合开发和微信开发者工具测试。正式微信小程序需要 wss:// 合法域名和 TLS 证书。

开发工具里可以临时切换小程序 relay URL,不要把 token 写进代码:

wx.setStorageSync("relaydesk.relayUrl", "ws://SERVER_IP/relaydesk/ws?role=miniapp&userId=dev-user&deviceId=iphone-dev&token=TOKEN")

本机 bridge 用同一个 token:

BRIDGE_RELAY_URL='ws://SERVER_IP/relaydesk/ws?role=bridge&userId=dev-user&deviceId=bridge-local-dev&token=TOKEN' npm run dev:bridge:local

给同事试用时,不需要 clone 仓库、不需要手动填 token,也不需要指定项目目录。电脑终端执行:

npx relaydesk-bridge

第一次运行会自动向 relay 创建一次配对、在终端显示二维码、并把 bridge 放到后台运行。小程序进入 Relay 设置页,点击 扫码连接 扫终端二维码即可连接。

电脑重启、bridge 挂掉或手动停止后,不需要重新扫码,直接复用本机保存的配对启动。这个命令也可以作为统一启动命令:如果本机还没有配对过,会自动显示二维码;如果已经配对过,只会启动后台进程。

npx relaydesk-bridge start

只有需要换手机或重置配对时,才重新生成二维码:

npx relaydesk-bridge pair

如果只是想重新展示二维码,也可以用更直观的别名:

npx relaydesk-bridge qr

后台状态、日志和停止:

npx relaydesk-bridge status
npx relaydesk-bridge logs
npx relaydesk-bridge stop

想让同事电脑重启后自动恢复,可以安装用户级后台服务。macOS 使用 launchd,Windows 使用当前用户启动项,Linux 使用 systemd --user

npx relaydesk-bridge install-service

服务状态和卸载:

npx relaydesk-bridge service-status
npx relaydesk-bridge uninstall-service

端到端联调:

npm run e2e:hosted

通过后再打开微信开发者工具,在 Relay 设置页选择 Hosted WSS,填入同一个 token,保存并重连。

需要兼容旧的邀请码流程时,也可以显式传邀请码:

npx relaydesk-bridge --invite=RD-XXXX

命令

| Command | Description | | --- | --- | | npm run dev | 同时启动本地 relay 和 bridge mock | | npm run dev:chain | 同 npm run dev | | npm run dev:local | 同时启动本地 relay 和 local bridge dry-run | | npm run dev:local:auto | local bridge dry-run,配对自动确认 | | npm run dev:relay | 启动本地 relay WebSocket 服务 | | npm run start:relay | 启动可部署的 hosted relay 服务 | | npm run dev:bridge | 启动桌面 bridge mock | | npm run dev:bridge:local | 只启动 local bridge | | npx relaydesk-bridge | 发布包入口;首次创建扫码配对,之后复用已有配对启动 | | npx relaydesk-bridge start | 复用已有配对启动 bridge,不重新扫码 | | npx relaydesk-bridge pair | 重新生成扫码配对并启动 bridge | | npx relaydesk-bridge qr | 同 pair,重新展示配对二维码并启动 bridge | | npx relaydesk-bridge status | 查看 npm 包后台 bridge 状态 | | npx relaydesk-bridge stop | 停止 npm 包后台 bridge | | npx relaydesk-bridge install-service | 安装用户级开机自启服务,并立即启动 bridge | | npx relaydesk-bridge service-status | 查看开机自启服务状态 | | npx relaydesk-bridge uninstall-service | 移除开机自启服务并停止 bridge | | npm run bridge -- --invite=RD-XXXX | 仓库内调试入口:邀请码换 token,并后台启动当前目录 bridge | | npm run bridge:status | 查看后台 bridge 状态 | | npm run bridge:stop | 停止后台 bridge | | npm run bridge:configure | 生成或更新本机 bridge 配置 | | npm run e2e:hosted | 跑 hosted relay + local bridge + miniapp 模拟端到端联调 | | npm run check | 对 Node 脚本和小程序 store 做语法检查 |

文档

  • docs/product-architecture.md: 产品与系统架构
  • docs/protocol.md: relay 消息协议
  • docs/bridge-local.md: 本机 bridge 使用说明
  • docs/deployment-relay.md: hosted relay 部署说明
  • docs/decisions/ADR-001-local-relay-before-payments.md: 为什么先做本地链路、支付最后做
  • docs/decisions/ADR-002-bridge-local-before-real-desktop-control.md: 为什么先做 local bridge
  • docs/decisions/ADR-003-dev-pairing-before-production-e2ee.md: 为什么先做开发配对骨架
  • docs/decisions/ADR-004-session-cursor-resume.md: 为什么用 per-session cursor 恢复会话
  • docs/decisions/ADR-005-token-gated-hosted-relay.md: 为什么 hosted relay 先使用 token 门禁

打开方式

用微信开发者工具导入当前目录 /Users/monkeyin/projects/agent2miniapp