Metadata-Version: 2.4
Name: ailnxweb
Version: 0.1.0
Summary: Web console (browser terminal, over PTY) for remotely driving Claude Code / Codex / OpenCode / Cline AI CLIs on a server or Windows PC.
Author: bitdeepcode
License: MIT
Keywords: cli,ai,web,terminal,pty,claude-code,codex,remote-shell,linux
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Topic :: System :: Shells
Classifier: Topic :: Terminals
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Flask==3.1.3
Requires-Dist: Flask-SocketIO==5.6.1
Requires-Dist: python-socketio==5.16.3
Requires-Dist: simple-websocket==1.1.0
Requires-Dist: python-dotenv==1.2.2
Requires-Dist: pyotp==2.10.0
Requires-Dist: qrcode==8.2
Requires-Dist: cryptography==49.0.0
Requires-Dist: requests==2.34.2
Requires-Dist: psutil==7.2.2
Requires-Dist: pywinpty==3.0.5; platform_system == "Windows"
Dynamic: license-file

# ailnxweb

通过网页远程控制服务器（或 Windows 本机）上的 AI 编码 CLI（Claude Code / Codex /
opencode / cline），以及 Windows 本机 PowerShell 终端。后端用伪终端（PTY）实时转发，
还原真实 CLI 交互——包括工具调用过程和权限确认。为手机浏览器优化。

Linux 下用 Python 标准库 `pty`、Windows 下用 `pywinpty`（原生 ConPTY）驱动交互式终端，
Flask-SocketIO 把输出实时推送到网页，前端用 [xterm.js](https://xtermjs.org/) 渲染。

> ⚠️ **这个应用把一个能读写文件、执行任意命令的交互式 Shell 暴露到网络上。**
> 部署前请务必看完下面的「安全提示」。

## 安装 & 快速开始

```bash
pip install ailnxweb        # 或 pipx install ailnxweb（推荐，隔离环境）

mkdir myconsole && cd myconsole
ailnxweb
```

首次运行没有任何配置时，会自动生成一个随机登录密码并打印在终端上，直接拿它登录即可：

```
数据目录: /home/you/myconsole
[首次启动] 未配置登录密码，已自动生成随机密码（建议登录后在网页里改掉）：
  用户名: admin
  密码:   xxxxxxxxxxxx
Claude Code Web 控制台启动: http://0.0.0.0:8765  (账号: admin)
```

浏览器访问 `http://<机器IP>:8765`，用打印出来的账号密码登录即可。

也可以先手动定好密码再启动：

```bash
ailnxweb --set-password   # 交互式设置密码
ailnxweb
```

当前目录会成为这个实例的**数据目录**（`.env`、密钥、上传、会话状态都存在这里）。
同一台机器上要跑多个实例（比如两个端口），分别建不同目录启动即可：

```bash
mkdir instance-8765 && cd instance-8765 && ailnxweb --port 8765
mkdir instance-8766 && cd instance-8766 && ailnxweb --port 8766
```

## 前置条件

1. **已安装并登录好 `claude`（Claude Code CLI）**，且当前用户能直接在终端里敲 `claude`
   进入交互模式——这个工具只是把已经能用的 CLI 转发到网页，不负责安装/登录 Claude
   Code 本身。
2. 需要开放访问的端口（默认 `8765`）在防火墙 / 云平台安全组里放行。
3. （可选）`codex` / `opencode` / `cline` 等其他引擎，按各自文档装好并登录后即可在网页
   上多选一个使用；不装某个引擎，网页上对应选项会自动置灰。

## 命令行参数

```
ailnxweb [--host HOST] [--port PORT] [--data-dir DIR] [--set-password]
```

| 参数 | 说明 |
| --- | --- |
| `--host` | 监听地址，默认 `0.0.0.0` |
| `--port` | 监听端口，默认 `8765` |
| `--data-dir` | 数据目录，默认当前目录；也可用环境变量 `AILNXWEB_DATA_DIR` |
| `--set-password` | 只交互式设置/重置登录密码，不启动服务 |

更细的配置项（`ALLOWED_BASE_DIR` 限制可操作目录、TOTP 两步验证、代理、会话有效期
等）写在数据目录下的 `.env` 里，网页 🔐 设置面板里也能改大部分。首次启动会在数据
目录生成一份带注释的 `.env`（不存在才生成，已有配置不会被覆盖）。

## 主要功能

- **多引擎**：Claude / Codex / opencode / cline，Windows 版额外提供直连本机的
  PowerShell 终端
- **断线宽限重连**：断线后进程保留一段时间（默认 20 分钟），刷新页面/换设备能接回
  同一会话
- **历史会话**：浏览、导出、导入，带回收站
- **文件管理**：目录树浏览、在线查看/编辑、上传下载、打包 zip
- **安全**：账号密码 + TOTP 两步验证、登录限流、锁屏 PIN、可信设备白名单
- **系统监控**：CPU / 内存 / 磁盘
- **OpenAI 兼容 API 中转**（`/v1/<path>`，独立于网页登录，需单独签发中转 Key）

## ⚠️ 安全提示

1. **首次登录后尽快改掉自动生成的密码**，并**开启 TOTP 两步验证**——仅靠密码不够。
2. **加 HTTPS**。用 Nginx / Caddy 反代 + 证书，并设置 `FORCE_SECURE_COOKIE=1`；裸
   HTTP 会让密码、TOTP 码、终端内容明文过网，只适合内网临时测试。
3. **收窄 `ALLOWED_BASE_DIR`** 到具体的项目父目录，不留空（留空 = 整台服务器随便选）。
4. **在防火墙/安全组限制来源 IP**。内置的登录限流挡不住有耐心的攻击者。
5. **慎用 `CLAUDE_PERMISSION_MODE=bypassPermissions`**——它会关掉 Claude Code 执行
   动作前的所有确认。
6. **不用时关端口或停服务**。

## License

MIT
