mirasim-relay
把 Mirasim 桌面版内置的「本地中继」单独拆出来,让 Linux 也能用自己账号的额度。
Mirasim 官方只发 macOS / Android 包,但它的 SHA256SUMS 里其实还有没在下载页挂出来的
mirasim-server-linux-x64-0.0.146.tar.gz。这个脚本就是从那份官方 Linux 构建里把中继部分
(登录 → 设备签名 → 转发)重新实现出来的,行为跟桌面版一致。
中继本身说的是 Anthropic 的协议,所以任何兼容 Anthropic API 的 agent 直接指过来就能用。
快速开始
./mirasim-relay login # 邮箱验证码 / GitHub / Google / 直接粘 token
./mirasim-relay status # 看账号、有效期、剩余额度
./mirasim-relay serve # 起本地中继,默认 127.0.0.1:8787
另开一个终端:
set -gx ANTHROPIC_BASE_URL http://127.0.0.1:8787
set -gx ANTHROPIC_AUTH_TOKEN mirasim-relay-managed-credential
claude
bash / zsh 用 ./mirasim-relay env --bash,它会按当前 shell 输出对应语法。
ANTHROPIC_AUTH_TOKEN 的值是什么都无所谓——每个请求都会被换成真正的中继凭据,
但大多数 agent 不设这个变量就不发请求,所以得给一个占位值。
命令
| 命令 | 说明 |
|---|---|
login [--method email|github|google|token] [--email ...] |
登录并保存凭据 |
serve [--port 8787] [--host 127.0.0.1] [--agent claude] [-v] |
起本地中继,-v 打印每条请求 |
status |
账号信息 + 用 1 token 的探测请求读额度 |
env [--port 8787] [--bash] |
输出环境变量 |
logout |
清除登录态(设备密钥保留) |
--agent 会作为 x-mirasim-agent 上报,取值跟桌面版一致:claude / codex / pi-gui。
它到底做了什么
agent ──► 127.0.0.1:8787 ──► https://mirasim-relay.mirofish.ai ──► Anthropic
(本脚本)
每个请求经过时:
- 换凭据 —— 删掉 agent 自己的
authorization/x-api-key,换成你的账号凭据。 - 续期 —— access token 距过期不足 15 分钟就用 refresh token 走
/auth/refresh换新的。 - 设备签名 —— 首次运行生成一对 Ed25519 密钥,向
/v1/device/session换一张短期 ticket;拿到后每个请求都按mrs-sig-v1签名(x-mirasim-device/ts/nonce/sig)。 中继若不支持(404/501)就退回裸 token,跟桌面版的降级路径一样。 - 收敛 header —— 丢掉 hop-by-hop 头;
anthropic-beta只保留中继真正认的context-1m-2025-08-07,其余丢弃。
响应是流式透传的,SSE 不会被缓冲。
配置
凭据存在 ~/.config/mirasim-proxy/config.json(0600),里面有账号 token、refresh token
和设备私钥。换目录用 MIRASIM_PROXY_HOME。
其它可覆盖项:MIRASIM_RELAY_BASE_URL、MIRASIM_LOGIN_URL、MIRASIM_APP_VERSION、
MIRASIM_NODE(指定 Node 运行时)。
Node
系统没装 Node 也能跑:vendor/node 是官方 Linux 包里那个 v22.23.1,启动器按
$MIRASIM_NODE → PATH 上的 node → vendor/node 的顺序找。
装了自己的 Node(>= 20)的话可以把 vendor/ 删掉。
测试
./vendor/node test.mjs
13 个离线用例,覆盖签名规范串、deviceId 推导、header 改写、配置文件权限。 不需要登录,也不会碰真实凭据。
注意
Mirasim 赠送额度的说法是 “Claude Code Max / Codex Pro usage inside Mirasim”。 把中继拆出来给别的 agent 用,大概率不符合他们的服务条款,最坏情况是封号。 自行判断。