@daslabhq/kern

中文文档
0.2.0发布于 2026/05/28MITTypeScriptES Module近 30 天下载 2799

代理钱包。 持有证书——代理人在不见的情况下使用.

中文使用文档
文档目录16 节
  1. 问题
  2. Kern 如何运作
  3. 快开始
  4. 代理整合(MCP)
  5. MCP工具
  6. 默认布局
  7. 范围界定规则
  8. 节点
  9. 添加队友
  10. 添加 CI 语句
  11. 取消访问
  12. 机器付款
  13. 国 际
  14. 环境
  15. 如何比较
  16. 许可证

韩文

tests

代理钱包。 持有证书——代理人在不见的情况下使用.

npm install @daslabhq/kern

与Node.js 18+和 阿宝. . CLI 需要 Bun. .

问题

探员需要API密钥. 今天,生活在阴道中的人——简洁的、没有观察的、每个过程都能看到一切。 给Frede打电话的特工 上下文窗口里有你的制作密钥 每一个证书都是从过滤中迅速注射的.

Kern 如何运作

Kern 是一个证书钱包,由 年龄加密。证书是加密文件,以文件夹形式排列,承诺使用。 钱包拿着 特工们用两种方法:

代理服务器 证书从不离开钱包。 代理请求 kern 发出 API 呼叫; kern 注入 auth并返回响应 .

import { openWallet, loadIdentityFromHost } from "@daslabhq/kern";

const wallet = openWallet({ identity: await loadIdentityFromHost() });

// wallet injects the Bearer token — agent never sees it
const resp = await wallet.fetch("tokens/github", "https://api.github.com/user/repos");
const repos = await resp.json();

直接 用于SDKs和非HTTP协议中需要原始证书的地方.

const key = await wallet.get("tokens/openai");
const client = new OpenAI({ apiKey: key });

两人都从同一个加密金库读取. 你选择每个证书.

快开始

# create your identity (age keypair)
kern identity init

# create the vault
mkdir -p secrets
kern identity pubkey >> secrets/.recipients

# add credentials
kern secret add tokens/github
kern secret add tokens/openai

# proxy request — credential stays in the wallet
kern fetch tokens/github https://api.github.com/user

代理整合(MCP)

添加 kern 作为 MCP 服务器 。 经纪人对钱包说话——永远不要拿着钥匙.

{
  "mcpServers": {
    "kern": {
      "command": "npx",
      "args": ["@daslabhq/kern", "mcp"]
    }
  }
}
Agent: "Fetch my GitHub repos"

→ kern_fetch(secret: "tokens/github", url: "https://api.github.com/user/repos")
→ wallet decrypts tokens/github, injects Bearer token, makes the request
→ returns JSON response to agent

Agent got the data. Never saw the token.
Agent: "Add my Stripe test key"

→ kern_add(name: "testing/stripe")
→ browser opens kern's local form
→ you paste the key
→ encrypted into secrets/testing/stripe.age

Credential went: browser → wallet → encrypted file. Agent never saw it.

MCP工具

工具模式说明
kern_fetch代理服务器已认证的 HTTP 请求 。 证书留在钱包里.
kern_get直接解密并返回证书值 .
kern_add—— 说通过浏览器形式添加证书 。 特工从没见过.
kern_rotate—— 说通过浏览器形式替换证书 .
kern_remove—— 说删除证书.
kern_list—— 说列出证书名称( 绝不是值) .
kern_status—— 说钱包健康检查.
kern_recipients—— 说列表收件人(公钥).

默认布局

证书是文件夹中年龄加密的文件。 每个文件夹有一个 .recipients 文件控制谁可以解密。 将整件事情都交代给——没有私钥是密码.

secrets/
├── .recipients              # all nodes
│
├── tokens/                  # API credentials
│   ├── github.age
│   ├── openai.age
│   └── stripe.age
│
├── infra/                   # production infrastructure
│   ├── database_url.age
│   └── redis_url.age
│
└── testing/                 # dev + CI only
    ├── .recipients          # narrower: Alice + CI (not prod)
    ├── stripe_test.age
    └── llm.age

范围界定规则

  • 每个文件夹可以有自己的 .recipients
  • 没有 .recipients从父继承
  • Prod 服务器解密 tokens/ 财务报告和审定财务报表 infra/ ——从未看到测试密钥
  • CI 解密程序 testing/ - 永远不要碰亲笔证明

节点

节点是任何具有年代键盘的机器——你的笔记本电脑,CI,生产服务器.

添加队友

# Bob generates his identity
kern identity init && kern identity pubkey
# → age1xyz...

echo "age1xyz..." >> secrets/.recipients
echo "age1xyz..." >> secrets/testing/.recipients
kern secret rewrap
git commit -am "add Bob"

添加 CI 语句

kern identity init --save /tmp/ci-key
echo "$(kern identity pubkey)" >> secrets/.recipients
echo "$(kern identity pubkey)" >> secrets/testing/.recipients
kern secret rewrap
gh secret set KERN_AGE_KEY < /tmp/ci-key
rm /tmp/ci-key

中情局的一个秘密 其他一切从git解密.

取消访问

kern recipients remove age1xyz...
kern secret rewrap
kern secret rotate tokens/github  # rotate what they had access to

机器付款

保护API密钥的同一种代理保护支付证书. 一个购买计算,呼叫支付API,或者管理订阅的代理人需要支付密钥——但不应该持有.

// agent charges a customer — never sees sk_live_*
const resp = await wallet.fetch("tokens/stripe", "https://api.stripe.com/v1/payment_intents", {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: "amount=2000&currency=usd&automatic_payment_methods[enabled]=true",
});

与 条纹 MPP 机器对机器的付款 以及任何获取Bearer 认证的API. x402 (韩语) 支助——自动谈判 402 Payment Required 反应——在行进图上.

国 际

kern identity init [--save PATH]   # create age keypair
kern identity pubkey               # print public key

kern secret add [FOLDER/]NAME      # encrypt and store
kern secret get [FOLDER/]NAME      # decrypt to stdout
kern secret list                   # show all names
kern secret rotate [FOLDER/]NAME   # replace a value
kern secret delete [FOLDER/]NAME   # remove
kern secret rewrap                 # re-encrypt for current recipients

kern fetch SECRET URL [OPTIONS]    # proxy request (credential stays in wallet)
  --method POST                    # HTTP method (default GET)
  --body '{"key": "val"}'          # request body

kern recipients                    # list all recipients
kern recipients remove KEY         # remove from all folders

kern mcp                           # start MCP server
kern serve                         # start local credential form

环境

变量目的默认
KERN_AGE_KEY年龄私钥~/.kern/key
KERN_VAULT_DIR库目录./secrets

如何比较

.env 数据目标默认韩文
在休息时加密✓✓✓
住在这里✓✓
文件夹范围✓✓
没有服务器✓✓✓
代理模式✓
代理-本地(MCP)✓
类型脚本 SDK✓

许可证

麻省理工学院

版本与发布记录

@daslabhq/kern 共发布 1 个版本,首次发布于 2026/05/28;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.2.0latest2026/05/285 个月前

关于 @daslabhq/kern 的常见问题

@daslabhq/kern 是什么?

代理钱包。 持有证书——代理人在不见的情况下使用.

如何安装 @daslabhq/kern?

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

@daslabhq/kern 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@daslabhq/kern 支持 ESM 还是 CommonJS?

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

@daslabhq/kern 可以商用吗?

@daslabhq/kern 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@daslabhq/kern 的下载量有多少?

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

@daslabhq/kern 还在维护吗?

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