就像Git,为秘密而建.
安装
• 妇女
快速启动
• 妇女
文档
• 妇女
更改日志
• 妇女
问题
Capy是一个秘密的工具链,有git风格的原始人——分支,同步,部署,撤销——在你的机器上加密端到端,对于人类和特工来说完全可以撤销. .env 成为版本状态 您的团队可以承诺, 滚回, 离船而不旋转一个键.
→ 将 Capy 与 Doppler 、 Infisical 、 AWS 保密管理器和 SOPS 相比较。 。 。 .
安装
其最基本形式的Capy只是一种CLI:没有很长的签注,帐号设置,或SDK导入.
npm install -g @capysc/cli
或与文云:
bun add -g @capysc/cli
或与自来士:
brew install capysc/tap/capy
快速启动
capy # sync secrets
capy edit # inspect & edit secrets in a TUI
capy invite [email protected] # add a teammate
capy kick [email protected] # remove a teammate
capy run -- npm run dev # run with decrypted secrets
capy deploy # ship to prod
这就是整个循环。 编辑一个秘密, 运行 capy 这一切只是工作.
演示
https://github.com/user-attachments/assets/60800e68-6101-4f1a-9176-6b2d58a6fd61 (中文(简体) )
为什么使用 Capy
- 我们拿着密码 你拿着钥匙 传票对我们没什么好处. 我们的服务存储会员记录和密码文本。 我们不持有你的主钥匙, 你的工程钥匙, 或任何简单的文字。 妥协我们的服务 或您的本地价值 没有任何用处.
- 撤销是密码学,不是数据库旗.
capy kick让被踢的用户本地化key.enc密码学上的惰性。 其余成员继续使用相同的密钥;没有旋转级联. - 你的密码是香草
process.env。 。 。 . 没有 SDK 导入, 没有守护进程运行, 没有仪表板维护.capy run将解密的值注入到节点,Python,Go,Ruby,或者任何读取env vars的过程. - 匹配的分会. Capy和它的分枝一起运行 并致力于
keep.lock显出. 每一根树枝被钉在卡比树枝上 所以秘密用你的密码传送. - 来源:CLI. AGPL-3.0. 代码可审计于 GitHub. ()AGPL对于你的团队来说意味着什么.(中文(简体) )
如何运作
Capy是一个零信任的秘密管理者: 我们从加密开始 .env 在你的机器上。 加密的秘密然后同步到我们的服务, 你的团队破解他们自己的机器。 我们从来没有看到 简单的文字在任何时间.
解密是一个双方操作: 我们的服务剥取您的外包装 key.enc你的机器会剥去内脏 双方都没有钥匙.
完整的威胁模式见 文件.capy.sc/内部/零信任关于密码构造,见 文件.capy.sc/内部/计算机。 。 。 .
源代码加密
大多数秘密管理者在服务器上休息时加密. Caby是少数在源代码加密的人之一. 你的每一个值 .env 这是你机器上的密码 之前,任何它过线, 使Capy 一个独特的零信任,端到端 秘密控制系统 为人类和特工.
每个值都是 capy:{resourceId}:{ciphertext} 片段只有你的团队可以解密,但只有足够多的字符包围了密码文本,你才能识别项目. Plaintext 只存在于进程内存中, 而 capy run 你的应用程序已经诞生了.
编辑机密
改变价值的两种方式。 两者最终都会被加密并同步——选择任何合适的时机.
编辑 .env 到位
打开 .env 在编辑器中覆盖一个 capy:... 带有新平话值的片段。 下一个 capy 同步重加密任何更改和更新 keep.lock。 。 。 .
当你已经在你的编辑器, 粘贴一个新的键 从仪表盘, 或脚本块变化.
通过 TUI 编辑(capy edit(中文(简体) )
capy edit 打开当前分支上每个变量的交互式表格,其中可看到同步状态、漂移和冲突。 显示一个值 r编辑 e导航 ↑↓退出 q。 。 。 .
当你想看到整个分支的漂移时,在不接触文件的情况下编辑一个变量,或者在部署前检查什么是同步的.
图标
| 命令 | 说明 |
|---|---|
capy | 同步机密 。 初始化为首跑 . |
capy run -- <cmd> | 运行一个被输入解密的指令. |
capy edit | 在互动的TUI中检查并编辑机密. |
capy status | 显示本地、被绑和远程之间的漂移. |
capy push | 推动本地变化. 运行相同的同步 capy,所以任何差异先解决. |
capy lock | 锁定本地密钥, 因此下次需要密码句 . |
capy deploy | 生成部署符并走过平台设置. |
capy connect <provider> | 从供应商处取出证书 .env。 。 。 . |
capy rotate [var] | 旋转管理下的证书 . |
capy invite <email> | 邀请一个队友. |
capy redeem <code> | 重装一个邀请码. |
capy transport | 把你的账户转到另一台机器. |
capy kick <email> | 取出队友. |
capy users | 互动成员管理. |
capy projects | 在 Org 及其分支列出项目 . |
capy secrets | 列出在 org 中按值组合的每个秘密名称( 从未显示值) . |
capy org | 列出或切换组织. |
capy branch | 列出或切换分行. |
capy checkout <branch> | 切换分枝. -b 创建. |
capy grant-branch | 允许进入受保护的分支. |
capy revoke-branch | 撤销分支访问. |
capy recover | 从恢复短语恢复访问权限 . |
capy end-recover | 结束复原会议. |
capy decrypt | 解密机密下线(仅所有者). |
capy use <profile> | 在配置文件间切换 . |
capy profile | 管理 CLI 配置文件 . |
capy byoc [url] | 连接到自办的 Capy 实例 . |
capy info | 显示当前会话信息 . |
capy agents | 告诉此repo中的AI编码代理如何使用 Capy(writes AGENTS.md / CLAUDE.md). |
capy logout | 清除本地会话 . |
capy cleanup | 移除 git 钩和本地状态 . |
同步中
capy 是本地间三向的 .env,最后一个被钉住的快照英寸 keep.lock和最新的服务。 冲突打开了交互解析器。 见 文件.capy.sc/使用/同步-机密。 。 。 .
冲突和代理人
自您上次看到后, 没有命令覆盖一个值 。 从文件夹中写入的每个命令( E)capy edit, (中文(简体) ), add, (中文(简体) ), remove, (中文(简体) ), connect, (中文(简体) ), rotate, (中文(简体) ), push, (中文(简体) ), deploy, (中文(简体) ), org,以及 checkout 运行平原 capy 先说 它会重复到您的文件夹和Caby就每个变量达成一致为止. 如果您取消了, 则什么都不写 。 只有这样,命令才会在Capy最新版本上应用自己的更改. 每一个差异都会阻断写法,包括那些与您正在更改的变量无关的写法. 例外: capy checkout -b, (中文(简体) ), capy decrypt (和从种子短语中恢复时的取出),新项目,和org系统商店.
每差一分,你选择四个: pinned (文件夹的 keep.lock, (中文(简体) ), local (你的电话) .env, (中文(简体) ), remote (卡比的最新消息),或 delete。 。 。 .
关闭终端( O) (--non-tty, (中文(简体) ), --json没有人可以问。 命令不写, 退出 3个,并用 "code": "SECRETS_CONFLICT"页:1 conflict_id,每个差数一行(被绑定值、局部值和远程值的名称、项目、分支和指纹,绝不是值)。 问此人,然后重运行同一命令一次 --resolve NAME=pinned|local|remote|delete 每行和 --conflict <conflict_id>。一个 Dokploy 平台值作为 NAME@TARGET=local|remote如果有东西移动到中间,命令会再次以3号出口 SECRETS_CONFLICT_STALE 和新鲜的行。 没有一个全解,一个给一个对行没有价值的源命名的答案被拒绝(只有 delete 页:1.
capy push --non-tty # exit 3: SECRETS_CONFLICT, conflict_id c_...
capy push --non-tty --resolve API_KEY=local --conflict c_9f2e41a07b3d
这个 capy secrets 编辑屏幕和 capy secrets set 对显示的值进行同样的检查。 上传也携带着他们从开始的版本,服务器拒绝一个被打乱的版本. CLI再次同步并重复一次.
运行您的应用程序
capy run -- <cmd> 解密 .env 在内存中生成您的命令,并将设定的值作为环境变量。 在任何读取env vars的运行时间工作. 见 使用/运行您的应用程序。 。 。 .
多克编曲 : capy run -- docker compose up 工作没有改变 env_file: .env。Capy pass 构成一个额外的覆盖,只列出已解密的变量 名称 改为: .env将真实值输入这些容器。 没有写到磁盘上.
部署
capy deploy 走过Vercel, Cloudflare, Docker, Fly, Railway, Render, Heroku, GitHub Actions, 以及 AWS Lambda. 见 文件.capy.sc/使用/部署。 。 。 .
capy deploy 运行平原 capy 首先,只有船才重视你的文件夹,卡比同意 对多克普洛伊来说,如果一个服务的活值从上次交货后在卡比以外被改变,你选择 local (交付卡比值)或 remote (保持平台值并跳出). 批量部署从 capy secrets 只提供你选择的变量.
团队
capy invite <email> 增加一名队友; capy kick <email> 要删除一个。 邀请码出局;踢出为O(1),没有键旋转. 见 文件.capy.sc/使用/团队/邀请。 。 。 .
分支
Capy是一款与git同时运行的秘密的版本控制系统. 你犯密码,你犯密 双方都有支系,他们俩都有一个忠实的表率.git/, (中文(简体) ), keep.lock),并拉出并推向遥控器. 区别在于:git的远程看到了你的代码,Capy的远程只看到了密码文本.
A 类 Capy 分支 和它自己的值和访问列表平行的状态。 切换会改变哪些值 capy run 注射剂 作为实例,你可能保留一个 development 切入时向每个成员开放的分行 a production 分支到仅管理员.
由于Capy树枝独立于git树枝,所以每个git树枝的花针通过承诺的Capy树枝被分出 keep.lock 文档。 分支名称由您选择, 就像在git中: 一个共同的模式是共享一个共享的 dev 分支, 跨越特征工作和 pinning release-* 将树枝划入单独的中转或生产分支.
关于完整的国家模式和保护部门角色执法,见 文件.capy.sc/使用/branches/概览。 。 。 .
财务问题
什么是零信任吗?
零信任是一个密码属性:一个完全损害我们服务的攻击者仍然无法解密你的秘密,因为每一个解密都需要一个只活在你的机器上的关键份额. Caby不是要你信任我们 建筑结构确保了 仅仅损害我们的服务只能产生密码.
如果我失去了我的种子短语呢?
如果你是Org的主人,你失去了种子短语 没有其他设备持有 key.enc,你失去 进入该类。 Capy无济于事;通过设计是零信任的,所以恢复需要我们持有一些我们故意没有的东西. 在显示时将种子短语倒放(密码管理器,保险箱中的物理音符).
我怎么从普通的多滕夫移民?
运行 capy 在一个已经拥有 .env在第一跑步,Capy治疗你 .env 作为权威,加密每个值,上传密码文本,并重写 .env 与 capy:... 片断. 原作的备份 .env 写入 .env.pre-capy.old (恶作剧).
离线工作吗?
第一次同步需要网络认证和密钥共解密,但之后, capy run 对本地缓存的离线工作 ~/.capy/。你可以在飞机上发展;你只是无法接受其他队友所推动的改变.
"快踢"传播多快?
马上 在被踢出用户的下一个请求中,服务拒绝剥去外包装 key.enc 在磁盘上变成加密的惰性。 主密钥从不旋转,因为剩下的成员可以继续使用.
这是否符合SOC 2/GDPR的要求?
SOC 2的审计正在进行中。 符合GDPR. 信任态势和持续报告 信任. capy.sc (中文(简体) )。 。 。 .
Capy要多少钱?
个人和小团队免费. 为需要更高配额、更多项目或更多成员的猎人付费计划.
它支持SSO吗?
对 配置您的身份提供者( Okta, Azure AD, Google Workspace等) 在创建您的组织时, 您的团队通过与您的堆栈其它部分相同的提供者进行认证 .
我能自负吗?
目前没有 服务部分已关闭。 如果自我接待对你的服从姿态有影响,请联系.
如果Capy.sc掉下来呢?
capy run 继续从本地缓存工作, 这样运行的应用程序不会被打破。 新的同步暂停直到服务恢复 .
在中情局有用吗?
对. capy deploy 生成 SECRETS_BLOB 财务报告和审定财务报表 PROJECT_KEY 设置为 CI Env vars; capy run 在你的建设/测试步骤中,其余部分. capy deploy --yes 在 CI 中退出 3 , 而不是继续处理, 如果文件夹和 Capy 对任何变量有差异; 见 冲突和代理人。参见 GitHub 动作指南 文件.capy.sc/使用/部署/github-actions。 。 。 .
供应链
拥有5个运行时间依存的舰只. 每个都是CLI中一个有负载的一款;没有为方便或省去几行代码而列入. 一个小的依赖足迹使供应链攻击的表面变得紧凑.
| 依赖性 | 目的 | 状态 |
|---|---|---|
commander | CLI 参数解析 | 有已知弱点 |
dotenv | .env 文件解析 | 有已知弱点 |
inquirer | 交互式提示 | 有已知弱点 |
open | OAuth 浏览器启动 | 有已知弱点 |
proper-lockfile | 原子文件锁定 | 有已知弱点 |
现场审计状况和完整的中转分解树: github.com/capysc/capy-cli/网络/依赖性。 。 。 .
依赖破坏 将依赖关系保持当前- 见 .github/dependabot.yml它打开每周公关 npm 财务报告和审定财务报表 github-actions,其中非依赖性归为每个生态系统的单一公分率.
警卫
不要公开GitHub问题或讨论安全漏洞. 这些渠道是公开的.
队长很重视安全问题 如果你发现弱点,电子邮件 安全性@ capy.sc 以描述和理想的方式 复制它。 我们会尽快回复的.
这一地址仅针对未披露的脆弱性。 在公开披露之前,请向我们报告安全问题.
捐款
您可以叉出这个 repo 并创建牵引请求 :
github.com/capysc/capy-cli (英语) - 说吧 错误 财务报告和审定财务报表 讨论情况
从远程代理发布
仅从已核实的承诺中发布 npm 释放 origin/main,在
释放公关已经合并了 完全的CI已经通过了 构建
你应当从那座乐园中拣选一部分,那座乐园是茂密的 main 不变。 确认
产品在标记或发布前会与前一版相悖.
永远不要发布从一个特性或发布分支所建的焦油球.
维护者可以在另一个设备上批准 npm 认证而无需回调 到出版机。 使用 npm 11.9 或使用支持的节点版本更新 :
npm run release:login
npm run release:publish -- /absolute/path/to/reviewed-package.tgz
登录命令打印 npm 的浏览器链接并等待 npm 的注册
确认批准。 出版接受以前建立和审查的 npm pack
艺术品 如果 npm 要求另一个安全键批准, 帮助者打印它
连结,投票 注册, 和重复同样的文物一次。 它不会发射
本地浏览器或需要回调。 在5个之内完成核准
分钟; 过期的批准需要新的命令 .
添加 --json 用于新行限制状态和批准事件的指令.
只发布浏览器批准链接; 注册投票 URL 和一次性
符号不超出出版过程。 登录证书由 npm 保存
在其正常用户配置中.
许可证
AGPL-3.0 -仅限. 版权:"Centv Technology In.
见 自由主义 全文。 AGPL对于你的团队在实践中意味着什么——当它规定了义务,当它没有义务的时候——见: 文件.capy.sc/使用/许可证。 。 。 .
预建的二进制嵌入其依赖性;这些软件包的许可证和版权通知复制于 第三次议会提名(md)。 。 。 .