@broberg/auth-relay

中文文档
0.5.2发布于 2026/11/01ES Module近 30 天下载 5905

ARS——代理商要求拥有者提供代码或密码;拥有者在本地页面上回答一次;只有灰人得到一次.

中文使用文档
文档目录10 节
  1. 愿景
  2. 特派团
  3. 这是什么
  4. 承诺
  5. 谁用
  6. 从 cc 会话中询问
  7. 状态
  8. 配对——只有窗口可以回答
  9. 进入卡片(卡片-F406)
  10. 在主机( 软件包) 中使用 ARS

ARS — Auth 中继服务

在本地页面中,所有者键入一个请求代理的代码或密码—— npm OTP, 认证器- 应用程序代码, 登录—— 因此该值从未通过聊天或LLM上下文.

愿景

舰队自行运行了100%——而真正需要主人之手的几分时刻(从他手机中一次性的代码,只有他知道密码)则在一整页上取取取他5秒,从不做终端,从不聊天,从不做复制.

特派团

让舰队中的每一个特工都有一个简单,安全的方法来要求拥有者一个秘密值,并给拥有者一个简单,安全的地方来回答:代理询问,他得到一个通知,他打过一次,只有请求代理收到它——一次——并且该值从未被LLM存储,记录或看到.

这是什么

今天,当一个代理点击 npm 发布需要一次性代码,一个有双因子登录或密码的网站,工作就会停止. 拥有者必须在终端中注意到,阅读请求,将价值粘贴到聊天中——在记录片和AI的记忆中着陆.

ARS去掉这个。 它是一个小型的网络服务,运行在主人的Mac上,只能从Mac本身获得:

  1. 一个特工问. POST http://127.0.0.1:<port>/v1/asks 与谁所问;与问;与什么所答code, (中文(简体) ), password, (中文(简体) ), text 或者说 approve) (中文(简体) ).
  2. 主人闻已. 一个macOS通知名谁问和为什么,和问页打开他的浏览器.
  3. 他回答了. 一个字段(按密码显示,数字表示代码), 发送 或者说 关于。 。 。 .
  4. 经纪人得到它,一次. 毒剂长发 GET /v1/asks/:id?wait=55; 第一部读出答案并擦去. 后来读到的只是回答.

承诺

  • 从来没有存储,从来没有登录. 答案只存在于记忆中,直到读取或过期. 审计清单显示 谁要求什么和何时 从不值钱.
  • 过期. 10分钟后未答复的询问已无法回答.
  • 惟有行者能诵. 每个请求都带有自己的读取符号,只有被请求的BID本能才能读取.
  • 探员证明他们是谁. 每一次代理电话都携带一张布罗贝里身份证;店主看见谁从机票上问话(edge m1 · session lens),从不从代理写出短信.
  • 只有这个Mac——对于特工来说,是舰队的私人网络. 义务为 127.0.0.1并有防范网页的警卫试图接近它。 其它Macs上的代理联系到这个Mac's Tailscale地址上的代理API(而别无他法);窗口,历史和应答都停留在回转上.
  • 而不是一个捷径 经过主人自己的话. 一个 approve 请求是常规确认;部署有破坏性的迁移,DNS,env翻转等需要他的直接命令.

谁用

  • 镜头 - 一个测试步骤 fill [field] from owner "<question>" 询问 ARS 并键入答案,所以点击 2FA 的流量会持续运行.
  • 任何 cc 会话 - 要求Npm检察官办公室之前 npm publish,有一个 curl。 。 。 .

从 cc 会话中询问

从朋友那里得到一张票(有效300 s——每通电话取一张新票),然后问和等待:

T=$(curl -s -m 5 "http://127.0.0.1:4123/api/edge-ticket?audience=https://ars.broberg.ai&scope=ars:request&session=$BUDDY_SESSION_NAME" | jq -r .ticket)
curl -s -X POST http://127.0.0.1:7480/v1/asks -H "authorization: Bearer $T" -H 'content-type: application/json' \
  -d '{"requester":"my-session: npm publish","question":"npm OTP for @broberg/x 1.2.3","kind":"code"}'
# → { id, read_token, … }; then GET /v1/asks/<id>?wait=55 with the same kind of header + x-ars-read-token

从另一个Mac开始,使用这个Mac的尾图地址,而不是 127.0.0.1 (印刷品: scripts/install.sh,比如说. http://100.78.170.62:7480) (中文(简体) ).

通过环境变量将答案传递到下一个命令(npm_config_otp=…),从不作为聊天中的文本.

  • 后来:蜂鸣 ——移动版本(推向iPhone)相同 /v1/asks 合同,所以消费者只更改地址.

状态

计划。 见 docs/PLAN.md 合同,故事和推出.

配对——只有窗口可以回答

ARS窗口第一次在Mac上打开,它要求6位数代码,ARS只显示为macOS通知. 正确的代码将窗口对起来;从那时起,它只能看到等待的询问和回答. ARS只保留窗口钥匙的散列(~/Library/Application Support/ARS/owner.json) (中文(简体) ).

诚实的极限:配对会阻止任何程序简单地拨打ARS并回答自己的要求. 它不会停止一个像你一样运行和驱动浏览器的程序. 当BID给Mac会话一个身份时,这个会移动到BID.

进入卡片(卡片-F406)

开始 docs/MIGRATION.md ——什么卡片取而代之,挂载,历史导入,声音/语音,客户端和开关订单.

  • src/core/ 是询问核心(存储,四个状态,单读,过期,已读取). 它只进口 node:crypto测试使它保持这样.
  • src/contract.test.ts 这是 /v1/asks 合同。 运行它对任何主机: ARS_CONTRACT_URL=http://host:port bun test src/contract.test.ts。所有者答案需要适配器(ARS: ARS_CONTRACT_PAIR_CODE报告为跳过.

在主机( 软件包) 中使用 ARS

仅存一文. @broberg/auth-relay 船型脚本源(engines.bun); 节点主机不能导入. 把它固定好 保守秘密.

import { createAsksRoute, webRoot } from '@broberg/auth-relay';
import { serveStatic } from 'hono/bun';

app.route('/ars', createAsksRoute({
  auth: (req) => /* your agent auth */ ({ principal: 'agent-123', label: 'components' }), // null → 401
  delivery: {
    notify: ({ id, label, question, pageUrl }) => { /* tell the owner; never gets an answer */ },
    isOwner: (c) => /* your owner session check */ true,
  },
  pageUrl: (id) => `https://host/ars/?ask=${id}`,
}));
app.get('/ars', (c) => c.redirect('/ars/'));            // the window's URLs are relative
app.use('/ars/*', serveStatic({ root: webRoot, rewriteRequestPath: (p) => p.replace(/^\/ars/, '') }));
  • auth.label 是所有者视之为请求者;一个答案只能由 principal 问了.
  • 把自己的主机/JSON警卫放在前面(AS独立使用) localRequestGuard 从 @broberg/local-guard/hono) (中文(简体) ).
  • 若为 isOwner 表示不,窗口显示ARS的配对屏幕——一个拥有自己登录的宿主应该将主人送去.
  • 证明你的主人: defineContractSuite({ baseUrl, adapter, agentHeaders, guards }) 财务报告和审定财务报表 defineNoPersistSuite(start) 从 @broberg/auth-relay/testing。 。 。 .

版本与发布记录

@broberg/auth-relay 共发布 32 个版本,首次发布于 2026/10/25;过去 12 个月发布了 32 个版本。

版本发布日期距今
0.5.2latest2026/11/017 天前
0.5.12026/11/017 天前
0.5.02026/10/318 天前
0.4.12026/10/318 天前
0.4.02026/10/318 天前
0.3.222026/10/2811 天前

关于 @broberg/auth-relay 的常见问题

@broberg/auth-relay 是什么?

ARS——代理商要求拥有者提供代码或密码;拥有者在本地页面上回答一次;只有灰人得到一次.

如何安装 @broberg/auth-relay?

在项目目录运行 npm install @broberg/auth-relay,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ars,可以用 npx ars 直接运行。

@broberg/auth-relay 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/broberg__auth-relay 是否存在。

@broberg/auth-relay 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@broberg/auth-relay 可以商用吗?

@broberg/auth-relay 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@broberg/auth-relay 的下载量有多少?

根据 npm 官方下载统计,@broberg/auth-relay 在 2026/10/09 – 2026/11/07 这 30 天内被下载 5,905 次,日均约 197 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@broberg/auth-relay 还在维护吗?

最新版本 0.5.2 发布于 2026/11/01(7 天前);至今共发布 32 个版本,其中过去 12 个月发布了 32 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。