
新发布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 无需账号。
- 可扩展——基于清单的插件系统,拥有 100 多项细粒度权限、生命周期钩子和插件市场。
- 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 注册表 |
| 2 | TOTP | 15 | CI/CD 机密 |
| 3 | 政府证件 | 16 | 安全笔记 |
| 4 | 医疗记录 | 17 | 恢复代码 |
| 5 | 旅行信息 | 18 | 证书 |
| 6 | 联系人 | 19 | 银行信息 |
| 7 | Wi-Fi | 20 | 文档 |
| 8 | API 密钥 | 21 | 软件许可证 |
| 9 | 令牌 | 22 | 法律合同 |
| 10 | SSH 密钥 | 23 | 照片 |
| 11 | SSH 配置 | 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 客户端
插件
- 基于清单的插件系统
- 100 多项细粒度权限,涵盖保险库、网络、系统、加密、UI 和云
- 用于保险库生命周期事件的钩子系统
- 通过云服务提供商提供插件市场
恢复
| 方式 | 命令 |
|---|---|
| 邮箱 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 内存) |
paranoid | 512 MB | 6 | 4 | 服务器(≥16 GB 内存) |
legacy | PBKDF2 | 600,000 | 1 | 向后兼容 |
APM 会自动检测你的 CPU 核心数和内存,以便在 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 许可证 © Aarav Maloo