
apm v11.2.0
누구나 사용할 수 있는 로컬 비밀번호 관리자
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 레지스트리 |
| 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 클라이언트와 호환
복구
| 요소 | 명령어 |
|---|---|
| 이메일 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은 pm setup 중에 CPU 코어와 RAM을 자동 감지하여 최적의 프로필을 추천합니다.
개발 현황 및 역사
(이 글은 소유자가 작성한 것입니다) 2026년 3월 30일 기준으로, 저는 현재 APM의 GUI를 작업하고 있습니다. 처음에는 CLI 애플리케이션으로 시작했습니다. 이슈 #38에서 모든 내용을 자세히 설명하고 있습니다. 전반적으로 저는 APM이 더 많은 사용자층에 도달하기를 바랍니다. GUI는 apm-gui 저장소에 별도로 유지하거나, 조직을 만들어 두 저장소를 모두 그곳으로 옮길 예정입니다.
저는 APM을 진정한 개인 프로젝트로 시작했습니다. 어느 저녁, 제 자신만의 비밀번호 관리자를 만들고 싶었을 때 시작되었습니다. 저는 TOTP용으로 zoho password를 사용하고 있었는데 지겨웠습니다. 작동하는 것이 믿을 수 없을 정도로 느렸고, 토큰에 평문 파일을 사용하고 있었는데 이는 안전하지 않습니다.
현재로서는 프로젝트를 포기하거나 은퇴시킬 계획이 없습니다. 오랫동안 계속 작동할 것입니다. 매일 더 나아지도록 노력하고 매일 사용합니다. 때때로 저장소가 비활성 상태일 수 있는데, 그때는 애플리케이션을 테스트하고 실험합니다.
릴리스 구조
| 계층 | 안정적? | 볼트 안전? | 목적 |
|---|---|---|---|
| Canary | ❌ | ❌ | 가장 빠른 기능 미리보기 — 볼트가 손상될 수 있음 |
| Alpha | ❌ | ✅ | 불안정한 기능, 볼트 무결성 유지 |
| Beta | ✅ | ✅ | 완전히 테스트된 기능, 신중한 롤아웃 |
| Stable | ✅ | ✅ | 프로덕션 준비 완료 릴리스 |
Canary 릴리스를 시도하기 전에 항상 볼트를 백업하세요. P.S. 일부 릴리스의 경우, 불필요한 계층을 만들지 않고 얼마나 빠르고 쉽게 출시할 수 있는지에 따라 일부 계층이 릴리스되지 않을 수 있습니다.
문서
전체 문서는 **aaravmaloo.github.io/apm**에서 확인할 수 있습니다.
기여하기
기여를 환영합니다. 가이드라인은 CONTRIBUTING.md를 참조하세요.
라이선스
GPL-3.0 License © Aarav Maloo