Privacy Policy
Last updated: 2026-05-14 Service: ainote (ainote.dev, app.ainote.dev, api.ainote.dev) Operator: Dcode Labs (Seunghan Kim)
1. 어떤 데이터를 수집하는가
사용자 계정
- 이메일 주소 (가입 시)
- 비밀번호 hash (bcrypt — 평문 비밀번호 저장 안 함)
- (선택) 표시 이름
사용자 컨텐츠
- 태스크 (
tasks), dev-docs, 핸드오프, vault 파일 — 사용자가 직접 작성한 모든 내용 - 위 항목의 메타데이터 (created_at, updated_at, category, position 등)
인증·세션
- MCP API keys (해시 저장 — 평문은 발급 직후 한 번만 노출)
- JWT 토큰 (RFC 8628 device flow 시), 발급 일시 + 만료 일시
- OAuth Apple / Google ID 토큰 (SSO 사용 시)
- 세션 IP / User-Agent (보안 감사 목적, 30일 후 자동 삭제)
외부 통합 데이터
- GitHub installation ID (vault 기능 사용 시)
- Apple / Google federated identity (SSO 사용 시)
- Telegram chat ID (Telegram bot 연동 시)
자동 수집 (서버 로그)
- API 호출 메서드 / 응답 코드 / 응답 시간 — PII 없는 통계 목적
- ⚠️ 태스크 내용 / dev-doc 본문 / 핸드오프 텍스트 등 user content 는 로그에 기록하지 않음
2. 데이터 위치
- Primary database: PostgreSQL (Render, Singapore region)
- Vault git repositories: 사용자 본인 소유 GitHub 계정 (private repo). ainote 는 indexing 만, git traffic 은 proxy 안 함
- Encrypted client-side data:
mcpcategory (mcpServers + API keys) 는 클라이언트 디바이스에서 age 로 암호화 후 업로드. 서버는 평문 모름 - OS Keychain: 디바이스별 age identity / MCP key 는 사용자 본인 디바이스의 macOS Keychain / libsecret / Credential Manager
3. 데이터 사용
ainote 는 사용자 데이터를:
✅ 사용: 사용자가 명시적으로 호출한 도구의 결과 반환, 멀티-디바이스 동기화, 사용자 본인 식별, 보안 감사
❌ 사용 안 함:
- 광고 / 추적 / 프로필링 — 0
- 제3자 판매 — 0
- AI 모델 학습 / 분석 — 0 (사용자가 자체적으로 호출한 OpenAI/Anthropic API 는 별개)
- 마케팅 이메일 — 0 (서비스 필수 알림만)
4. 제3자 공유
| 제3자 | 무엇을 | 왜 |
|---|---|---|
| Render (호스팅) | 모든 데이터 (저장 위치) | 인프라 제공자, Singapore 데이터센터 |
| GitHub (vault) | 사용자가 vault 사용 시, 본인 소유 repo 에만 | 사용자 본인의 GitHub repo, ainote 가 push/pull 만 매개 |
| Apple / Google (SSO) | 인증 토큰만 | SSO 로그인 사용자 한정 |
| Anthropic / OpenAI / Telegram | 사용자가 직접 호출 시에만 | 사용자가 본인 API key 로 호출, ainote 는 매개 안 함 |
| Sentry (예정, Phase 5) | 에러 로그 (PII 제거 후) | 운영 안정성 |
5. 사용자 권리
데이터 접근 / 이동
GET /api/users/me/export(계획 — Phase 3) — 모든 사용자 데이터 JSON dumppull_dev_docs도구로 dev-doc 즉시 로컬 복원vault_clone으로 vault git repo URL 발급, 본인 GitHub 에서 직접 clone
데이터 삭제
- 모든 destructive 도구 사용자 임의 호출 가능 (
delete_task,delete_dev_doc등) - 30일 trash window 후 영구 삭제 (
TaskCleanupJob매일 2am KST) - 계정 전체 삭제: app.ainote.dev → Settings → Delete account → 7일 grace period 후 영구
데이터 수정
- 모든 update 도구 (
update_task,update_dev_doc등) - 잘못된 핸드오프: 7일 자동 purge 또는 같은 (project, topic, date, time) 으로 overwrite
GDPR (EU 사용자)
- Right to access — 위 export
- Right to rectification — 위 수정
- Right to erasure ("right to be forgotten") — 위 삭제
- Right to data portability — JSON export + vault git clone
- Right to object — 마케팅·프로필링 없음 (애초에 사용 안 함)
- 처리 근거: Article 6(1)(b) "necessary for the performance of a contract"
- Data Protection Officer (DPO): 직접 운영 — Contact
6. 쿠키 / 추적
- app.ainote.dev (웹 앱): session cookie 만 (필수). 분석 / 광고 쿠키 0
- ainote.dev (랜딩 + 문서): 쿠키 0
- api.ainote.dev (MCP/OpenAPI API): 쿠키 0, header-based auth 만
7. 보안
- HTTPS 강제 (Render 가 발급한 Let's Encrypt 인증서)
- 비밀번호 bcrypt (cost factor 12+)
- MCP key 발급 시 평문은 단 한 번만 노출, 이후 hash 저장
- E2E age 암호화 (
mcpcategory) - 보안 취약점 보고: /legal/security
8. 미성년자
ainote 는 만 13세 미만 사용자를 대상으로 하지 않는다. 만 13세 미만임이 확인되면 즉시 계정 삭제 + 데이터 삭제.
9. 정책 변경
본 정책 변경 시 Last updated 일자가 갱신된다. 중대한 변경 (데이터 사용 범위 확대 등) 시 활성 사용자에게 in-app 알림. 30일 grace period.
10. Contact
- GitHub Issues: https://github.com/seunghan91/ainote/issues
- Telegram / Kakao open chat: https://seunghan.xyz (블로그의 Contact 섹션에서 채널 확인)
- Security disclosure: /legal/security
본 정책은 한국어 원본을 기준으로 한다. 영문 번역과 충돌 시 한국어 본문 우선.