# 启动 Web Gateway 服务

## 使用场景

当你希望通过浏览器使用 Jarvis 的 Web 界面，而不是只在终端里操作时，需要先启动 Web Gateway 服务。这个服务负责提供浏览器访问入口，并转发后续的网页连接、认证和操作请求。

## 操作步骤

1. 在终端中输入下面的命令，然后按回车：`jarvis-service start`
2. 如需使用默认配置，直接启动即可；默认会监听本地地址 `127.0.0.1` 和端口 `8000`。
3. 如果你想改监听地址或端口，可以使用类似命令：`jarvis-service start --gateway-host 0.0.0.0 --gateway-port 9000`
4. 如果你希望浏览器连接前先输入密码，可以在启动时一并设置网关密码，例如：`jarvis-service start --gateway-password 你的密码`
5. 提交命令后，保持这个终端窗口不要关闭，让 Web Gateway 服务持续运行。
6. 服务启动后，再到浏览器中访问对应的 Web 页面并进行连接。

## 你会看到的提示与反馈

- 启动时，终端会显示：
  - 当前监听地址
  - 当前监听端口
  - 密码是否已设置

- 如果你设置了密码，终端会显示“已设置”。
- 如果你没有设置密码，终端会显示“未设置”。
- 启动成功后，服务会持续运行在当前终端，不会立即退出。

## Node 模式补充说明

如果你正在使用多节点部署，可以在启动 Gateway 时增加 `--node-mode` 参数，使当前 Gateway 以主节点或子节点身份运行。

### 作为主节点启动

- 示例命令：`jarvis-service start --node-mode master`
- 适用场景：当前节点负责对外提供统一入口，浏览器、Web 客户端和 VSCode 插件都连接到这个主节点。
- 启动后，主节点除了管理本地 Agent，还会维护已接入的子节点信息。

### 作为子节点启动

- 示例命令：`jarvis-service start --node-mode child --node-id worker-01 --master-url ws://master-host:8000 --node-secret your_secret`
- 适用场景：当前节点不直接作为统一访问入口，而是接入某个主节点，负责承载远端 Agent。
- 子节点启动后，会与主节点建立长期连接，并由主节点统一对外暴露 Agent 能力。

### 使用建议

- 单节点部署时，可以继续按原来的方式启动；如果当前版本要求显式声明模式，则使用 `--node-mode master`。
- 多节点部署时，建议先启动主节点，再启动子节点并确认子节点已成功接入。
- 浏览器、Web 客户端和 VSCode 插件通常连接主节点，而不是直接连接子节点。

## 注意事项

- 这是终端中的启动步骤，不是浏览器页面里的操作。
- 不设置密码时，Web Gateway 不会启用密码认证；是否允许未设置密码访问，还会受到网关认证相关配置影响。
- Web Gateway 运行期间需要保持终端进程存活；如果你关闭了启动它的终端，浏览器连接通常也会中断。
- 如果你只监听 `127.0.0.1`，通常只适合本机访问。
- 在 node 模式下，主节点与子节点之间还需要满足网络可达；如果子节点无法接入主节点，浏览器侧将看不到对应节点上的 Agent。
