
新发布Aug 5, 2026
apm v11.2.0
一个面向所有人的本地密码管理器
APM 是一款用 Go 和 Rust 编写的快速、零知识 CLI 密码管理器。它将 **25+ 种结构化密钥类型** 存储在单个加密保险库中——从密码和 TOTP 验证码到 SSH 密钥、医疗记录、照片和二进制文件。本仓库发布两个二进制文件:`pm` 用于个人使用,`pm-team` 用于共享组织保险库。
为什么选择 APM?
- 快速且易于学习 —— 无需记忆命令或标志。APM 会提示你输入它所需的一切。对于追求极致速度的高级用户,也提供 CLI 标志。
- 零知识 —— 你的主密码永远不会被存储。使用 Argon2id 派生三个独立的 32 字节密钥。除你之外无人能解密你的保险库。
- 双重加密 —— 可选择 AES-256-GCM 或 XChaCha20-Poly1305。在 AEAD 认证之上通过 HMAC-SHA256 实现双层完整性校验。
- 便携 —— 一个保险库文件,一个二进制文件。随身携带你的保险库。
- 可选云同步 —— 同步到 Google Drive、GitHub 或 Dropbox。完全可选加入;使用 APM 无需账户。
- AI 就绪 —— 原生 MCP 服务器,配合作用域令牌,让 Claude、Cursor 或任何兼容 MCP 的代理都能安全访问你的保险库。
- 团队就绪 ——
pm-team中提供完整的 RBAC、部门、审批工作流和共享保险库。
快速开始
go build -o pm .
pm setup # initialize vault and choose security profile
pm unlock # start a session
pm add # add a secret (interactive)
pm get github # fuzzy search and retrieve
pm lock # end session
团队版:
cd team
go build -o pm-team .
密钥类型
APM 支持 25 种结构化密钥类型,具有经过验证的字段和类型特定的显示逻辑:
| # | 类型 | # | 类型 |
|---|---|---|---|
| 1 | 密码 | 14 | Docker Registry |
| 2 | TOTP | 15 | CI/CD Secret |
| 3 | 政府证件 | 16 | 安全笔记 |
| 4 | 医疗记录 | 17 | 恢复代码 |
| 5 | 旅行信息 | 18 | 证书 |
| 6 | 联系人 | 19 | 银行信息 |
| 7 | Wi-Fi | 20 | 文档 |
| 8 | API Key | 21 | 软件许可证 |
| 9 | Token | 22 | 法律合同 |
| 10 | SSH Key | 23 | 照片 |
| 11 | SSH Config | 24 | 音频 |
| 12 | 云凭证 | 25 | 视频 |
| 13 | Kubernetes |
功能
安全
- 零知识 Argon2id 密钥派生 —— 主密码永不存储
- 双重 AEAD 加密算法:AES-256-GCM 和 XChaCha20-Poly1305
- HMAC-SHA256 双层完整性校验
- 四种可调安全配置文件:
standard、hardened、paranoid、legacy - 每个密钥的信任评分(0–100),基于使用时长、访问情况和权限级别
- 防篡改审计日志,存储在保险库之外
保险库
- 单个加密保险库文件 —— 可在任何设备间移植
- 用于逻辑分隔的空间(类似文件夹)
- 模糊搜索,支持交互式浏览器和键盘导航
- 元数据检查器:创建日期、最后访问时间、访问次数、信任评分
TOTP
- 交互式列表中的实时倒计时器
- 持久化的自定义排序
- 直接复制:
pm totp github - 自动填充守护进程集成,用于自动注入 2FA 验证码
云同步
- Google Drive(OAuth2 PKCE)、GitHub(PAT)、Dropbox(OAuth2 PKCE)
- 端到端加密 —— 服务提供商永远看不到明文
.apmignore用于按提供商过滤条目- 冲突解决:覆盖、保留本地或取消
- 后台自动同步
会话
- 显式解锁/锁定,可配置过期时间和不活动超时
- 用于自动化和 AI 代理访问的委托临时会话
MCP 服务器
- 原生 Model Context Protocol 服务器
- 作用域权限令牌:
read、secrets、write、admin - 写操作的事务护栏:预览 → 批准 → 回执
- 适用于 Claude Desktop、Cursor、Windsurf 以及任何 MCP 客户端
恢复
| 因素 | 命令 |
|---|---|
| 邮件 OTP | pm auth email |
| 恢复密钥 | pm auth recover |
| 法定份额(Shamir) | pm auth quorum-setup |
| WebAuthn 通行密钥 | pm auth passkey register |
| 一次性恢复代码 | pm auth codes generate |
导入 / 导出
| 格式 | 导入 | 导出 |
|---|---|---|
| JSON | pm import json | pm export json |
| CSV | pm import csv | pm export csv |
| TXT | pm import txt | pm export txt |
策略引擎
name: corporate-standard
password_policy:
min_length: 14
require_uppercase: true
require_numbers: true
require_symbols: true
rotation_policy:
rotate_every_days: 90
notify_before_days: 14
pm policy load ./policies/
团队版(pm-team)
- 具有多个角色的 RBAC
- 具有隔离加密域的部门
- 敏感条目的审批工作流
- 用于多用户凭证共享的共享保险库
安全配置文件
| 配置文件 | Argon2 内存 | 迭代次数 | 并行度 | 使用场景 |
|---|---|---|---|---|
standard | 64 MB | 3 | 2 | 大多数机器 |
hardened | 256 MB | 5 | 4 | 工作站(≥8 GB RAM) |
paranoid | 512 MB | 6 | 4 | 服务器(≥16 GB RAM) |
legacy | PBKDF2 | 600,000 | 1 | 向后兼容 |
APM 会自动检测你的 CPU 核心数和 RAM,以在 pm setup 期间推荐最佳配置文件。
开发状态和历史
(此说明来自所有者) 截至 2026 年 3 月 30 日,我目前正在开发 APM 的 GUI。最初它只是一个 CLI 应用程序。Issue #38 详细解释了一切。总的来说,我希望 APM 能覆盖 更广泛的人群。我会将 GUI 单独放在 apm-gui 仓库中,或者创建一个组织并将两个仓库都移到那里。
我最初将 APM 作为一个真正的个人项目。它始于一个随机的夜晚,当时我想创建自己的密码管理器。我厌倦了 zoho password,因为我用它来管理 TOTP。它运行起来极其缓慢,而且我用明文文件存储我的令牌,这并不安全。
截至目前,我不计划放弃/退役这个项目。它将在很长一段时间内保持可用。我每天都尝试让它变得更好,并且每天都在使用它。有时,仓库可能不活跃,那是我在测试和试验应用程序的时候。
发布结构
| 层级 | 稳定? | 保险库安全? | 用途 |
|---|---|---|---|
| Canary | ❌ | ❌ | 最早的功能预览 —— 可能损坏保险库 |
| Alpha | ❌ | ✅ | 不稳定功能,保险库完整性得到保留 |
| Beta | ✅ | ✅ | 经过充分测试的功能,谨慎推出 |
| Stable | ✅ | ✅ | 生产就绪版本 |
在尝试 Canary 版本之前,请务必备份你的保险库。 附注:对于某些版本,某些层级可能不会发布,这取决于它们发布的速度和难易程度,以避免创建超出必要数量的层级。
文档
完整文档请访问 aaravmaloo.github.io/apm
贡献
欢迎贡献。请参阅 CONTRIBUTING.md 了解指南。
许可证
GPL-3.0 License © Aarav Maloo