CLI 参考
relay-core 提供功能完整的命令行界面,用于运行代理、检查流量、管理规则、脚本与证书。完整参数请运行 relay-core --help 或 relay-core <command> --help。
守护进程生命周期
一个常驻守护进程独占引擎与代理生命周期:唯一的状态在它手里,它写 $RELAY_DATA_DIR/daemon.json 供其他客户端发现,并同时服务控制 API、MCP 端点与内嵌 Web UI。relay-core status 会打印页面地址。用 --no-web 或 [daemon] webui = false 关掉页面。其余界面(CLI、MCP 桥、Web UI、TUI)都是它的客户端。代理仍然只在命令或工具要求时才启动。
relay-core start 启动守护进程与代理(幂等;已在运行则接入并回报端口)
relay-core stop 只停代理;守护进程、历史与规则保留
relay-core restart 重启代理
relay-core status 守护进程 / 代理相位与端口 / MCP 与 Web UI 地址 / 最近一次变更
relay-core shutdown 停代理并退出守护进程(注册表清空后才返回)
relay-core config 读取、查看与生成配置文件 start 是幂等的:守护进程已在跑就接入,代理已在跑就回报它监听的端口,端口被占用则以 start_failed 失败,而不是报一个从未 listen 的成功。status 还会给出最近一次生命周期变更及其来源,例如 stopped by cli:relay-core stop。
run
在前台运行这个守护进程——与 start 拉起的是同一个守护进程,只是不脱离终端、退出即结束。它写同一份清单、服务同一个控制 API 与 MCP 端点;--ui 的 TUI 是它的客户端,读的是其他客户端读到的那条事件流。
relay-core run [options]
监听与生命周期:
-l, --listen <ADDR> 代理监听地址(默认 127.0.0.1:8080)
--udp-tproxy-port <PORT> 启用 UDP TPROXY(仅 Linux)
--transparent 启用透明代理模式(macOS PF / Linux TPROXY)
TLS 拦截:
--ca-cert <PATH> CA 证书路径
--ca-key <PATH> CA 私钥路径(须与 --ca-cert 成对)
规则与脚本:
--rules <PATH> 从文件加载规则(JSON / YAML)
--script <PATH> 加载 Deno 脚本文件
--script-watch 监听脚本变更自动重载
--script-env-allow <LIST> 脚本可读取的环境变量名(逗号分隔)
--script-fetch-allow <LIST> 允许 relay.fetch 的主机(逗号分隔;* 为任意主机)。
设置此项才会启用 relay.fetch,且须在加载脚本之前
TUI:
--ui 启用 TUI 交互界面
--web 配置文件关掉页面时仍提供 Web UI
--no-web 不提供内嵌 Web UI
--theme <NAME> TUI 配色:relay、slate、high-contrast
(覆盖 RELAY_CORE_TUI_THEME 与 config)
流量录制:
--save-stream <PATH> 将每个流量更新以 JSONL 追加到该文件(含 body / WS 增量)
控制 API 与 MCP:
--api-port <PORT> 控制 API / Web UI 端口(默认 8082,被占则回落到临时端口)
--api-bind <ADDR> 绑定地址(默认 127.0.0.1)
--api-token <TOKEN> Bearer 令牌(守护进程默认自动生成并写入清单)
--api-cors <ORIGINS> CORS 允许源(逗号分隔)
--mcp-port <PORT> 同时在本进程内服务 MCP 端点(默认 18083)
上游代理:
--upstream <URL> 上级代理 URL(http:// 或 https://)
--upstream-auth-user <U> 上级代理 Basic 认证用户名
(密码:RELAYCORE_UPSTREAM_PASSWORD 环境变量)
--upstream-bypass <LIST> 绕过上级的主机列表
--upstream-fail-open 上级不可达时回落到直连 交互界面详见 TUI,部署模式详见 代理模式,环境变量与数据目录布局见 配置。
ca
管理 HTTPS 拦截所用 CA 证书。各平台安装步骤、Windows .cer 导出、CI/容器环境使用见 证书与 HTTPS 拦截。
relay-core ca <subcommand>
子命令:
generate [--force] 生成 CA 证书与私钥(默认 ~/.relay-core/)
install 将 CA 安装到系统信任库(macOS)
uninstall 从系统信任库移除 CA(macOS)
status 显示 CA 路径、存在性与信任状态
export [-o PATH] [--der] 导出 CA 证书
--der 输出 Windows .cer 适用的二进制格式 rules
管理拦截规则。
relay-core rules <subcommand>
子命令:
validate <file> 校验规则文件(JSON / YAML)
print <file> [--format F] 以规范化格式打印(json | yaml,默认 yaml)
test <file> --flow <flow.json>
用样本流量测试规则
list [--api-url <URL>] 通过 HTTP API 列出运行中代理的规则
(默认 http://127.0.0.1:18082) scripts
管理基于 Deno 的请求/响应修改脚本。
relay-core scripts <subcommand>
子命令:
validate <file> 将脚本加载到 Deno 引擎以检查语法
run-once <file> --flow <f> 对样本流量 JSON 单次执行脚本
init [dir] 初始化 esbuild + tsconfig 项目(默认 .)
build [entry] [-o OUT] 打包入口脚本(默认 src/index.ts -> dist/bundle.js)
dev [entry] [-o OUT] esbuild --watch 模式,用于本地开发 init 子命令会创建入门用的 src/index.ts 与 tsconfig.json。build / dev 使用 esbuild 打成单文件 bundle,再由 --script 加载。
flows
查看已捕获流量:默认列出最近的流量,加 --follow 则实时跟随。两者都读运行中守护进程的控制 API,地址由清单自动发现,不需要手工配置 URL。
relay-core flows [options]
连接:
--api-url <URL> 控制 API 基址(省略时从守护进程清单发现)
--follow 实时跟随新流量;过滤器不适用于实时流,二者不能同时使用
列表条件:
--host <HOST> 主机名子串匹配
--path <PATH> 路径子串匹配
--method <METHOD> HTTP 方法(GET、POST、...)
--status-min <N> 最小状态码
--status-max <N> 最大状态码
--has-error 仅含错误的流量
--websocket 仅 WebSocket 流量
--filter <EXPR> 过滤表达式(见下方语法)
--limit <N> 最大条数(1-200,默认 50)
输出:
--output <FORMAT> table、json、jsonl(默认 table) 过滤表达式语法同 TUI 过滤栏,例如 host:api method:POST status:>=400。
metrics
查看运行时指标。代理通过 HTTP 在 --proxy-url 暴露指标端点(默认 http://127.0.0.1:8080)。
relay-core metrics [options]
--proxy-url <URL> 代理指标端点(默认 http://127.0.0.1:8080)
--output <FORMAT> table、json(默认 table)
输出指标包括:流量总数 / 内存中 / 已丢弃、未决拦截数、WebSocket 未决消息数、
最旧拦截 / WS 消息年龄、规则执行错误、审计事件总数与失败数,以及流量与
审计事件通道的 lagged 计数。 Prometheus 文本格式请使用 HTTP API 端点 GET /api/v1/metrics/prometheus(见 HTTP API)。
analyze
对流量 dump(来自 --save-stream)或 HAR 导出进行离线分析。录制文件每行可能是一个完整 Flow,也可能是一条 FlowUpdate(新格式无损记录增量),两种都能读。
relay-core analyze --file <PATH> [options]
--file <PATH> JSONL 流量 dump 或 HAR 文件路径
--format <FORMAT> jsonl(默认)或 har
--output <FORMAT> table(默认)或 json
--top-n <N> 显示前 N 个最慢请求(默认 10)
输出主机直方图、方法直方图、状态直方图、前 N 个最慢请求、按错误聚类的分组。 proxy
在 macOS(PF)或 Linux(TPROXY)上管理透明代理。仅在启用 transparent-macos / transparent-linux 特性时编译。
relay-core proxy <subcommand>
子命令:
generate [--port P] [--interface I] [-o OUT]
将 PF / TPROXY 配置写入 OUT(默认 stdout)
load --port P [--interface I] 激活规则(需要 sudo)
unload 关闭规则(需要 sudo)
status 显示当前规则 环境变量
RUST_LOG 日志过滤(如 info、debug、trace)。帮助文本里的 RELAY_LOG 目前不会被读取
RELAY_DATA_DIR 数据目录(默认 ~/.relay-core)
RELAY_CA_CERT CA 证书路径(与 RELAY_CA_KEY 成对)
RELAY_CA_KEY CA 私钥路径(与 RELAY_CA_CERT 成对)
RELAY_CORE_TUI_THEME TUI 主题(relay、slate、high-contrast),
在 --theme 缺省时使用
RELAYCORE_UPSTREAM_PASSWORD 上级代理 Basic 认证密码
(与 --upstream-auth-user 配合使用)
RELAY_API_PORT 控制 API / Web UI 端口覆盖
RELAY_MCP_PORT 守护进程 MCP 端点端口覆盖
RELAY_PROXY_PORT 代理端口覆盖
RELAY_PROXY_IDLE_TIMEOUT 无流量多少秒后停代理(0 = 永不自动停)
RELAY_MCP_URL / RELAY_MCP_TOKEN MCP 桥直接使用的端点与令牌
RELAY_MCP_NO_AUTOSTART 设为 1 时 MCP 桥不得自行启动守护进程 完整的数据目录布局与参数优先级见 配置。