Cloud Sync & Accounts
Four ways to sign in, two rails that link together, one unified ID that follows you across devices.
On This Page
Overview
Cloud sync keeps your conditioning progress backed up and synchronized. CCP supports four login methods across two account rails - pick one, or link multiple together and use any of them interchangeably. The system assigns a single unified ID that spans every method you've linked, and data syncs automatically on login and after sessions.
Auto Sync
Progress syncs on login and after sessions
Cross-Device
Pick up where you left off on any PC
One Unified ID
All four login methods can point at the same account
Higher Wins Merge
The best value is always kept
The Two Rails
CCP runs two parallel account rails that are designed to link together. You can start on either rail and bridge to the other whenever you want.
🖥️ Rail 1 - Desktop (app-side)
The CCP desktop client and its backend. Three native login methods:
- Discord OAuth - one-click sign-in via your Discord account
- Patreon OAuth - one-click sign-in via your Patreon account (also surfaces your tier for premium features)
- Anonymous (invite code) - display name + password account, gated by an invite code from Discord mods. No email, no OAuth provider.
Backed by the CCP server (Upstash Redis on Vercel).
🌐 Rail 2 - Web (cclabs.app)
The app.cclabs.app companion site, growing into its own webapp:
- Email magic link - sign in with just an email address, no password
- Same OAuth providers as Rail 1 (Patreon, Discord) for one-click sign-in
- Browse your profile, available subjects, subscription, downloads, connections
- Future home for CCbill payments and a full web-only experience
Backed by Supabase (Postgres + Auth).
How the rails link
The Sign in via Web button in the desktop login modal bridges the rails. It generates a 6-character device code, opens your browser to app.cclabs.app/dashboard/link-device, you sign in (or sign up via email magic link), enter the code, and the desktop client is now paired to your web account.
app.cclabs.app/dashboard/link-device after signing in.🪢 Why two rails?
The website is on its way to becoming a first-class entity. Email-only sign-up (no Patreon, no Discord) lets users start an account without any third-party identity. Once payment processing (CCbill) lands, billing is attached to the web account, and the device link keeps your desktop progression in sync regardless of which rail you bootstrap from.
Four Login Methods
Detail on each of the four methods, with the tradeoffs.
1. Discord OAuth
- Click Login with Discord in the desktop welcome modal
- Authorize CCP in your default browser
- Token stored locally via Windows DPAPI (encrypted on disk)
- Best for: users who already live in our Discord community
2. Patreon OAuth
- Click Login with Patreon in the desktop welcome modal
- Authorize CCP in your default browser
- Same DPAPI-encrypted token storage
- Bonus: surfaces your Patreon tier so premium features unlock automatically
- Best for: Patreon supporters who want zero extra steps
3. Anonymous (invite code)
- Click Anonymous Login in the welcome modal
- Don't have an account? Hit Create one, paste in an invite code, set a password, choose a display name - you're in.
- Invite codes come from Discord mods/admins or CodeBambi directly
- No email collected, no OAuth provider involved - just a display name + password
- Best for: users who don't want to expose Patreon or Discord identity
4. Sign in via Web
app.cclabs.app, sign in with the same OAuth providers as the desktop - or skip them entirely with an email magic link.- Click Sign in via Web in the desktop welcome modal - CCP shows a 6-char code and opens your browser
- On the web, sign in (or sign up) at
app.cclabs.appusing Patreon, Discord, or just an email address - Email sign-in is fully password-less: type your email, click the magic link, you're in
- Type the 6-char device code into
app.cclabs.app/dashboard/link-deviceto pair the desktop client - Best for: users who want an account that doesn't depend on Patreon or Discord, or who plan to use future paid features
💡 You can use more than one
All four methods can point at the same account. Sign in once with one method, then "link" the others in your profile to use them interchangeably. The unified ID stays consistent so your progression follows you regardless.
Unified ID (V2 Accounts)
Every account - regardless of which login method bootstrapped it - gets a single unified_id. When you link a second method (e.g. add a Patreon login to an account you started with Discord), both methods resolve to the same unified_id.
Benefits
- Single identity - one account, four ways in
- Cross-rail data - desktop progression and web profile point at the same row
- Unified leaderboard position - one rank, one profile, one you
- Tier inheritance - if your Discord login is the same identity as your Patreon, you get Patreon perks regardless of which method you signed in with
📝 Pre-v5.5 users
If you were using the app before v5.5, your data was automatically migrated to the unified system on your next login. No action required on your end.
What Syncs
The following data is kept in sync between your local app and the cloud:
| Data | Details |
|---|---|
| Level & XP | Total accumulated XP and current level |
| Achievements | All unlocked achievement IDs |
| Skill Points | Server is source of truth |
| Unlocked Skills | Union of local + cloud (never lose skills) |
| Conditioning Minutes | Total time across all sessions |
| Session Stats | Completed, longest, started, abandoned |
| Flash Stats | Total images viewed |
| Streak Data | Current streak, highest streak, last date |
| Quest Progress | Daily/weekly completions, quest XP, streak |
| Bubble Stats | Total popped, bubble count games |
| Video Stats | Minutes watched, attention checks |
| Display Name | Your customizable public name |
| Privacy Settings | DM, online status, profile pic preferences |
Cross-Device Sync
Sync triggers automatically on login and after each session ends. A heartbeat is sent every 45 seconds to maintain your online status on the leaderboard.
Merge Strategy: "Higher Wins"
- Numeric stats (XP, level, minutes, etc.) - the higher value is kept
- Collections (achievements, skills) - union of both sets, so you never lose unlocks
- Skill points - server value always takes priority
- Streak data - higher streak wins, most recent date is used
⚠️ Important
Cloud sync is not real-time during sessions. Your data syncs when you log in and when a session ends. If you switch devices mid-session, finish your current session first.
Offline Mode
Toggle Offline Mode in Settings to disable all cloud communication.
- When offline: all data stays local, no sync, no downloads, no heartbeat
- Useful for privacy or limited internet connectivity
- Re-enabling online mode will trigger a sync on your next login
✈️ Travel Friendly
Offline mode is great for travel or privacy. Your local progress is safe and will merge with the cloud when you go back online.
Privacy
Your display name defaults to your platform username but can be customized at any time. Control what others see via privacy toggles:
| Setting | Description |
|---|---|
| Show Online Status | Whether you appear "online" on the leaderboard |
| Share Profile Picture | Whether your avatar is visible to others |
| Allow Discord DM | Whether other users can message you |
Desktop-rail data is stored on the CCP server (Upstash Redis on Vercel). Web-rail data is stored on Supabase (Postgres + Auth). When the two rails are linked, the unified ID is the join key - both records point at the same identity. Emails on either rail are stored as one-way HMAC-SHA256 hashes; plaintext addresses never touch our databases. See the Privacy Policy for the full breakdown.