让设备之间,
直接使用彼此的服务。
CyberGrid 是多用户、多应用、多终端的连接协调服务。以 Rust SDK 为主要接入方式,发现同账号、同应用的设备,发布 TCP 端口,再把远端服务映射到本机。
中央负责身份、设备状态和短期信令,不接收文件、同步内容或端到端业务字节。Logto 托管注册与登录,设备各自完成授权。
从一对设备开始
- 配置产品与真实 OAuth 应用。 推荐在服务端用静态产品策略绑定各端真实 Native client;各端通过官方 Logto SDK 独立登录,同一账号和 canonical 产品共享目录。历史 v0.7 Lab 仍按其真实 Native ID 使用。
- 分别登录并公布服务。 在每台设备独立授权;用新版 Lab 发布测试服务,也可用 SDK Expose 自有 TCP 服务。
- 发现设备,建立映射。 选择远端设备与公开端口,通过 loopback 地址访问;业务协议与同步规则由你的应用处理。
# 从 Lab 0.3 Android 完整 ZIP 解压目录执行;先安装同包测试 APK。
ADB_CONTROL=tools/android-adb.py
# 从 adb devices 获取本机实际序列号。
read -r ANDROID_SERIAL
python3 "$ADB_CONTROL" --serial "$ANDROID_SERIAL" start
python3 "$ADB_CONTROL" --serial "$ANDROID_SERIAL" web-login
# 在手机系统浏览器完成 Logto 登录,再查询实际状态。
python3 "$ADB_CONTROL" --serial "$ANDROID_SERIAL" status另一端独立授权后使用 Devices / Map。查看端口映射,或从 Lab 双端测试开始;Android 完整 ZIP 携带 ADB 控制工具与许可。
未发布源码已增加静态产品、有限准入、Rust 默认关闭 gate、JS directory/watch 与安全 bridge wrapper,以及 RAM-only 宿主模块。这些扩展尚未更新下列 v0.7.0 下载;完整样例、真实云登录、手机和长跑验收另行记录。
目标 v0.8.0 正在准备:Rust 0.3.0 / JS 0.2.0 / Lab 0.4.0 / server 0.2.0 / RAM-only 样例 0.1.0。完整仓库源码包将保留 SDK、服务和样例的相对依赖;外部 Noise adapter 不随包分发。该版本尚未发布,以下下载仍为不可变 v0.7.0,完整样例与生产验收仍单独记录。
SDK 与测试 App
Rust 是主要 SDK。 Release v0.7.0 的 Rust SDK 与 Lab 提供 WebRTC → iroh 直连 → Cloudflare 匿名隧道的三层连接策略,也可选择直连并行竞速;Go SDK 保持两级兼容实现。
Release v0.7.0 的 Lab 0.3 使用普通 Native 应用网页登录,需与本次协调服务一同升级。历史 v0.5.1 的 Lab 0.2 与 CLI 设备码登录不适用于新服务;本次 Go / Rust CLI 也不提供网页登录入口,首次登录请使用 Lab 或宿主官方 Logto SDK。所有下载由 GitHub Releases 提供;按随包 manifest 与 SHA256SUMS 校验完整文件,保留对应许可证。
Rust SDK 0.2.0
主要 SDK:原生 crate、嵌入示例与双平台 provider 资源,通过 Cargo path 集成。包含 iroh 直连与顺序 / 并行连接策略。
查看 Rust 发布文件Rust 接入说明CyberGrid Lab 0.3.0
Tauri 2 测试 App:macOS Apple Silicon ZIP、Android arm64 API 28+ APK / 完整 ZIP、源码与许可。
查看 Lab 发布文件Android ADB 使用浏览完整源码 · 最新 Release。各包中的 provider 固定版本与许可随包提供,运行时不自动下载或更新。
直连优先,需要时回退
Rust SDK 默认先尝试增强 WebRTC,再尝试 iroh 直连,最后使用 Cloudflare Quick Tunnel。也可选择 WebRTC / iroh 并行竞速,两个直连阶段均失败后才回退。iroh 禁用 relay,仅使用设备公布的数字网络地址;没有可用地址或直连超时会继续回退。各路径沿用端到端双向认证,业务密钥由终端持有。Go SDK 仍为 WebRTC → Cloudflare 两级;历史 v0.6.0 的 Rust / Lab 包也只包含两级策略。
macOS 默认使用 SDK 随附 provider,无需外装或 PATH 查找。Android 宿主将 SDK 资源安装至 nativeLibraryDir,按当前网络提供 DNS 与 App cache 环境。查看宿主集成要求。
部署自己的 CyberGrid
同一套 Node.js 22 路由提供官网、控制台、管理后台与 API,可部署为 Vercel Functions,也可在普通 Docker 中运行。Redis 是必需的共享协调存储;实例无须常驻,应用业务数据仍只在终端之间传输。
Vercel 部署使用 Vercel KV 环境变量接入 Marketplace 的 Upstash Redis,并配置 Logto issuer、SPA、resource 与 CYBERGRID_PRODUCTS 静态产品策略;只有未配置静态策略时,可选动态目录才需要 Management M2M 凭据;管理后台可选配置独立密钥。Docker 部署在 server/ 复制 .env.example 并配置 Redis 后执行 docker compose up --build -d;也可直接运行 Node。
Vercel KV 已迁移到 Marketplace Upstash Redis,当前不再提供独立的旧 Vercel KV 产品。连接资源后设置 CYBERGRID_REDIS_TRANSPORT=vercel-kv,并使用自动注入的 KV_REST_API_URL 与 KV_REST_API_TOKEN;不要使用只读 token。也可使用自有 Upstash 数据库,把它的 REST URL 与完整数据库 token 手工配置为这两个 KV 变量;账户 API 管理密钥只用于创建和管理数据库,不能作为运行时 token。普通 Docker / Node 仍可选择 TCP Redis。查看 Vercel 官方说明。
CYBERGRID_PUBLIC_ORIGIN 可留空:配置时固定使用该 HTTPS origin;留空时按本请求合法 Host / HTTP(S) 地址生成回跳,也支持代理覆盖的严格单值 X-Forwarded-Host / Proto。Node 部署按 socket 地址限流;Vercel Functions 使用固定的共享限流桶,不信任客户端提供的转发 IP。
JWT resource 独立固定:优先使用 LOGTO_RESOURCE,否则有公开 origin 时默认其加 /api,无公开 origin 时为 https://cybergrid.local/api。这是 OAuth 标识,不需 DNS,但应在 Logto 创建相同 resource。已有部署应显式保存原 resource,避免移除公开 origin 后改变 audience。
默认回跳为本次有效 origin 加 /console/callback/,可配置同源专用路径,并在 Logto 登记相同 URI。独立管理密钥 CYBERGRID_ADMIN_KEY 只保存在服务端,SMTP 在 Logto 配置。网站构建不获取 SDK 归档,下载直接来自 GitHub Releases。
一键部署到 Vercel 查看 Vercel Functions 配置步骤;查看 Node / Docker 部署步骤。设备控制台使用 Logto 查看当前用户,只读管理后台使用独立管理密钥。
接入前了解这些边界
- 当前仅映射 TCP;端口必须由远端显式发布。设备在线表示心跳有效,不代表业务 TCP 已建立。
- Lab 为测试版本:macOS 未公证,Android 使用测试签名并需保持前台;不提供后台长期保活保证。
- Function 或 Node 实例重启不会主动清空 Redis 协调状态。命名空间重置、会话过期或设备失联时,SDK 可恢复注册和公布信息;旧业务 TCP 可能中断,应用自行决定重试和同步。
- 邮箱验证与找回密码由 Logto 托管;实际邮箱收件链路尚未完成验收。
- 无 UDP、无损切路或应用业务字节自动重放。阅读完整平台限制。
原代码及第三方组件各自适用随源码提供的许可和版权声明,请在使用、修改和分发前阅读。