npm.io
0.2.1 • Published 12h ago

tabby-rayremote-link

Licence
MIT
Version
0.2.1
Deps
0
Size
58 kB
Vulns
0
Weekly
0

把 Tabby 里正在运行的终端会话借给 RayRemote 云端——远端 viewer 直接接管同一个 PTY(不是新开 shell)。本地 Tabby 保持运行即会话存活;Tabby 退出 = 云会话断开(设计取舍,不做独立 daemon)。

工作方式

  • 右键任意终端 tab → 「发送到云端」:该 tab 本地画面盖上「正在被云端控制」遮罩 + 本地输入门闸,字节流镜像给云端。
  • 云端在 RayRemote 终端屏的「后台」列表看到 共享 · <标题>,点接续接管。
  • 所有权:接管/收回控制权 双向切换;owner=local 时云端只读,owner=cloud 时本地只读。
  • 取消共享/断网/重启 agent 都会自动把控制权还给本地——永远不会把本地终端锁死。

安装(macOS)

# 1. 构建(在插件源码目录)
npm install && npm run build        # 产物 dist/index.js

# 2. 拷进 Tabby 用户插件目录
mkdir -p "$HOME/Library/Application Support/tabby/plugins/node_modules"
rsync -a --delete --exclude node_modules --exclude src \
  ./ "$HOME/Library/Application Support/tabby/plugins/node_modules/tabby-rayremote-link/"

# 3. 完全退出并重开 Tabby(Cmd+Q;插件无热重载)

要求:RayRemote agent ≥app-5fdda33 在本机运行且 -terminal 开启(默认开)。agent 启动时写 ~/Library/Application Support/RayRemote/share-listen.json(端口+token,0600),插件据此发现本机端点。

卸载/停用

rm -rf "$HOME/Library/Application Support/tabby/plugins/node_modules/tabby-rayremote-link"

已共享的会话随 Tabby 退出自动断开;云端 pane 显示「会话已终止」。

更新

重新 build → 同路径 rsync → 重开 Tabby。不重启 Tabby 则跑旧代码。

开发调试

TCL_RELAY=ws://127.0.0.1:8890/ws?role=provider  # 绕过发现,直连测试 relay
TCL_AUTO=1                                       # 每个新终端自动共享

协议与细节见 ../HANDOFF.md(§13/§14 实测结论)与 RayRemote/docs/protocol.md 末节。

Keywords