Privacy Policy
Your privacy is our priority
Last Updated: August 2026
Overview
Happier is committed to protecting your privacy. This policy explains how we handle your data with our zero-knowledge encryption architecture.
It covers Happier Cloud — the hosted service we run. If you self-host a Happier server, the person or organisation running it holds your data and sets its own policy, including whether content is stored encrypted at all. Everything below describes what we can and cannot see on the service we operate.
What We Collect
Encrypted Data
- Messages and Code: All your agent conversations and code snippets are end-to-end encrypted on your device before transmission. We store this encrypted data but have no ability to decrypt or read it.
- Encryption Keys: When you pair devices, encryption keys are transmitted between your devices in encrypted form. We cannot access or decrypt these keys.
Metadata (Not Encrypted)
- Message IDs: Unique identifiers for message ordering and synchronization
- Timestamps: When messages were created and synced
- Device IDs: Anonymous identifiers for device pairing
- Session IDs: Identifiers for your coding-agent sessions
- Push Notification Tokens: Device tokens for sending push notifications via Expo's push notification service
Analytics (PostHog)
We use PostHog for product analytics. It runs in PostHog's EU region (Frankfurt). One PostHog project covers both the app and our websites; every event carries a property naming which of the two it came from, so they can be told apart without ever sharing an identity between them.
In the app
- Anonymous Events: We collect basic app usage events to improve the app experience
- Privacy by Design: All analytics events use an anonymized ID derived from a secret key - we cannot match this back to any user or account
- No Content Tracking: We only track basic app usage events, never any message content, code, or personal information
- Opt-Out Available: You can disable analytics collection at any time in the app settings
On happier.dev, docs.happier.dev and guides.happier.dev
- No cookies and no visitor ID: The websites run PostHog in cookieless mode. We set no cookie, store no identifier, and build no profile that follows you between visits or between pages.
- Global Privacy Control is honoured: If your browser sends the GPC signal — Brave and DuckDuckGo do by default — analytics never start at all.
- First-party only: Analytics requests go to a path on the site you are already reading and are forwarded to PostHog from our own server. The pages make no third-party requests.
- No IP addresses: Client IP addresses are discarded on arrival. A coarse country and region derived from the address is kept; the address itself is never stored.
- What is recorded: which pages were viewed, in which language, and which links and buttons were clicked. Never the contents of a form, and never anything you type.
- Opt-Out Available: There is a switch in the footer of every page. The record of that choice is the only thing these sites ever write to your device.
Subscription Management (Revenue Cat)
- Account ID: Revenue Cat uses your account ID to manage subscriptions and enable premium features
- Backend Integration: This ID allows us to provide additional features from our backend while maintaining end-to-end encryption for your content
- Data Separation: Purchase analytics sent to PostHog use the anonymized ID instead - we cannot match Revenue Cat data with PostHog analytics
What We Don't Collect
- Your actual code or conversation content (we can't decrypt it)
- Personal information beyond what you voluntarily include in encrypted messages
- Device information beyond anonymous IDs
- Location data
How We Use Data
Encrypted Data
- Stored on our servers solely for synchronization between your devices
- Transmitted to your paired devices when requested
- Retained until you delete it through the app
Metadata
- Message IDs and timestamps are used to maintain proper message ordering
- Device IDs enable secure pairing between your devices
- Session IDs track your coding-agent sessions for synchronization
- Push notification tokens are stored to enable notifications through Expo's service
Push Notifications
Notification content is composed on your device, never on our backend. Our backend does send one kind of push, and it is deliberately empty of content:
- The text stays on your device. A notification's title and body are built locally from data your device has already decrypted. We never see them.
- The one push we send is a badge refresh. When your attention count changes, our backend asks Expo to update the number on your app icon. That message carries the count and nothing else — no title, no body, no session or message content.
- We store your device push token so delivery can reach you. Expo and the operating-system push services (Apple, Google) see that token and the badge count above, as any push service must.
Data Security
- End-to-End Encryption: Messages are encrypted on your device under a per-session key (32 random bytes, AES-256-GCM, a fresh nonce per message). That session key is sealed to your account's own key with an ephemeral X25519 exchange, and account-scoped data is sealed with XSalsa20-Poly1305. We claim no certification and no external audit; the implementation is in the open for you to read.
- Zero-Knowledge: We cannot decrypt your data even if compelled
- Secure Key Exchange: Encryption keys are transmitted between your devices only in encrypted form that we cannot access
- Open Source: Our encryption implementation is publicly auditable
- No Backdoors: The architecture makes it impossible for us to access your content
Data Retention
- Encrypted messages are retained indefinitely until you delete them
- Metadata is retained for system functionality
- Deleted data is permanently removed from our servers within 30 days
Your Rights
You have the right to:
- Delete all your data through the app
- Export your encrypted data
- Audit our open-source code
- Use the app without providing any personal information
Data Sharing
We do not share your data with anyone. Period.
Changes to This Policy
We will notify users of any material changes to this privacy policy through the app. Continued use of the service after changes constitutes acceptance.
Contact
For privacy concerns or questions:
- GitHub Issues: https://github.com/happier-dev/happier/issues
Compliance
Happier is designed with privacy by default and complies with:
- GDPR (General Data Protection Regulation)
- CCPA (California Consumer Privacy Act)
- Privacy by Design principles
Remember: Your encryption keys are only shared between your own devices in encrypted form. We cannot read your code or conversations even if we wanted to.