Privacy Policy
Last updated: 2026-06-10 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 연동 시)
- Google Calendar 연동 데이터 (사용자가 설정에서 직접 활성화한 경우에만):
- 캘린더 목록 (이름, 시간대, 색상) — 동기화 대상 캘린더 선택 UI 표시 목적
- 일정 정보 (제목, 설명, 시간, 장소, 참석자) — 앱 내 일정 표시 + 할 일 ↔ 일정 동기화 목적
- Google OAuth access / refresh token (서버 저장, 연동 해제 시 즉시 삭제)
- 요청 스코프:
calendar.calendarlist.readonly(캘린더 목록 읽기 전용) +calendar.events(일정 조회·생성·수정·삭제)
- Google Drive 백업 (Android 앱에서 사용자가 직접 활성화한 경우에만):
- 요청 스코프:
drive.file— ainote 가 직접 생성한 백업 파일에만 접근, 다른 Drive 파일은 읽기 불가
- 요청 스코프:
자동 수집 (서버 로그)
- 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 (서비스 필수 알림만)
Google 사용자 데이터 — Limited Use 고지
ainote's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
- Google Calendar / Drive 데이터는 위에 명시된 사용자-노출 기능(일정 표시, 할 일 동기화, 백업) 제공에만 사용
- 광고 목적 사용 금지, 제3자 판매·이전 금지
- 사람의 열람 금지 (사용자의 명시적 동의, 보안 점검, 법적 의무 등 정책상 허용된 예외 제외)
- AI/ML 모델 학습에 사용하지 않음
4. 제3자 공유
| 제3자 | 무엇을 | 왜 |
|---|---|---|
| Render (호스팅) | 모든 데이터 (저장 위치) | 인프라 제공자, Singapore 데이터센터 |
| GitHub (vault) | 사용자가 vault 사용 시, 본인 소유 repo 에만 | 사용자 본인의 GitHub repo, ainote 가 push/pull 만 매개 |
| Apple / Google (SSO) | 인증 토큰만 | SSO 로그인 사용자 한정 |
| Google Calendar API | 일정 데이터 (양방향 동기화) | 캘린더 연동을 직접 활성화한 사용자 한정 |
| 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
본 정책은 한국어 원본을 기준으로 한다. 영문 번역과 충돌 시 한국어 본문 우선.