auvezy-terminal-remote 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +17 -0
- package/README.md +107 -0
- package/dist/cli.js +4800 -0
- package/dist/postinstall.mjs +134 -0
- package/frontend-dist/assets/Geist-Variable-CrgPqtmy.woff2 +0 -0
- package/frontend-dist/assets/GeistMono-Variable-BNLlm6Cd.woff2 +0 -0
- package/frontend-dist/assets/index-BALTbT9e.js +325 -0
- package/frontend-dist/assets/index-DUpRzupd.css +32 -0
- package/frontend-dist/icons/atr-icon-180.png +0 -0
- package/frontend-dist/icons/atr-icon-192.png +0 -0
- package/frontend-dist/icons/atr-icon-512-maskable.png +0 -0
- package/frontend-dist/icons/atr-icon-512.png +0 -0
- package/frontend-dist/icons/atr-icon.svg +64 -0
- package/frontend-dist/index.html +35 -0
- package/frontend-dist/manifest.webmanifest +55 -0
- package/frontend-dist/screenshots/desktop.png +0 -0
- package/frontend-dist/screenshots/mobile.png +0 -0
- package/frontend-dist/sw.js +2 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Copyright (c) 2026 Auvezy. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This software is proprietary and confidential. No part of this package may be
|
|
4
|
+
reproduced, distributed, modified, or used in any form or by any means, except
|
|
5
|
+
as expressly permitted in writing by the copyright holder.
|
|
6
|
+
|
|
7
|
+
The package is published on npm solely for the convenience of installation by
|
|
8
|
+
authorized users. Publication does not constitute a grant of license, express
|
|
9
|
+
or implied. Reverse engineering, decompilation, or disassembly of any portion
|
|
10
|
+
of this software is prohibited.
|
|
11
|
+
|
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
13
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
14
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
15
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
16
|
+
LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|
17
|
+
OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# auvezy-terminal-remote
|
|
2
|
+
|
|
3
|
+
> 局域网内通过手机 / 平板浏览器远程控制 PC 上的任意终端程序(zsh / bash / claude / 任何 CLI)。
|
|
4
|
+
>
|
|
5
|
+
> 一行命令 `atr <program>`,多终端多实例自动出现在浏览器顶栏 tab 切换。
|
|
6
|
+
|
|
7
|
+
## 这是什么
|
|
8
|
+
|
|
9
|
+
你坐在沙发上拿着手机,PC 上某个 CLI(Claude Code / 部署脚本 / 调试会话…)正在跑一个长任务。你希望:
|
|
10
|
+
|
|
11
|
+
- 实时看到终端输出(包括 ANSI 颜色)
|
|
12
|
+
- 输入下一条指令、按方向键
|
|
13
|
+
- Claude 触发审批 hook 时,手机锁屏弹通知
|
|
14
|
+
- 不开公网、不依赖云
|
|
15
|
+
|
|
16
|
+
这正是这个项目要做的。把 PTY 输出经 WebSocket 桥到 webapp,
|
|
17
|
+
把 webapp 输入桥回 PTY。仅绑 LAN IP,用 token + 本地 cookie 鉴权。
|
|
18
|
+
|
|
19
|
+
## 安装
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g auvezy-terminal-remote
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 使用
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
atr # 跑当前 $SHELL(zsh / bash 自动检测)
|
|
29
|
+
atr claude # 跑 claude
|
|
30
|
+
atr zsh # 跑 zsh
|
|
31
|
+
atr claude --resume foo # 透传任意参数给子进程
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
启动后扫终端打印的二维码 → webapp 自动登录(token 在 `~/.auvezy/terminal-remote/config.json`)。
|
|
35
|
+
|
|
36
|
+
**多实例**:在不同终端多次 `atr <prog>`,每次会自动占一个新端口(3000、3001、3002…),
|
|
37
|
+
浏览器顶栏会自动出现新 tab,点击即可切换。
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
atr list # 列出本机所有实例
|
|
41
|
+
atr stop # 停止本机所有实例
|
|
42
|
+
atr attach <url> # 命令行接管已有实例
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 启动选项
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
atr [子命令] [选项]
|
|
49
|
+
|
|
50
|
+
子命令:
|
|
51
|
+
start 启动 backend(默认)
|
|
52
|
+
attach attach 到运行中的实例(命令行接管)
|
|
53
|
+
list 列出本机所有运行中实例
|
|
54
|
+
stop 停止本机所有实例
|
|
55
|
+
|
|
56
|
+
选项:
|
|
57
|
+
-p, --port <n> 端口(默认 3000,多实例自动递增;除非 -S)
|
|
58
|
+
-S, --strict-port 严格端口模式:被占即报错退出,不自适应
|
|
59
|
+
--spawn-timeout <s> PTY spawn 兜底秒数(默认 30;0=不超时;
|
|
60
|
+
首个浏览器连入 / 按 Enter / 超时三选一触发)
|
|
61
|
+
--wait-confirm 强制必须按 Enter 才 spawn(覆盖浏览器/超时触发)
|
|
62
|
+
--name <s> 实例名(用于 webapp 显示)
|
|
63
|
+
--no-terminal 不打印二维码(CI / 守护进程友好)
|
|
64
|
+
--command <cmd> PTY 启动命令(默认当前 $SHELL)
|
|
65
|
+
--args <json> 命令参数(JSON 数组字符串)
|
|
66
|
+
-h, --help 显示帮助
|
|
67
|
+
-v, --version 显示版本号
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
环境变量:
|
|
71
|
+
|
|
72
|
+
| 变量 | 用途 |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `OCR_COMMAND` | 子进程命令(默认 `$SHELL`,没有则 `/bin/sh`;显式设为 `claude` 跑 Claude)|
|
|
75
|
+
| `OCR_ARGS` | 命令参数(JSON 数组字符串,如 `'["-c","tail -f /dev/null"]'`)|
|
|
76
|
+
| `OCR_CWD` | 子进程工作目录(默认 `process.cwd()`)|
|
|
77
|
+
| `OCR_ANSI_FILTER` | 是否过滤 alt-screen 输出(默认 `false`)。设 `true` 让 vim/htop 退出后重连回放更干净;但全程 alt-screen TUI(claude/tmux/...)仍受内置黑名单保护 |
|
|
78
|
+
| `OCR_ANSI_FILTER_TUI_NAMES` | 追加自家 alt-screen TUI 黑名单(逗号分隔),例如 `"lazygit,k9s,gh-dash"` |
|
|
79
|
+
| `VAPID_PUBLIC_KEY` / `VAPID_PRIVATE_KEY` | 注入 VAPID(高优先级,跳过文件)|
|
|
80
|
+
| `PORT` | 同 `--port` |
|
|
81
|
+
| `STRICT_PORT` | 同 `--strict-port`(设 `true` 启用严格模式)|
|
|
82
|
+
| `OCR_SPAWN_TIMEOUT` | 同 `--spawn-timeout`(秒;0 = 无超时)|
|
|
83
|
+
| `AUTH_TOKEN` | 指定 token(默认自动生成)|
|
|
84
|
+
| `LOG_LEVEL` | pino 级别(默认 info)|
|
|
85
|
+
|
|
86
|
+
## 配置
|
|
87
|
+
|
|
88
|
+
启动时自动读 `~/.auvezy/terminal-remote/config.json`(首次启动自动生成)。
|
|
89
|
+
VAPID 在 `~/.auvezy/terminal-remote/vapid.json`,多实例注册表在
|
|
90
|
+
`~/.auvezy/terminal-remote/instances/<port>.json`。
|
|
91
|
+
|
|
92
|
+
## 在 WSL 中跑、Windows 浏览器访问
|
|
93
|
+
|
|
94
|
+
WSL2 的两种网络模式行为不同:
|
|
95
|
+
|
|
96
|
+
- **mirrored 模式**(Win11 22H2+ 默认):WSL 直接拿 Windows LAN IP(如 `192.168.x.x`),
|
|
97
|
+
Windows 浏览器可以直接用 banner 上的 IP 访问,无需任何额外配置
|
|
98
|
+
- **NAT 模式**(默认):WSL 在 `172.x.x.x` 私网,Windows 浏览器无法直连。
|
|
99
|
+
backend 启动时会自动检测并在 banner 末尾打印 PowerShell 配置命令
|
|
100
|
+
|
|
101
|
+
## 系统要求
|
|
102
|
+
|
|
103
|
+
- Node.js ≥ 20
|
|
104
|
+
|
|
105
|
+
## 许可
|
|
106
|
+
|
|
107
|
+
专有软件,保留所有权利。详见 LICENSE。
|