Privacy / 01

Privacy

A clear record of what we collect, why we collect it, and what we leave alone.

// 02 The policy What you should know

We respect your privacy and keep things simple. Here's what we collect, why, and what we don't do.

What we collect

  • Contact form submissions -- your name, email address, and message, plus your IP address and browser information. We store it in our database and email a copy to our team (via Resend). If you opt into launch updates, your email address also goes to Mailchimp.
  • Error monitoring -- we use Sentry to automatically capture JavaScript errors, stack traces, browser/OS info, page URLs, and session-level reliability counts so we can fix bugs. We configure Sentry not to send default personal information and to redact recognized secret patterns, but avoid putting passwords or keys in feedback or URLs.
  • Aggregate usage signals -- for features that aren't open to the general public yet (firmware code editing, compiling firmware, installing on your Cyber Fidget, publishing apps to the Archives store), we record a one-per-session "you tried this" event to Sentry so we can see how many people are interested in early access. Each event carries the feature name and standard technical context (the same error/session context Sentry attaches); it never includes your code, your clipboard, file names, file paths, file contents, or anything you typed.
  • Feedback you submit -- if you click the "Feedback" button on any page, whatever you type is sent either to Sentry or, if that service is unavailable, directly to us and stored in our database with the page address, the kind of feedback, the time and your browser type. We don't keep your network address with it. No email or name is required.
  • Error reports you choose to share -- in the Studio, when a build fails you can click "Share this error" to send the error message, your app name and which code generator you used to Sentry so we can help debug. A separate, unchecked-by-default checkbox lets you also include your code -- only if you tick it does any code get sent. Nothing in this path is sent unless you click Share.
  • GitHub sign-in -- initial sign-in, from the site header or the firmware code editor, asks for your profile only (read access to your public GitHub info). We use it to recognize you and check your access; it grants no permission to change your repositories.
    • Only if you later choose "Connect repositories" does GitHub grant access to your public repositories (the `public_repo` and `workflow` permissions). The editor uses it to create and update your firmware repository and run its build workflow, so it can save your work and trigger builds.
    • You can revoke access at any time in your GitHub account settings.
    When you trigger a firmware build, your browser passes your GitHub credential to our build server. Your browser also sends it to our feature-check and signed-in Archives endpoints to identify your account. Our code uses it to verify your GitHub identity and doesn't intentionally store the raw credential; signed-in Archives features may keep your GitHub id, username, name, public email, and avatar. We keep your GitHub username and account number, and when you first and last signed in, to count how many people use the site.
  • Projects saved to your account -- when you are signed in, the projects you make in the Studio -- including their Generate conversations -- and the apps built from them are saved to your account on our server, so you can pick up on another browser. We also keep earlier versions of a project when two browsers save over each other, which project you last opened, and a short record of when projects were saved or deleted. Your browser also keeps its own copy while you work; deleting a project in the Studio removes it from your account and from that browser.
  • Making code with Generate -- when you use the Studio's Generate tab, we send your description and the code it needs to a code-generation service and show you the result. The conversation (what you typed and the replies) and the code it made are part of your project: if you're signed in, they are saved to your account with the project (see "Projects saved to your account"); if not, they stay in your browser. We don't keep another copy, except when you use credits: then we also keep each result with your account, so you don't lose it and so we can answer questions and refunds. If a service sends back a reply we can't read, we keep a short technical note (which service and model, and what went wrong -- never your description or code) for 30 days. The services we use for the free allowance and credits don't train on what we send them.
  • Cyber Fidgets linked to your account -- when you link a Cyber Fidget, we keep a record of it with your account: its device identifier, the name you give it, its board and software versions, identifiers from its hardware that let us recognize the same Cyber Fidget, when it last checked in and whether it is in Dev mode, the list of apps it reports as installed and how much space they use, when a Studio tab last sent to it, and the app changes you send to it (including the app files). If you ask to download what is on a Fidget, it sends us copies of its installed apps, which we keep while the link reports them. Files for changes it has picked up are kept for up to 30 days (the most recent ones longer) so a send can be checked or repeated. Unlinking stops new changes and cancels waiting ones; their files are removed within about 30 days. We keep a security log of link changes, with a coded form of the network address, for up to 12 months. To have a Fidget's records deleted, contact us.
  • API keys (BYOK) -- if you bring your own model provider key to the Generate tab, it's saved in your browser's local storage only. Keys for Anthropic and Gemini go directly from your browser to their APIs. OpenAI keys are proxied through our server only to avoid cross-origin restrictions, and our code doesn't intentionally store them. In every mode, the provider receives the prompts and code needed to generate or revise your app. Generate's free allowance and credits use our own account with a code-generation service; we keep usage counts, not your requests. With your own key, that provider's own terms apply.
  • Buying credits -- credits are bought through Stripe. Your card details go to Stripe, not to us. We keep a record of each purchase (the pack, price, status, Stripe's reference and when it was paid), any refund or refund request you make, and how your credits were used, for as long as we need them for our accounts and taxes.
  • Stopping abuse -- to protect Generate's free allowance, sharing, ratings and reports, we keep a scrambled code made from your connection's address. It can't be turned back into your address. The code changes every day, and we delete earlier days' codes daily. A shared link keeps only what you chose to share -- the title, an optional maker name and your creation -- until the link is stopped. If we take a link down, we keep a private copy for about 30 days in case it needs review.

On the Buy page we count visits, how far people read and which buttons they click, on our own server and without cookies. To tell visits apart within a day we use temporary codes that can't be turned back into your network address, and we delete them, with the key that makes them, when our daily cleanup runs after that day ends. Only the counts are kept.

Usage information from your Cyber Fidget

Your Cyber Fidget keeps a device health and usage record. If you say yes when you connect it, we receive a copy. It covers battery readings and charging, starts, approximate time on and asleep, the software version, and whether parts of the record are missing or damaged. It does not include your app code or design files.

A linked Cyber Fidget can also send this record itself, at most once a day when it checks for updates, but only while "Share battery data" is turned on in its settings. These reports contain battery readings and on/off/sleep events with their times, running totals such as starts, time on and charge cycles, and the software version. The setting starts off and can be turned off on the Cyber Fidget at any time. These reports do not include app content or WiFi names.

Each report includes a device identifier and the Cyber Fidget's hardware (network) address so we can keep reports from the same Cyber Fidget together over time. Our servers use short-lived connection information to limit automated abuse, and keep that separate from the device report. You can read exactly what the device records in the firmware source.

For browser sharing, your choice is per Cyber Fidget and per browser. Say yes once, or tick "Don't ask again" to keep sharing or to stop being asked. You can change that browser choice any time from the device panel on My Fidget. The separate "Share battery data" setting is controlled on the Fidget. If the kinds of information collected through browser sharing change in a meaningful way, we will ask again.

We keep accepted reports while they remain useful for improving Cyber Fidget. Turning off either sharing choice stops future reports from that choice but does not remove reports already shared. You can contact us to request deletion. Because reports are stored separately from your account, we may ask you to reconnect the Cyber Fidget so we remove the right records.

What we don't do

  • We don't sell, rent, or share your data with advertisers.
  • We don't display third-party ads.
  • We use Google Analytics on most pages to understand how the site is used -- how many people come and where they get stuck -- so we can prioritize fixes. It may set cookies under Google's policy, and this privacy page itself doesn't load it. Analytics also gets a yes/no flag for whether you were signed in when you visited -- never your account name or id -- so we can compare traffic from signed-in and anonymous visitors. We don't sell this analytics data or share it with advertisers for targeted advertising.
  • We store usage reports from your Cyber Fidget separately from your account, not with it.

Third parties

  • Sentry -- error monitoring, feedback, early-access interest signals, and session reliability counts (their privacy policy).
  • GitHub -- sign-in, account identity for signed-in features, and firmware compilation (their privacy policy).
  • Google Analytics -- site-usage measurement on most pages (their privacy policy).
  • Mailchimp -- launch-update and newsletter email (their privacy policy).
  • Resend -- delivering contact-form messages to our team (their privacy policy).
  • Code-generation services -- making code in the Generate tab. The service handling your request receives your description and the code it needs. With your own key, that is the provider you choose, and their terms apply.
  • Stripe -- buying credits (their privacy policy).
  • Shopify -- if/when purchases are available, checkout occurs on Shopify and their privacy policy applies.
  • Kickstarter -- backing occurs on Kickstarter and their privacy policy applies.

Sprite Library Credits

The Build tools include a library of pixel art sprites. All sprites are released under CC0 1.0 (Public Domain) by their creators. While no attribution is required, we want to celebrate these generous contributors:

Your rights

You can clear the data this site keeps in your browser -- preferences, sign-in state, API keys, projects, and compiled previews. This lives in cookies, local storage, session storage, and IndexedDB, so use your browser's "clear site data" control to remove all of it; clearing local storage alone won't remove everything. Projects saved to your account stay there until you delete them in the Studio. If you want us to delete any feedback you've submitted or have other privacy questions, contact us.

Last updated: October 2026