shipkey
v0.3.20
Published
<p align="center"> <a href="https://github.com/chekusu/shipkey/blob/main/README.md">English</a> | <strong>中文</strong> | <a href="https://github.com/chekusu/shipkey/blob/main/README.ja.md">日本語</a> </p>
Downloads
2,123
Readme
shipkey
一条命令扫描、备份和同步项目中所有 API 密钥。支持 1Password 和 Bitwarden。
为什么需要
- 换电脑时
.env文件丢失 - 密钥散落在 GitHub、Cloudflare 和本地文件中
- 新成员花数小时收集 API 密钥
- 没人记得 Token 需要哪些权限
shipkey 解决所有这些问题。
快速开始
# 安装
curl -fsSL https://shipkey.dev/install.sh | bash
# 扫描项目并启动设置向导
shipkey setup提示:
shipkey setup会自动打开一个网页配置向导,连接本地 API 服务,引导你逐步配置每个服务商的密钥并保存到密码管理器(1Password 或 Bitwarden)。
通过 npm 安装
也可以作为项目 devDependency 安装,锁定每个项目的版本:
# npm
npm install -D shipkey
# bun
bun add -d shipkey通过 npx / bunx 运行:
npx shipkey setup
bunx shipkey pull或者在 package.json 中添加脚本:
{
"scripts": {
"setup": "shipkey setup",
"keys:pull": "shipkey pull",
"keys:push": "shipkey push"
}
}工作流程
shipkey scan → 检测 .env 文件、工作流、wrangler 配置
生成 shipkey.json(含 providers 和权限推荐)
shipkey setup → 打开浏览器向导输入 API 密钥
保存到密码管理器 + 本地 .env.local/.dev.vars
shipkey pull → 从密码管理器恢复所有密钥到本地文件
新电脑数秒就绪
shipkey sync → 推送密钥到 GitHub Actions、Cloudflare Workers
一条命令,所有平台支持的后端
| 后端 | CLI | 读取 | 写入 | 列表 |
|------|-----|------|------|------|
| 1Password | op | ✅ | ✅ | ✅ |
| Bitwarden | bw | ✅ | ✅ | ✅ |
在 shipkey.json 中设置后端:
{
"backend": "bitwarden"
}不指定时默认使用 "1password"(向后兼容)。
支持的 Provider
shipkey 会根据环境变量名自动识别 Provider,内置 40+ 个 Provider 及配置指引。
| 分类 | Provider | 环境变量模式 |
|------|----------|-------------|
| AI | OpenRouter | OPENROUTER_* |
| | OpenAI | OPENAI_* |
| | Anthropic | ANTHROPIC_*, CLAUDE_API_* |
| | Google AI | GEMINI_*, GOOGLE_AI_* |
| | Replicate | REPLICATE_* |
| | Hugging Face | HUGGINGFACE_*, HF_* |
| | fal.ai | FAL_* |
| | xAI | XAI_*, GROK_* |
| 支付 | Stripe | STRIPE_* |
| 认证 | Clerk | CLERK_* |
| | Auth0 | AUTH0_* |
| 社交 / OAuth | GitHub | GITHUB_* |
| | Google | GOOGLE_*, GCP_* |
| | Discord | DISCORD_* |
| | Slack | SLACK_* |
| | Reddit | REDDIT_* |
| | Product Hunt | PRODUCTHUNT_*, PH_* |
| 通信 | Agora | AGORA_* |
| | Twilio | TWILIO_* |
| | SendGrid | SENDGRID_* |
| | Resend | RESEND_* |
| 数据库 | Supabase | SUPABASE_* |
| | Turso | TURSO_* |
| | Upstash | UPSTASH_* |
| | Neon | NEON_* |
| | ClickHouse | CLICKHOUSE_* |
| | Redis | REDIS_* |
| | Database | DATABASE_*, DB_* |
| 开发平台 | Expo | EXPO_* |
| | Daytona | DAYTONA_* |
| 基础设施 | Cloudflare | CLOUDFLARE_*, R2_* |
| | AWS | AWS_*, EC2_* |
| | Vercel | VERCEL_* |
| | Fly | FLY_* |
| | npm | NPM_* |
| | Sentry | SENTRY_* |
| Web3 | Coinbase | COINBASE_* |
| | Alchemy | ALCHEMY_* |
| | WalletConnect | WALLETCONNECT_* |
| | Pimlico | PIMLICO_* |
| | Etherscan | ETHERSCAN_* |
| CMS | TinaCMS | TINA_* |
| | Notion | NOTION_* |
| 地图 | Mapbox | MAPBOX_* |
| | OpenWeather | OPENWEATHER_* |
| 分析 | Plausible | PLAUSIBLE_* |
| 表单 | Formspree | FORMSPREE_* |
| 安全 | Turnstile | TURNSTILE_* |
| 沙箱 | Sandbank | SANDBANK_*, SANDBOX_* |
未识别的变量会归入 General 分组。如需添加新 Provider,请 提交 issue。
命令
shipkey setup [dir]
启动浏览器交互式设置向导。
shipkey setup # 当前目录,prod 环境
shipkey setup -e dev # dev 环境
shipkey setup --port 3000 # 指定 API 端口
shipkey setup --no-open # 不自动打开浏览器向导提供:
- 每个服务商的分步指南(Cloudflare、AWS、Stripe 等)
- 根据项目代码自动推断的权限推荐
- 一键保存到 1Password 或 Bitwarden
- CLI 状态检查(op/bw、gh、wrangler),附安装指引
shipkey scan [dir]
扫描项目并生成 shipkey.json。
shipkey scan # 扫描并写入配置
shipkey scan --dry-run # 预览,不写入文件检测范围:
.env、.env.local、.env.example、.dev.vars、.envrc- GitHub Actions 工作流 secrets
- Wrangler bindings(KV、R2、D1、Queues、AI)
package.json依赖(AWS SDK、Supabase、Stripe 等)
自动推断每个服务商所需的权限。
shipkey push [dir]
将本地环境变量推送到密码管理器。
shipkey push # 推送 dev 环境
shipkey push -e prod # 推送 prod 环境
shipkey push --vault myteam # 自定义保险库shipkey pull [dir]
从密码管理器拉取密钥并生成本地 env 文件。
shipkey pull # 拉取 dev 环境
shipkey pull -e prod # 拉取 prod 环境
shipkey pull --no-envrc # 跳过 .envrc 生成
shipkey pull --no-dev-vars # 跳过 .dev.vars 生成生成文件:
.envrc— 含op://引用(1Password)或直接值(Bitwarden),配合 direnv 使用.dev.vars— 含解析后的值,用于 Cloudflare Workers
shipkey sync [target] [dir]
将密钥同步到外部平台。
shipkey sync # 同步所有目标
shipkey sync github # 仅 GitHub Actions
shipkey sync cloudflare # 仅 Cloudflare Workers支持的目标:
- GitHub Actions — 通过
gh secret set设置仓库 secrets - Cloudflare Workers — 通过
wrangler secret put设置密钥
shipkey list [dir]
列出密码管理器中存储的所有密钥。
shipkey list # 当前项目
shipkey list --all # 所有项目
shipkey list -e prod # 按环境过滤配置
shipkey.json 由 shipkey scan 自动生成,也可以手动编辑。
{
"project": "my-app",
"vault": "shipkey",
"backend": "1password",
"providers": {
"Cloudflare": {
"fields": ["CLOUDFLARE_API_TOKEN", "CLOUDFLARE_ACCOUNT_ID"]
},
"Stripe": {
"fields": ["STRIPE_SECRET_KEY"]
}
},
"targets": {
"github": {
"owner/repo": ["CLOUDFLARE_API_TOKEN", "STRIPE_SECRET_KEY"]
}
}
}存储结构
1Password
密钥以条目形式存储在保险库中,按 Section 组织:
op://{vault}/{provider}/{project}-{env}/{FIELD}示例:
op://shipkey/Cloudflare/my-app-prod/CLOUDFLARE_API_TOKEN
op://shipkey/Stripe/my-app-dev/STRIPE_SECRET_KEYBitwarden
密钥以安全笔记形式存储在文件夹中,使用自定义隐藏字段:
文件夹: {vault}
条目: {provider}(安全笔记)
字段: {project}-{env}.{FIELD}(隐藏类型)示例:
文件夹: shipkey
条目: Cloudflare
字段: my-app-prod.CLOUDFLARE_API_TOKEN = sk-xxx
条目: Stripe
字段: my-app-dev.STRIPE_SECRET_KEY = sk-xxx环境要求
- Bun 运行时
- 以下密码管理器 CLI 之一:
- 1Password CLI (
op)brew install --cask 1password-cli - Bitwarden CLI (
bw)npm install -g @bitwarden/cli
- 1Password CLI (
- GitHub CLI (
gh) — 用于同步到 GitHub Actions - Wrangler — 用于同步到 Cloudflare Workers
许可证
MIT
