之前分享过我的 iOS 应用 NovaScale(原名 NovaAccess), 它直接集成了 Tailscale 内核, 把 SSH/SFTP/Remote Codex 这些功能整合到一个 App 里, 无需开启 Tailscale VPN 客户端, 也可以在有 VPN 运行的情况下运行, 目前还在积极迭代基于 herdr remote 协议, 以满足像我这样重度 Tailscale 用户远程开发以及维护服务的一些需求
距离之前发贴已经有一段时间了,这期间 iOS 版本增加了很多新功能,同时也修复了一些 libtailscale 的问题(相关修复开源在 https://github.com/GalaxNet-Ltd/libtailscale 不知道为啥, 感觉 Tailscale 的 iOS 有些严重问题上游修复的不积极, 比如这个断网问题: https://github.com/tailscale/tailscale/issues/19504); 与此同时, 我也一直在用多余的 codex 额度(pro 5x 用户, 近期 reset 实在时太多了), 在开发一个全免费全开源的 Play 版本, 用来满足当时一些国内外用户提到的 android 版本需求
由于之前的一些方案感觉不理想, 在 5.6/astra 发布后又进了一些优化, 感觉逐渐达到了自己可用的情况, 甚至为 SSH terminal 增加基于 SGR 的鼠标支持(herdr 这种 mouse native 的 TUI 应用需要)基本上 Astra 一发就差不多了
最近重新把之前的 play 开发者账号用了起来, 全部委托给 codex 负责截图、描述、商店操作(甚至如何搞授权也是 codex 告诉我的, 相比 iOS 开发要复杂点), 没想到当前提交隔天就通过了
因此发在这里也分享给有需要的朋友, 提前声明如下:
1 、这是一个完全免费的应用,代码完全开源 ( https://github.com/GalaxNet-Ltd/novascale-android), 与 iOS 版本不同, 没有采用 libtailscale, 直接让 codex 基于 tailscale 源码适配
2 、半年前的最初版本大概还是 claude 做的, 感觉做的不怎么样, 当前完全由 Codex 开发, 我只负责架构文档和最终的验收, 所以可以称之外完全 AI 开发并发布的版本, 后面可能会根据用户反馈、时间和 Codex 额外会进行一些迭代; 总体上感觉满足我有时候 iPhone 没电时用 Android 手机的需求
3 、代码为 GPL 协议, 原因在于从 termux 上借了一些 terminal rendering 的代码, 这部分它的协议是 GPL 的, 因此也只能 GPL 开源
Android 版本 NovaScale 的一些主要功能如下:
- 无需安装 Tailscale 官方 App ,因此可以同时使用其他 VPN
- 基于 libghostty(准确说是 libghostty-vt 库) + Termux 渲染方案
- 支持鼠标操作(因此 tmux / herdr 等场景可以正常使用)
- 支持剪贴板功能(包括 OSC52 )
- 支持自定义控制服务器(即支持 headscale 或其他自建 tailscale coordinator)
- 内置 SFTP 文件浏览器,支持直接编辑文件, 以及少量代码类型的高度支持
- 内置浏览器,可访问 tailnet 内部的 Web 服务
- 支持后台代理,让第三方应用使用 tailnet 连接, 例如你正在使用其他非 Tailscale VPN 时,也可以配合 Termius 等 SSH 客户端连接服务器
技术架构如下:
- tailscale 源码包装出 lib
- russh 通过 ffi 与 tailscale lib 进行通信, 实现 ssh 通道
- 使用 termux 提供的代码实现了一个 terminal UI 的渲染
- tailscale lib 中提供一个 socks5 代理, 此代理供浏览器实现基于 MagicDNS 的访问, 同时这个代理可以提供给其他进程使用
如果你是 Android 用户,并且对此感兴趣,可以通过如下链接下载:
https://play.google.com/store/apps/details?id=cc.galaxnet.novascale
简单推广下 iOS 版 NovaScale ,它包含 Android 版的全部功能,基础功能免费, 有少量的付费功能需要订阅或买断支持:
- 多 tailnet 支持
- 基于内置 Tailscale 和主机 Codex App-Server 直接交互的远程 Codex 方案(无需第三方中转)
- 服务器监控
- Docker 管理
目前我还在尝试通过 herdr 的协议实现原生 herdr 支持,让它能够像 herdr remote 一样工作。
iOS 版本可通过如下链接下载:
https://apps.apple.com/cn/app/novascale-%E4%B8%93%E4%B8%BA-tailscale-%E6%89%93%E9%80%A0/id6749938291
PS:
1 、最近看到 tailscale CEO 也忍不住充了点 codex 的额度, vibe 了一个内置 Tailscale 的 jellyfin 客户端, 同样也是基于 libtailscale 实现的, 有需要用户可以去他的 X 的帖子上翻翻应该能找到 testflight
2 、作为 tailscale 的重度用户, 也欢迎私信技术交流