跳转到内容
WebMux

控制面 JSON 契约

基于 main@306d253 的文档在 GitHub 上查看编辑此页

webmux version|status|stop|config ... --json 向标准输出写入恰好一个 JSON 对象,诊断只写标准错误。所有对象带 v(当前 1);同一版本内只增加可选字段,不删除或改变既有字段含义,不兼容变更提升 v。退出码:0 运行中且健康或操作成功,1 其他错误,2 用法错误,3 未运行(status、bridge)。

version:{"v": 1, "version": "0.3.0", "contract": 1}。contract 是该构建支持的控制契约版本,不读取配置、不启动服务;客户端据此判断兼容。不带 --json 的 webmux version 与 webmux --version 仍输出 webmux <版本>。旧版本会忽略 --json 并输出文本,客户端应回退解析文本。

status(亦为 /local/v1/status):

{
"v": 1,
"state": "running", // running | stopped | unresponsive | error
"record": true, // 来自有效运行时记录或本机 API
"localApi": true, // 经本机 API 获取
"pid": 1234, // 未运行时为 null
"version": "0.1.0",
"launcher": "manual", // manual | systemd | launchd | windows-tray
"listen": "127.0.0.1:7681", // 实际监听地址
"sessions": 2, // 健康时的会话数,否则为 null
"health": { "status": "ok", "message": "" }, // ok | unauthorized | refused | timeout | not-webmux | error
"urls": {
"local": "http://127.0.0.1:7681",
"remote": [
{
"url": "http://100.64.0.5:7681",
"interface": "tailscale0",
"kind": "tailscale",
},
],
},
"tokenConfigured": true,
"drift": [], // 配置已修改但未重启的字段:listen、token
"warnings": [],
"config": {
"path": "/home/u/.config/webmux/config.toml",
"exists": true,
"error": "",
},
"logFile": "",
"socket": "/home/u/.local/state/webmux/run/webmux.sock",
"startedAt": "2026-01-01T00:00:00Z",
"token": "...", // 仅 --reveal-token 且配置了 Token 时出现
"tunnel": {
// 仅运行中实例经本机 API 返回;未运行或旧版本实例省略
"state": "ready", // off | starting | ready | failed
"publicUrl": "https://abc.trycloudflare.com", // 仅 ready,不含 Token
"error": "", // 仅 failed,失败原因
"named": false, // 是否 Named Tunnel
"enabled": true, // 可选:当前进程启用期望(含 CLI 覆盖),不代表磁盘或 ready
"settingsAvailable": true, // 可选:只有 true 才提供 Web 隧道设置页入口
},
"push": {
// 仅运行中实例经本机 API 返回;未运行或旧版本实例省略。不含 endpoint 或密钥
"enabled": true, // [push] enabled
"available": true, // 推送存储可用
"error": "", // 仅不可用时出现
"subscriptions": 1, // 已登记设备数
"publicOrigin": "https://term.example.com", // 仅当前有效 Named 设置具有主机名时出现,动态跟随设置
},
}

链接不带路径、查询参数或 Token。回环监听的远程链接为空数组;通配监听列出启用中的非回环、非链路本地 IPv4 地址,Tailscale(100.64.0.0/10)在前,WSL NAT 模式下的虚拟网卡地址不列出;通配监听且未配置 Token 时 warnings 含暴露警告。

stop:{"v": 1, "result": "stopped" | "killed" | "not-running" | "refused" | "error", "message": "..."}。

config show:{"v", "path", "exists", "listen", "tokenConfigured", "defaultCwd", "stateDir", "allowedOrigins", "view", "observedAt", "fields", "stores", "instance?"}。默认 view 为 configured,--live 为 effective 并包含 PID/进程身份/启动时间;不可达报错。

fields 为字段名到 {value, source} 的映射,stores 包含 {id, path, status, phase?, observedAt, lock};敏感凭据仅为布尔,不返回正文。

config path:{"v", "path", "exists"}。config validate:{"v", "ok", "errors": [...]}。