kterm

개인정보처리방침

시행일: 2026년 10월 11일

한국어English
한눈에 보기
  • 계정이 없습니다. 이름·이메일·전화번호·비밀번호를 받지 않습니다.
  • 터미널에 입력하고 출력되는 내용은 휴대폰과 컴퓨터 사이에서 종단간 암호화되며, 중계 서버에 저장되지 않습니다. 개발자도 볼 수 없습니다.
  • 중계 서버는 연결과 알림에 꼭 필요한 정보(기기 ID, 컴퓨터 ID, 구독 확인용 익명 ID, 푸시 토큰, 플랫폼, 마지막 접속 시각)만 보관합니다.
  • 광고와 분석 SDK가 없습니다. 사용자를 추적하지 않습니다.

alull(이하 "개발자")은 kterm 앱과 컴퓨터용 프로그램 kterm-host, 중계 서버(이하 통틀어 "서비스")를 운영하면서 「개인정보 보호법」 등 관련 법령을 지킵니다. 이 방침은 서비스가 어떤 정보를, 왜, 얼마나 오래 처리하는지 설명합니다.

1. 서비스의 구조

kterm은 세 부분으로 이루어집니다.

앱과 컴퓨터는 처음 연결할 때 QR 코드로 서로의 공개키를 교환하고, 이후 모든 터미널 데이터를 표준 암호(X25519, ChaCha20-Poly1305)로 종단간 암호화합니다. 암호화 키는 앱과 컴퓨터에만 있고 중계 서버에는 없습니다.

2. 처리하는 개인정보 항목과 목적

2-1. 중계 서버가 보관하는 정보

항목설명목적
기기 ID앱이 처음 실행될 때 만든 공개키에서 계산한 22자 무작위 식별자. 이름·전화번호와 연결되지 않습니다.연결 인증, 기기와 컴퓨터 연결
컴퓨터 IDkterm-host가 만든 공개키에서 계산한 식별자연결 인증, 기기와 컴퓨터 연결
기기와 컴퓨터의 연결 관계어떤 기기 ID가 어떤 컴퓨터 ID에 연결해 본 적이 있는지알림 대상 확인, 요금제 판정
구독 확인기기 ID로 RevenueCat에 Pro 구독 여부를 물어 잠깐(최대 10분) 기억합니다. 따로 저장하는 결제 정보는 없습니다(RevenueCat 사용자 ID = 기기 ID).세션 수 제한·알림 등 Pro 기능 적용
푸시 토큰Firebase Cloud Messaging이 발급하는 알림 주소. 알림을 허용한 경우에만 있습니다.입력 대기 알림 발송
플랫폼ios · android · macos · windows · linux 중 하나알림 발송 경로 선택, 호환성 대응
마지막 접속 시각기기·컴퓨터가 중계에 마지막으로 연결한 시각오래 쓰지 않은 기록 자동 삭제

중계 서버는 연결 중인 접속의 IP 주소를 연결 유지와 남용 방지(IP당 동시 연결 수 제한)에 메모리에서만 사용하고, 로그나 파일에 남기지 않습니다.

2-2. 수집하지 않는 정보

입력 대기 알림의 문구는 "세션이 입력을 기다려요"로 고정되어 있습니다. 세션 이름이나 에이전트의 질문 내용은 알림 서버로 보내지 않습니다.

2-3. 사용자의 기기와 컴퓨터에만 저장되는 정보

베타 테스터 신청

베타에 신청하면서 보내 주신 이메일 주소는 테스트 초대(Google Play 비공개 테스트·TestFlight)와 베타 안내에만 쓰고, 베타가 끝나면 지웁니다. 앱이 자동으로 수집하는 정보가 아니라 직접 보내 주신 메일입니다.

3. 개인정보의 보유 기간과 파기

4. 처리 위탁과 국외 이전

서비스 운영을 위해 아래 업체에 처리를 맡깁니다. 개인정보를 판매하거나 광고 목적으로 제3자에게 제공하지 않습니다.

받는 자맡기는 일이전 항목국가·시기·방법보유 기간
Oracle Cloud Infrastructure (Oracle Corporation)중계 서버 호스팅2-1의 항목대한민국(서울 리전) 서버에 저장 — 국외 이전 아님3장의 기간
RevenueCat, Inc.구독 결제 확인과 구독 상태 관리RevenueCat 앱 사용자 ID, 구매 내역(스토어 영수증), 기기 OS·앱 버전, 접속 IP미국 · 구매·구독 확인 시 · 앱과 서버에서 암호화 통신으로 전송구독 관리 목적 달성 시까지 또는 삭제 요청 시까지(법정 보존 기간 제외)
Google LLC (Firebase Cloud Messaging)푸시 알림 발송 (iPhone은 Apple Push Notification service를 거침)푸시 토큰, 고정 알림 문구미국 · 알림 허용 시와 알림 발송 시 · 암호화 통신으로 전송토큰이 무효화되거나 기기 삭제 시까지
Apple Inc. (App Store) · Google LLC (Google Play)앱 배포, 구독 결제·환불결제 정보는 사용자가 각 스토어에 직접 제공각 사의 개인정보처리방침에 따름각 사 방침에 따름

국외 이전을 원하지 않으면 푸시 알림을 끄고 구독을 하지 않으면 됩니다. 이 경우 알림과 Pro 기능을 쓸 수 없지만, 무료 기능은 그대로 쓸 수 있습니다.

5. 앱 권한과 사용 목적

모든 권한은 해당 기능을 처음 쓸 때 묻고, 거절해도 나머지 기능은 쓸 수 있습니다.

iPhone · iPad

권한사용 목적거절하면
카메라 (NSCameraUsageDescription)컴퓨터 화면의 페어링 QR 코드 스캔, 그리고 사용자가 직접 찍어 컴퓨터로 보내는 사진(선택). QR 영상은 기기 안에서만 처리합니다.페어링 링크를 붙여 넣어 연결
사진 (NSPhotoLibraryUsageDescription)사용자가 고른 사진·스크린샷을 내 컴퓨터로만 보냅니다(종단간 암호화, kterm 서버에 저장되지 않음).사용하지 않으면 첨부 기능만 빠집니다
마이크 (NSMicrophoneUsageDescription)음성 입력(Pro). 녹음 파일을 저장하지 않습니다.음성 입력만 꺼짐
음성 인식 (NSSpeechRecognitionUsageDescription)음성 입력을 글자로 바꿈. iOS 음성 인식을 사용하며, 설정에 따라 Apple이 음성을 처리할 수 있습니다. 바뀐 글자는 사용자가 확인한 뒤에만 컴퓨터로 보냅니다.음성 입력만 꺼짐
로컬 네트워크 (NSLocalNetworkUsageDescription)같은 와이파이에 있는 내 컴퓨터에 중계 없이 직접 연결항상 중계 서버를 거쳐 연결
알림세션이 입력을 기다릴 때 알림(Pro)알림 없음
Face ID / Touch ID (NSFaceIDUsageDescription)앱 잠금(선택). 생체 정보는 기기의 보안 영역에만 있고 앱이 읽을 수 없습니다.앱 잠금을 쓰지 않음

Android

설치 파일(APK)이 선언하는 권한 목록입니다. 앱이 직접 선언한 것과 라이브러리가 자동으로 추가한 것을 구분해 적습니다.

앱이 직접 선언한 권한

권한사용 목적
INTERNET컴퓨터·중계 서버와 통신
CAMERA페어링 QR 코드 스캔. 영상을 저장하거나 전송하지 않습니다.
RECORD_AUDIO음성 입력(Pro). 녹음 파일을 저장하지 않습니다.
POST_NOTIFICATIONS세션 입력 대기 알림(Pro)
USE_BIOMETRIC앱 잠금(선택)
USE_FINGERPRINT앱 잠금(선택) · 구형 Android 지문 인식(local_auth 라이브러리)

라이브러리가 자동으로 추가하는 권한 (앱이 직접 요청하지 않음)

권한추가하는 라이브러리 · 목적
ACCESS_NETWORK_STATEFirebase · 네트워크 연결 상태 확인
WAKE_LOCKFirebase Cloud Messaging · 알림 수신 처리
VIBRATE알림 진동(체험 종료 안내·입력 대기 알림)
DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSIONAndroidX 가 자동으로 넣는 앱 내부 전용 권한 — 다른 앱이 이 앱의 내부 신호를 받지 못하게 막는다
com.google.android.c2dm.permission.RECEIVEFirebase Cloud Messaging · 푸시 수신
com.android.vending.BILLINGGoogle Play 결제(RevenueCat) · 구독 구매

요청하지 않는 권한: 위치(ACCESS_FINE_LOCATION·ACCESS_COARSE_LOCATION)·연락처(READ_CONTACTS)·사진/미디어(READ_MEDIA_IMAGES)·저장소(READ_EXTERNAL_STORAGE)·전화·문자·캘린더 — 어느 것도 선언하지 않습니다. 광고 식별자 권한(AD_ID)도 없습니다.

6. 정보주체의 권리와 행사 방법

사용자는 언제든 자기 정보의 열람, 정정, 삭제, 처리정지를 요구할 수 있습니다.

7. 안전성 확보 조치

8. 아동의 개인정보

서비스는 만 14세 미만 아동을 대상으로 하지 않으며, 아동의 개인정보를 알면서 수집하지 않습니다. 만 14세 미만 아동의 정보가 처리된 사실을 알게 되면 지체 없이 삭제합니다.

9. 자동 수집 장치

앱과 이 웹사이트는 쿠키, 광고 식별자, 분석·추적 도구를 쓰지 않습니다.

10. 개인정보 보호책임자와 문의

개인정보 침해에 대한 상담이나 구제가 필요하면 아래 기관에 문의할 수 있습니다.

11. 방침의 변경

이 방침을 바꾸면 시행 7일 전(사용자에게 불리한 변경은 30일 전)에 이 페이지와 앱 안에서 알립니다.

시행일: 2026년 10월 11일

Privacy Policy

Effective date: October 11, 2026

At a glance
  • There are no accounts. We do not ask for your name, email, phone number or a password.
  • What you type and see in the terminal is end-to-end encrypted between your phone and your computer and is never stored on the relay. The developer cannot read it.
  • The relay keeps only what it needs to connect devices and send notifications: device ID, computer ID, an anonymous subscription ID, push token, platform and last-seen time.
  • No ads, no analytics SDKs, no tracking.

alull ("the developer") operates the kterm app, the kterm-host program for computers and the relay server (together, "the Service"). This policy explains what information the Service processes, why, and for how long.

1. How the Service works

On first pairing, the app and the computer exchange public keys through a QR code. All terminal data is then end-to-end encrypted with standard algorithms (X25519, ChaCha20-Poly1305). Keys exist only on the app and the computer, never on the relay.

2. Information we process and why

2-1. Stored by the relay

ItemDescriptionPurpose
Device IDA random 22-character identifier derived from a public key the app creates on first launch. Not linked to your name or phone number.Authentication, linking devices to computers
Computer IDAn identifier derived from a public key created by kterm-hostAuthentication, linking devices to computers
Device–computer linksWhich device IDs have connected to which computer IDsNotification eligibility, plan status
Subscription checkThe relay asks RevenueCat whether the device ID has Pro and remembers the answer briefly (up to 10 minutes). No payment data is stored (the RevenueCat user ID equals the device ID).Checking Pro subscription status
Plan statusWhether Pro is active and when it expires, as returned for that IDApplying Pro features
Push tokenA notification address issued by Firebase Cloud Messaging, only if you allow notificationsSending "waiting for input" notifications
PlatformOne of ios, android, macos, windows, linuxChoosing the notification route, compatibility
Last seenWhen the device or computer last connected to the relayDeleting records that are no longer used

The relay uses the IP address of an active connection to keep it open and to prevent abuse (limits on concurrent connections per IP) in memory only, and never writes them to logs or files.

2-2. What we do not collect

Notification text is fixed ("A session is waiting for input"). Session names and agent questions are never sent to the notification service.

2-3. Stored only on your devices

Beta sign-up

If you email us to join the beta, we use your email address only to send test invitations (Google Play closed testing, TestFlight) and beta notices, and delete it when the beta ends. This is information you send us yourself, not something the app collects.

3. Retention and deletion

4. Processors and international transfers

We never sell personal information or share it for advertising.

RecipientTaskDataLocation · timing · methodRetention
Oracle Cloud Infrastructure (Oracle Corporation)Relay hostingItems in 2-1Republic of Korea (Seoul region) — not an international transferAs in section 3
RevenueCat, Inc.Subscription verification and statusRevenueCat app user ID, purchase history (store receipts), OS and app version, IP addressUnited States · on purchase and status checks · encrypted connections from the app and serverUntil no longer needed or deletion is requested (except legally required records)
Google LLC (Firebase Cloud Messaging)Push notifications (via Apple Push Notification service on iPhone)Push token, fixed notification textUnited States · when notifications are enabled and sent · encrypted connectionsUntil the token is invalidated or the device is removed
Apple Inc. (App Store) · Google LLC (Google Play)Distribution, subscription billing and refundsPayment details you give the store directlyPer each company's privacy policyPer each company's policy

To avoid these transfers, keep notifications off and do not subscribe. Free features keep working.

5. App permissions

Each permission is requested the first time you use the related feature. Declining it only disables that feature.

iPhone · iPad

PermissionPurposeIf declined
Camera (NSCameraUsageDescription)Scanning the pairing QR code, and photos you take to send to your computer (optional). QR frames are processed on the device.Paste the pairing link instead
Photos (NSPhotoLibraryUsageDescription)Photos or screenshots you pick are sent only to your own computer (end-to-end encrypted, never stored on kterm servers).Only the attach feature is unavailable
Microphone (NSMicrophoneUsageDescription)Voice input (Pro). No recordings are kept.Voice input is unavailable
Speech recognition (NSSpeechRecognitionUsageDescription)Turning speech into text with iOS speech recognition; depending on settings Apple may process the audio. Text is sent to your computer only after you confirm it.Voice input is unavailable
Local network (NSLocalNetworkUsageDescription)Connecting directly to your computer on the same Wi-Fi without the relayConnections always go through the relay
NotificationsAlerts when a session is waiting for input (Pro)No alerts
Face ID / Touch ID (NSFaceIDUsageDescription)Optional app lock. Biometric data stays in the device's secure hardware; the app cannot read it.No app lock

Android

Permissions declared by the installed package, split between those the app declares and those added by libraries.

Declared by the app

PermissionPurpose
INTERNETTalking to your computer and the relay
CAMERAScanning the pairing QR code. Frames are not stored or sent.
RECORD_AUDIOVoice input (Pro). No recordings are kept.
POST_NOTIFICATIONS"Waiting for input" alerts (Pro)
USE_BIOMETRICOptional app lock
USE_FINGERPRINTOptional app lock · fingerprint on older Android (local_auth library)

Added automatically by libraries (not requested by the app itself)

PermissionLibrary · purpose
ACCESS_NETWORK_STATEFirebase · checking connectivity
WAKE_LOCKFirebase Cloud Messaging · handling incoming notifications
VIBRATENotification vibration (trial-ending reminder, waiting-for-input alerts)
DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSIONAdded automatically by AndroidX; app-internal only — prevents other apps from receiving this app's internal broadcasts
com.google.android.c2dm.permission.RECEIVEFirebase Cloud Messaging · receiving push messages
com.android.vending.BILLINGGoogle Play Billing (RevenueCat) · subscription purchases

Never requested: location (ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION), contacts (READ_CONTACTS), photos/media (READ_MEDIA_IMAGES), storage (READ_EXTERNAL_STORAGE), phone, SMS, calendar — none of these are declared. There is no advertising ID permission (AD_ID) either.

6. Your rights

You may ask to access, correct, delete or stop the processing of your information at any time.

7. Security

8. Children

The Service is not directed to children under 14 and we do not knowingly collect their information. If we learn that we have, we delete it without delay.

9. Cookies and tracking

Neither the app nor this website uses cookies, advertising identifiers or analytics/tracking tools.

10. Contact

Privacy officer: alull · alulltro@gmail.com

11. Changes

We will announce changes on this page and in the app at least 7 days before they take effect (30 days for changes that reduce your rights). If the Korean and English versions differ, the Korean version prevails.

Effective date: October 11, 2026