cybercab.city Privacy Policy
Last updated: 2026-10-11 (applies to the website build with guest play, match chat, X sign-in, $CAB wallets and shared cash-out cards, hosted at cybercab.city, to CyberCab 2077, the new version of the game in your browser, and to the cybercab.city app for iPhone and Android)
Playing as a guest
On the website you can play shifts and use the garage without signing in. Your browser then gets a guest account: the server makes a random account ID and a session key, stores only a one-way hash of the key, and keeps your guest progress (driver name, banked CAB, upgrades, loadout and career stats) under that ID. The key is kept in your browser's local storage (cybercab.session). A guest account has no name of yours, no X account, no email address and no wallet.
Guests can't play the Moon Run, trade Infinity Stones or hold $CAB. To do those, sign in with X: if your X account doesn't have a cybercab.city account yet, your guest account becomes your X account and keeps its progress. If it already has one, you continue on that account and the guest account stays as it was.
A guest account nobody has played for 30 days is deleted, with its sessions. Clearing this site's data loses a guest account, since nothing else links it to you.
The app has guest play too (PLAY AS GUEST): the same kind of account, kept with an app account's session key in the phone's secure storage. App guests can play everything in the app except buying body kits. Signing in with Apple, Google or X keeps the guest's progress when that sign-in has no app account yet. Deleting the app loses an app guest account; it is deleted after 30 days without play, like a website guest.
Signing in with X
The game is online only. You can play as a guest (above) or sign in with your X account. Sign-in runs through Firebase Authentication (Google), which receives your X user ID, display name, username and profile picture link from X, as Google's service provider for us. Our server keeps your X user ID, to recognise you next time, and your X username, updated each time you sign in and shown only to you in the garage so you can see which account you're in. Your X username is also your driver name when your account is first made; you can change the driver name.
After sign-in, our server gives your browser a session key, kept in local storage (cybercab.session). The server stores only a one-way hash of it. Signing in on another device gives that device its own key.
CyberCab 2077 in your browser
CyberCab 2077 is the new version of the game at cybercab.city. It uses the same accounts, guest play, X sign-in, server, matches, wallet and Stone Exchange described in this policy. What differs:
- Its garage (banked CAB, upgrades, weapons and body kit) is your account on our server, as described in Your account.
- Its Moon Run button opens the classic game at cybercab.city/classic, which works as described in this policy.
- Your session key is kept in local storage as
flutter.cybercab.session, and your settings asflutter.cybercab2077.music,flutter.cybercab2077.soundandflutter.cybercab2077.quality(music and sound levels, drawing quality). - Keyboard input is read by the game and only sent as the in-match controls.
- Everything the game loads to start comes from cybercab.city, apart from Cloudflare's analytics script (see Hosting and service providers). Sponsors' billboard pictures come from our game server (play.cybercab.city), like everything else in a match. When you press Sign in with X, your browser loads Firebase's sign-in code from Google (www.gstatic.com and apis.google.com) and opens X's sign-in window, so Google and X receive your IP address and browser details, as any website you open does.
- Sign out and Delete account are in the account sheet (the button in the top-right corner of the title and garage → ACCOUNT).
Signing in to the app
The cybercab.city app (iPhone and Android) has its own accounts, separate from website accounts. You sign in with Apple, Google or X, through Firebase Authentication. Firebase receives what that provider shares: a user ID, your name if you share it, and an email address (with Sign in with Apple you can choose to share a private relay address instead of your own). Firebase keeps these in its user record for our project, as Google's service provider for us.
Our server keeps only the Firebase user ID, to recognise you next time. Your name, if the provider shares one, becomes your driver name when the account is first made; you can change it. The server sees your email address inside the sign-in token but does not store it.
The app keeps its session key in the phone's secure storage (the iOS Keychain or Android's encrypted storage). The server stores only a one-way hash of it. If a finished Moon Run can't reach the server, the app keeps its recording in the same storage and sends it the next time it starts, then deletes it.
App accounts have no wallet and no $CAB: Moon Run cash-outs in the app pay game CAB into your bank, and the app has no Dark Side Run and no Infinity Stones. Everything else in this policy about accounts, matches, Moon Runs, IP addresses, backups and deletion applies to app accounts too, except the parts about X usernames, wallets and the blockchain.
Your account
The server stores, for each account:
- a random account ID, your X user ID and username (website accounts) or Firebase user ID (app accounts), and when the account was created and last changed
- your driver name
- your banked CAB balance, upgrade levels, weapon unlocks and loadout
- career stats (shifts, wins, fares, kills, deaths, CAB banked, best shift)
- Moon Run and Dark Side Run records (runs played, best score, highest level, fastest clear per level, CAB won and lost, how much you staked today for the Dark Side daily cap)
- your wallet's address, its secret key (encrypted, see below) and its last known $CAB balance
- body kits you own and the one on your cab (app accounts), with their purchase records (see Body kits bought in the app)
- a record of any Snap you made
- whether you have seen the tutorial
Your browser also keeps a copy of this profile (cybercab.profile.v1) so the garage shows something before the server answers. The server's copy is the one that counts. If a finished Moon Run can't reach the server (a dropped connection), your browser keeps its recording (cybercab.moon.unsent) and sends it on your next visit, then deletes it.
Your $CAB wallet
Every account gets its own Solana wallet, created by our server. Its secret key is encrypted with a key held in Google Cloud KMS before it is stored, and is only decrypted inside our server to sign transfers you start (Dark Side stakes, stone and body kit purchases, and withdrawals). Because we hold the key, we can move the $CAB in it; we only do so for those transfers.
The server keeps a record of each transfer: Moon Run payouts to your wallet, Dark Side stakes from it, Infinity Stone purchases (paid to the treasury for a stone's first purchase, or to the seller's wallet for a resale), body kits bought on the website (paid to the treasury, which burns kit money a million $CAB at a time), the treasury burn a Snap triggers (recorded with the player who snapped), and withdrawals you send to other addresses (the destination address, amount, time, status and transaction ID). Anyone can send $CAB to your wallet address; the game reads your balance from the blockchain.
The blockchain is public and permanent. Your wallet address, its balance and every transfer in or out of it, including the addresses you withdraw to, are visible to anyone and can't be deleted, by us or anyone else. Anyone who links your wallet address to you can see that history. We don't publish which X account owns which wallet.
Transfers go through a Solana RPC service, which sees the transactions our server sends.
Body kits bought in the app
The app sells cab body kits (cosmetic bodies) through the App Store and Google Play. Apple or Google takes the payment: we never see your card or payment details, and their privacy policies cover the payment.
When you buy, the app passes the store your account's random ID (Apple's "app account token", Google's "obfuscated account ID"), so our server can tell the purchase is yours. The server then checks the purchase with Apple or Google and keeps a purchase record with your account: the product, the store's transaction ID (Apple) or purchase token and order ID (Google), whether it was a real or test purchase, when it was made, and whether it was refunded. We use it to give you the kit, to restore it on another phone (Restore purchases), and to take it back if the store refunds the payment: Apple tells our server about refunds, and our server reads Google's list of refunded purchases. To read Google purchases, our server signs in to Google's Play Developer API with its own Google Cloud service account.
Purchase records are kept as long as your account exists and are deleted with it (see below).
Ads in the app
The iPhone and Android app shows an ad (Google AdMob) on the results screen between shifts: at most one every few
shifts, not to new players, and never to anyone who has bought a body kit. The website has no ads.
The ads are non-personalized: they aren't chosen from a profile of you, and the app doesn't ask to track you across
other companies' apps. To show an ad, measure it, limit how often you see it and prevent ad fraud, Google's Mobile Ads
SDK in the app collects information about your device and your interactions with the ads: device identifiers (on
Android, the advertising ID; on iPhone, an identifier for this app), your IP address and approximate location derived
from it, the device model and operating system, and diagnostic data about the ads. Google handles this under its own
privacy policy (policies.google.com/privacy; how Google uses data from apps that show its ads:
policies.google.com/technologies/partner-sites). We don't receive this information, and nothing about your account,
wallet or matches is sent to Google for ads.
In the EEA, the UK and Switzerland, the app asks for your consent before showing ads, using Google's consent form. You
can change your choice at any time in the app: Garage → Career → Ad privacy choices. On Android you can reset or delete
your advertising ID in the system settings.
Sponsors (billboard bookings)
Businesses can book the game's billboards on cybercab.city/sponsor. Payment runs through Stripe Checkout: Stripe collects the card and billing details and the payer's email address under its own privacy policy (stripe.com/privacy), and card details never reach us. Our server keeps each booking: which boards, the weeks booked, when it went live, the amount paid, Stripe's session and payment IDs, the payer's email address (to reach the sponsor about the booking or a refund) and the uploaded artwork.
The artwork is public: every player's game downloads it from our server and shows it on the booked boards for the weeks booked. Bookings and artwork are kept until the sponsor asks us to delete them (contact below), except that the payment record is kept as long as tax and accounting law requires. Players' games fetch the list of booked boards and their pictures; that involves nothing about the player.
What other players see
- In a match, other players see your driver name, your cab (including its body kit) and its position, and the kill feed.
- On the Stone Exchange, every player sees which driver name holds each stone, any listings, and a shared log of the last 40 purchases, listings and sales, which names the players involved.
- Stone holders are public. Anyone visiting cybercab.city (signed in or not) sees who holds each stone, shown as your X username (or your driver name if your account has none), on the title screen and in the garage, and the same list is available from our server to anyone who asks for it. Alerts naming you go to everyone online when you buy a stone, buy one from another player, hold five, or Snap. In matches, your cab carries your stones above it and stands out on every player's map.
Matches
While you play a shift, your game sends your controls to the server about 30 times a second, and the server sends back the match state. Matches are not recorded. When a shift ends, only your totals (CAB banked, placement, kills, deaths, fares) are added to your account.
Match chat
Players in a match can chat: typed messages on the website (signed-in players), quick-chat lines in the app and for guests. Messages go through our server to the players in that match and are not stored. The server checks each message first and refuses wallet addresses, links, handles and scam pitches. Other players see your driver name with what you send, and an anonymous chat ID for your account (a one-way hash of the account's random ID) so they can mute or report you.
If you mute someone, their chat ID is kept on your device (your browser's local storage, or the app's secure storage) so they stay muted. If you report someone, our server keeps the report: your account ID, theirs, and their last five chat lines in that match, for 7 days, so reports can be reviewed; then it is deleted. Reports from three different players in a day turn that player's chat off for an hour. Deleting your account deletes the reports you made and those made about you.
Moon Runs
When you start a Moon Run, the server records the run: your stake, mode, the run's random seed, its start time, and your build at that moment. When it ends, your game sends a step-by-step record of your inputs and choices. The server replays it to work out what the run earned, and pays that. The server keeps the outcome, the payout, what your game reported, a short note if the two disagreed, and when the run finished.
Run recordings. The server keeps that record of your inputs and choices with the run for 90 days after it finishes, so a result can be checked again if it's ever questioned (for example, a missing payout). It's game controls only: directions, button presses and draft picks, step by step. After 90 days the recording is deleted; the run's outcome and payout stay with your account.
Balancing statistics. For each finished run the server also keeps a separate, anonymous copy, used to balance the game (how hard each level is, what players run into, which upgrades work): the mode, the day (not the time), the stake rounded to a range, the outcome and level reached, your cab's upgrade and weapon levels and loadout, what happened in each level (time taken, damage taken from each kind of enemy, enemies destroyed, upgrades drafted, what wrecked the cab), and the input recording with only the build details a replay needs. It has no account, X user ID, name, wallet address, exact stake or payout, and nothing in our records links it back to you. It's kept with no set end date.
Sharing a cash-out
After a Moon Run cash-out you can press Share on X or Get image. Only then does our server make a public card for that run, at an address with a random code (cybercab.city/c/…). Anyone with the link can see the card. It shows your X username (or your driver name if your account has none), the $CAB the run paid, your stake as a multiplier, the mode and level, and the start and end of the payout's Solana transaction. The server keeps the card's record (the run, your account, when you shared it and what the card shows) until you delete your account.
Pressing Share on X opens X with a post written for you and the card's link; nothing is posted unless you post it, and we get nothing back from X about it. When a post links to a card, X fetches the card's page and image to show the preview, and so can anyone else's app or crawler that opens the link.
IP addresses
Your browser reaches our game server through Cloudflare (play.cybercab.city), which passes your IP address on to the server. The server holds addresses in memory for a few seconds to rate-limit requests. They are not written to the account database.
Hosting and service providers
- Cloudflare (Cloudflare Workers) serves the game's files (code, 3D models, music and images) and shared cash-out cards. Like any web host, Cloudflare receives your IP address, your browser's user agent and which files you request, to deliver them and protect the site from abuse. Cloudflare handles this as our service provider under its own privacy policy (cloudflare.com/privacypolicy). Cloudflare also sits in front of our game server (play.cybercab.city): your sign-in, garage, wallet and Moon Run requests and your match connection pass through it to our server, which protects the server from floods and abuse. We have not turned on Cloudflare request logging, and we do not receive or keep request logs. Cloudflare Web Analytics is on for cybercab.city: a Cloudflare script in each page (from static.cloudflareinsights.com) reports page views, how fast the page loaded, the page's address and the site that sent you, and your browser, operating system, device type and country, without cookies and without an identifier for you. We see only totals.
- Google Cloud runs our game server and its database, holds the wallet encryption key (Cloud KMS) and the treasury key (Secret Manager), as our service provider (cloud.google.com/terms/cloud-privacy-notice). Your account and match traffic are processed there.
- Google Firebase Authentication handles sign-in (X on the website; Apple, Google or X in the app), as described above.
- X, Apple and Google authenticate you when you sign in with them; their own privacy policies apply to those accounts.
- Apple (App Store) and Google (Google Play) process in-app purchases and tell our server about them, as described above.
- Stripe takes sponsors' billboard payments, as described in Sponsors.
- Google AdMob shows the ads in the app, as described in Ads in the app (not on the website).
- Solana (the public network, through an RPC provider) carries every wallet transfer.
What this build does not do
- No phone numbers or passwords, and our server keeps no email addresses (see Signing in to the app for what Firebase keeps).
- No third-party analytics apart from Cloudflare Web Analytics (above), no tracking, no cookies, and no ad networks on the website. Sponsors' billboards in the game are pictures in the city: they aren't chosen for you and don't track you. (The app's ads are described in Ads in the app. The Moon Run balancing statistics above are kept on our own server and aren't linked to you.)
- No other third-party services. Fonts are bundled with the game, not loaded from a font CDN.
- Gamepad input is read by your browser and only sent as the in-match controls described above.
Separate local settings remember your display and audio choices: cybercab.pref.film (whether the film filter is on), cybercab.pref.musicVolume (music volume) and, on iPhone, cybercab.pref.fsTip (that you dismissed the Add to Home Screen tip). They stay on your device.
CAB and $CAB
Game CAB (your bank) is an in-game number with no monetary value. It cannot be bought, sold, or withdrawn. $CAB in your wallet is a Solana token.
Keeping and deleting your data
Your account is kept until you delete it (guest accounts: until 30 days without play, see above). To delete it, withdraw any $CAB in your wallet first (its key is deleted with the account), then open the garage, go to Career and press Delete account (in CyberCab 2077: the account sheet → ACCOUNT → Delete account). In the app, delete your account from its settings. That removes your account, its wallet key, its sessions, its purchase records, its Moon Run records (with their recordings) and its shared cash-out cards from our server. Copies of a card that X or others already fetched are outside our control. Deleting your account does not refund purchases; Apple and Google keep their own records of them. The anonymous balancing statistics stay, since nothing links them to you.
Backups. To protect accounts and wallets against a server failure, we keep daily copies of the server's database for 30 days (in Google Cloud Storage) and daily snapshots of the server's disk for 7 days, both in the United States and encrypted by Google. A deleted account is gone from the live database at once and from the backups once they age out: within 30 days. Any stones you held become unowned again. Lines in the Stone Exchange log that name you stay until newer entries push them out. We keep the record of past wallet transfers, without your X user ID or name, because they are the treasury's ledger; the transfers themselves stay on the blockchain permanently in any case.
Sign out (garage → Career, or in CyberCab 2077 the account sheet → ACCOUNT) signs that browser out and removes its session from our server. Clearing this site's data signs the browser out too, but leaves the unused session record on our server. Either way your account stays, and signing in with X again brings it back.
Contact
Questions about this policy or your data, requests to delete your account or data, and reports of abuse in chat:
colbymaloydev@gmail.com.
Changes
This policy will be updated before any of the following ship. Each one changes what data is collected:
- identity checks
- analytics or crash reporting