远程互联 · 端到端加密 · 开源 GPLv3

手机牵着
你家的 AI。

“Your AI, right at your paw — wherever you are.”

MollyPaw 跑在你自己家那台电脑上。 现在人不在电脑前也能用它 —— 手机扫个码连上去,接着聊天、看它干活、点同意、传文件。

不用同一个 WiFi,不限局域网内外。 每个字都是密文,中继服务器上看不到内容。

  • 电脑关机?明确告诉你离线
  • 密钥只在你手机上
  • 不用注册,不用登录

MollyPaw 远程互联 = Cloudflare Durable Object 盲中继 + X25519 / HKDF-SHA256 / AES-256-GCM 端到端加密。 客户端 Kotlin + Compose,后端 Python + PyWebView,协议规范见 PROTOCOL.md。

中继只做路由,不解密;越权判定全在电脑端按方法表白名单做。 跨局域网靠出站 WebSocket,不需要端口映射。

  • WSS + AES-256-GCM(AAD 绑定房间/角色/序号)
  • 配对码 一次性,15 分钟有效
  • 自建中继:改一个 URL 就行
连接拓扑 wss://
WSS WSS 手机 Android App 控制端 / 观察端 中继 盲转发 看不到明文 电脑 MollyPaw 桌面端 真正的计算在这里 端到端加密 · 中继看不到内容 手机和电脑两端直接对话,中间那台只负责传话 模型调用、文件读写、命令执行都发生在你自己那台电脑上
中继检查中…

手机上能干什么,一个不少

远程端能力清单

不是只能看个聊天记录。是真的能干活。

电脑端 agent/relay/ 暴露的方法,按角色白名单过滤(agent/relay/protocol.py)。

聊天 + 真流式

字是边生成边推过来的,不是转圈等一整坨。跟坐在电脑前一个手感。

SSE 逐行解析。工具调用参数分片累积、整条流结束才执行,避免首个 token 就触发工具。

工具审批

它要删文件、跑命令,手机上直接弹出来给你点同意或拒绝。不做超时偷袭。

审批不设超时(曾 120s 过期),锁屏十分钟回来还能点。RelayController.add_approval()

会话管理

新建、切换、删除,跟坐在电脑前一样。手机和电脑看到同一份历史。

会话与历史都在电脑端,手机只是视图。两端始终一致,不存在双份状态。

文件收发

翻电脑上的目录、把文件拉到手机。电脑里那个资料库,手机上直接取。

agent/relay/fs_api.py:不限目录、无黑名单(按你要求),每次访问写审计日志 data/relay/fs_audit.log。

紧急停止

它开始瞎搞,一键停。真杀进程树,不是"已发送停止请求"那种假动作。

CancelToken + contextvars;断 HTTP 流 + kill_process_tree(Windows taskkill /T /F,POSIX killpg)+ 回滚本轮历史。

观察模式

给别人开只读:能看它在干什么,动不了任何东西。

observer 角色的帧照样转发给电脑端,越权在电脑端按方法表白名单拒。中继看不到明文,硬拦会导致连会话列表都拿不到。

三步,两分钟

配对流程(一键码)

电脑上开一下,手机扫一下,就这么简单。

配对码 MP1.<b64(pair_seed)>.<room>,共 81 字符 —— 塞得进一个二维码。

  1. 1

    电脑上生成配对码

    MollyPaw 设置 → 远程互联 → 开启 → 添加设备。屏幕上出来一个二维码。

    中继地址选「官方」一键填好,或选「自建」填自己的 Worker URL。密钥用户自设,强度不够不让存(≥16 位且含大小写+数字)。

  2. 2

    手机扫一下

    装好 App,打开「配对」,对准电脑屏幕。扫完就进去了。

    手机从二维码解出 pair_seed 与 room,派生 pair_key = HKDF(seed,"mollypaw/v1/pair-key"),用它向电脑端发起握手。

  3. 3

    开用

    配对码只能用一次,15 分钟后失效。绑好之后不用再输。

    配对码一次性、15 分钟 TTL。成功后服务端在 pair 响应里下发主 PSK,手机换主 PSK 重连;密钥轮换后所有设备需重配。

安全这块说清楚

我们说"加密"就得经得起追问:服务器上到底存了什么?

协议见 PROTOCOL.md。密钥派生链:pair_seed → HKDF → pair_key / reg_token; 会话密钥 HKDF(X25519 共享秘密, salt=hs_pc‖hs_app)。

中继能看到什么

  • 房间号(由你的密钥派生,猜不到)
  • 连接的角色和时间
  • 每个密文包多大

中继看不到什么

  • 你的消息内容
  • 你的 API Key
  • 你传的文件
  • 你的会话历史

密码学细节

  • 握手:X25519(RFC 7748)临时密钥,每条连接独立换钥
  • 派生:HKDF-SHA256(RFC 5869),salt 固定为 hs_pc ‖ hs_app
  • 加密:AES-256-GCM,AAD = mollypaw/v1|<room>|<role>|<seq>,绑定房间/角色/序号防重放与角色冒充
  • 配对码:32 字节随机种子,一次性、15 分钟 TTL
  • 跨实现一致性:Android 端算出的密文必须与 Python 端逐字节相同(25 项单测锚点)

密钥只存在你手机和电脑上,服务器上没有副本。 所以密钥丢了谁都救不回来 —— 包括我们。

下载,不用注册

下载 / 镜像 / 校验

版本号是实时查的,不会给你过期的包。下不动就换条线路 —— 文件完全一样。

版本与资产列表从 GitHub Releases 实时拉取;加速节点由页面并行测速后自动挑选。

最新版本 读取中…
正在连 GitHub…

正在测速,下载按钮会自动指向最快的节点…

🐾 国内下载慢 / 打不开?

GitHub 在国内经常被墙或龟速。主下载按钮已经会自动挑最快的加速节点; 下面每个节点的耗时都是你本机实测的,文件与官方完全一致。

正在读取线路…

测速用的是真实请求(拿到响应头就中断,不会把整个包下下来),耗时反映的是你到该节点的握手与首包速度。 节点挂了就在 assets/js/main.js 的 MIRRORS 里换一条。

下载之后怎么弄?

  1. 下载完把 .apk 文件放到手机里(微信传自己、数据线、网盘都行)。
  2. 点开它,系统会问「是否允许安装未知来源应用」—— 点允许。这是因为没走应用商店,不是病毒。
  3. 装好之后打开 App,点「配对」,对着电脑屏幕上那个二维码扫一下。
  4. 电脑那边要点「同意」确认这次配对。配对码只能用一次,15 分钟后失效。
  5. 之后就能在手机上聊天、审批、翻会话、传文件了。断线会自动重连。
连不上? 先确认电脑上的 MollyPaw 是开着的、设置里「远程互联」是开着的。 电脑关机了手机什么也做不了,会提示「电脑端已离线」。

⚠️ 只有安卓手机能用

需要 Android 8.0 以上。iPhone 用不了 —— 做 iOS 版要有苹果开发者账号,目前没这个计划。

电脑端是 Windows 软件,不是手机 App。

自己构建 APK
# 需要 JDK 17+ 和 Android SDK
git clone https://github.com/LK-BLOG/MollyPaw-Android.git
cd MollyPaw-Android
./gradlew :app:assembleRelease

# 产物
app/build/outputs/apk/release/app-release.apk
minSdk 26 CI 用 -DmollypawMirror=official 走官方源;本地默认阿里云镜像。

运行要求

APK(预打包):Android 8.0+(API 26),直接装,不需要 root。

从源码构建:JDK 17+、Android SDK、Gradle 8.9。

电脑端:Windows 10 / 11 64 位。远程互联在「设置 → 远程互联」。

中继源码在 MollyPaw-Relay, 两条 wrangler 命令就能部署到自己账号下。

全部版本记录

正在读取…

你可能想问的

为什么要用中转?不能直连吗?

你电脑在家用宽带后面,外面进不来。中继只负责把两个出站连接对上,然后它就成了个"看不见内容的邮差"。你也可以自建 —— 桌面端设置里能改地址。

电脑关机了手机能干嘛?

什么都不能。会明确告诉你"电脑端已离线,请开启电脑后再试"。我们不存离线消息 —— 存了就得把密文放服务器上,那等于自曝。

密钥泄露了会怎样?

拿到密钥的人能连上你的电脑,并且能读你电脑上的文件 —— 这是给手机开放的能力,我们没给它上锁。所以密钥必须够强,丢了立刻在电脑上换,所有设备重配。

支持 iPhone 吗?

暂时没有。要做得有苹果开发者账号,目前没这个计划。

手机能不能改设置 / 改 API Key?

不能。API Key 只读,看得到但改不了。控制端能改的只是常规设置项,密钥类的一律只读。

中继是谁的?我信得过吗?

官方中继跑在 Cloudflare 上,唯一的任务是转发密文。但既然你不想信 —— 桌面端支持"自建",代码在 MollyPaw-Relay,两条命令部署到自己账号下。

流量费怎么算?

只有密文包过网。聊天本身是小流量,文件传输才会大。中继不存东西,不产生存储费。

把绳子系上

你的 AI,跟着你走。

下载安卓端