Prompts, code, transcripts, and tool details sent between a paired client and daemon are end-to-end encrypted. The relay processes routing and connection metadata. App telemetry and push services are separate third-party data paths.
Session content
Claude Code or Codex and your project files run on your computer. When Pairlet sends session content between the daemon and a paired client, the content is encrypted at the endpoints using the protocol described in the security model. The hosted relay forwards encrypted frames and is not designed to receive plaintext prompts, code, transcripts, private keys, or session keys.
Voice dictation
Voice input is optional and requires microphone permission. On iOS the default engine is Apple's system Speech framework; audio is handled by Apple as described in Apple's own privacy disclosures and never reaches Pairlet servers or any third-party AI provider. If you enable the alternative "Transcribe on the computer" engine, the recording is sent end-to-end encrypted to your own paired computer and transcribed there by locally installed whisper.cpp; the audio is discarded after transcription and no cloud transcription API is involved in either mode.
Voice memo to tasks
This optional, experimental feature (off by default, Settings > General) records a short memo on the phone and sends it end-to-end encrypted to your own paired computer, where it is transcribed by locally installed whisper.cpp. The transcript is then organised into to-do items by the command-line coding tool you have installed and authenticated on that computer (Claude Code or Codex), which contacts its own provider with your credentials, exactly as it does for a coding session; without such a tool the transcript is kept as is. The memo, its transcript and the to-do items are stored only on the phone and, while a job is running, on your computer; Pairlet servers never receive them. Nothing is executed automatically: a to-do reaches a coding session only after you review and confirm it. The app describes this data flow and asks for your consent before the first recording.
Your own coding agent
Prompts, files, and session content delivered to your computer are processed there by the coding agent CLI you installed and authenticated yourself (for example Claude Code or Codex). That CLI communicates with its model provider under your own account and that provider's terms. In this coding-session path, Pairlet does not integrate, call, or hold credentials for the coding agent's AI provider; it transports content between your paired client and your computer over the end-to-end encrypted channel described above. Optional website support is a separate service, described below.
Relay data and metadata
To authenticate devices and route traffic, the relay stores an account identifier derived from a daemon public key, daemon and device public keys, hashes of credentials and pairing tickets, timestamps, and revocation state. It can also observe source IP addresses, online timing, ciphertext size and timing, byte counts, and the account-to-device routing relationship. Operational logs include connection lifecycle, authentication results, and rate-limit events.
Data stored on your devices
The client and daemon store pairing credentials, public and private key material, preferences, and local session references needed to operate the product. Project content and coding-agent credentials remain under the control of the computer that runs the agent. Unpair or revoke a device when it is lost or no longer trusted.
Analytics and crash reporting
The distributed mobile apps integrate Firebase Analytics and Crashlytics. The app code emits enumerated usage and outcome events such as app launch, connection recovery, session opening, prompt completion, and approval decisions. It is designed not to include prompt text, directory paths, tool inputs, account identifiers, code, or transcript content. Crash reports can include technical diagnostic information. These requests go directly to Google services and do not pass through the Pairlet relay. Desktop GA4 analytics requires separate configuration; the official desktop package does not bundle a Measurement Protocol API secret.
Sentry diagnostics
Configured Pairlet clients, the computer daemon, and the hosted relay also send limited diagnostic errors, structured logs, and timing information directly to Sentry over HTTPS. These can include the component and version, operating environment, operation stage, error category, duration, sanitized stack frames, and random diagnostic or connection identifiers used to investigate a reported problem. Diagnostic records are designed to exclude prompts, conversation titles and text, file paths and contents, raw coding-agent output, account identifiers, IP address fields, credentials, pairing material, and encrypted message payloads. The relay reports connection-level diagnostics and does not decrypt coding sessions. Sentry's servers still receive the network information needed to accept an HTTPS request. Firebase Crashlytics remains the automatic crash reporter on mobile; Sentry currently handles the app's explicit diagnostic reports.
Sharing controls
In the app's Settings, "Share usage and diagnostics" controls that app's analytics and diagnostics. Turning it off stops new collection and clears pending reports where the platform supports this; it does not withdraw reports already received by a provider. A recent diagnostic ID can be copied from Settings when available and included in a problem report. The computer daemon has an independent setting: pairlet diagnostics --sharing off disables its diagnostic sharing, and pairlet diagnostics --sharing on enables it. The legacy cc-pocket-daemon command supports the same options. The app setting does not change the daemon setting or the hosted relay's operational diagnostics. Disabling optional telemetry does not disable the routing metadata or push services needed for those features.
Push notifications
On supported platforms, APNs or Firebase Cloud Messaging may process a device push token and notification-delivery metadata. Push payloads are designed to avoid prompt or code content. Opening the app retrieves session details through the encrypted Pairlet channel.
Website requests
This static website is hosted on a project-operated server in Hong Kong, with Cloudflare in front of the origin, and loads font files from Google Fonts. Its homepage also loads a QR-code utility from jsDelivr. Public smart support may load Cloudflare Turnstile for a short human-verification check; Cloudflare receives ordinary request and browser information needed to perform that check under its Turnstile Privacy Addendum. These providers receive ordinary web-request information such as IP address, browser headers, and requested resource. The site itself does not provide a Pairlet account or advertising profile.
Optional AI customer support
If you use public smart support from the website or App, the question, the safe App-environment fields shown in the interface, and the answer are processed by the project-operated support server, OpenClaw, and its configured model provider. This separate support path uses ordinary HTTPS and is not part of the phone-to-daemon end-to-end encrypted channel; Caddy terminates HTTPS on the project-operated relay host before forwarding the request to the isolated support host. No Pairlet account is required and the interface does not provide an account history. Operational support sessions are retained for up to 30 days: the maintenance threshold is 28 days, with a daily cleanup timer and scheduling buffer. Anonymous support messages and derived answers are not written to the shared knowledge-candidate queue. The abuse-control database stores HMAC-pseudonymous visitor identifiers, short-lived pass records, counters, and aggregate token use—not raw IP addresses, questions, App context, or answers—and removes short-lived records as quotas advance. Do not send API keys, access tokens, private source code, private keys, full configuration files, or complete private logs. The support agent is designed to reject requests for credentials and to inspect only the public Pairlet repository.
Data retention and deletion
The relay forwards encrypted session frames in transit and does not retain them as message history. Relay account and device records (public keys, credential hashes, revocation state) persist while a pairing exists; unpairing or revoking a device in the app invalidates its keys at any time, and operational connection logs are short-lived. Content on your phone is removed by deleting the app; your projects and coding-agent history live on your own computer under your control and are removed with the daemon's data directory. AI support sessions are retained for up to 30 days as described above. You can withdraw the in-app data-disclosure consent by unpairing your devices and deleting the app, which ends every data flow described in this notice. For deletion questions, open a GitHub issue.
Self-hosting
If you build or self-host Pairlet components, the operator of that deployment determines the relevant logging, retention, analytics configuration, and infrastructure access. Review and modify the source and deployment files to match your requirements.
Changes and questions
This notice may change as the product changes. The effective date above identifies the current version. For implementation questions, open a GitHub issue. Report security vulnerabilities privately through GitHub Security Advisories.