Skip to content

Privacy Policy

Last updated: 13 November 2026

Welcome to Skycle.app! It generates a visual “circle” of the Bluesky accounts you interact with most, from public Bluesky data. This page explains, precisely, what we process today, why, for how long, and your rights. See also the Legal Notice for who publishes this site.

Who is responsible for this processing

Maxence Rose, publisher of Skycle.app (full details on the Legal Notice page), is the data controller. Contact: contact@skycle.app.

What we process

If you only visit a circle (no Bluesky sign-in)

We read public Bluesky data in real time (via the Bluesky API) to generate and display the page: the avatars and handles of the account owner's friends, and the public interactions between them. This is not stored beyond the caches described in Retention below, and never tied to you as a visitor: we do not know who is looking at a page.

If you sign in with Bluesky

Signing in creates or updates one account row, identified by your Bluesky DID (a stable identifier, unlike a handle which can change or be reassigned). It holds:

  • your DID and last known handle (handle is for display only);
  • your locale, UI preferences and the look you gave your own circle (colours, thickness, title: purely cosmetic settings, saved so that they follow you from one device to another);
  • a circle-visibility flag and a snapshots switch, reserved for a setting screen that does not exist yet: today they always default to public and on, and nothing in the product can change them;
  • the date of your last sign-in.

What Skycle may do on your Bluesky account is limited to what each sign-in asks for, on Bluesky's own consent screen: signing in to post a circle asks to create posts and upload images, and to upload videos and let Bluesky's video service save a video in your account (both used only when you post the animated evolution of your circle as a video; posting a picture works without them), nothing else (no likes, follows, deletions or direct messages); signing in to create a starter pack asks, in addition, to create lists and starter packs: a public list of the people you chose, written in your own Bluesky repository, and nothing else is written; signing in from the alert settings page (its own button, or the one at the top of the site on that page) asks, besides who you are, to read your account's e-mail address, only to fill in the alerts form for you; signing in with the “Sign in with Bluesky” button at the top of any other page, in the side panel of the circle editor or under the notice of a private history, or on the opt-out page, only confirms who you are. If you untick a permission, Skycle simply cannot use the feature that needs it: without the e-mail permission, you type your address yourself.

When you post on Bluesky from Skycle, the picture of your circle, or the video of its animated evolution, is made in your browser and sent through our server to your own Bluesky account (a video through Bluesky's video service, which prepares it for playback, when you allowed it), with the message, the language and the description you chose. Only what may be exported is in it (the accounts that are blurred or restricted for visitors are never drawn), and Skycle does not keep it: once Bluesky has it, it is gone from our server.

Skycle keeps one set of Bluesky permissions per account, not per device. A sign-in that only confirms who you are (or also reads your e-mail address, from the alert settings page) therefore replaces the permission to post granted earlier, including on another device: you stay signed in there, but the next time you post a circle, Bluesky asks you to approve posting again.

We also keep you signed in with two linked but distinct pieces: a sid cookie in your browser, set once at sign-in and valid for 14 days (it is not renewed just by using the app), and a matching server-side record of your OAuth tokens, which does extend as you keep using Skycle. For each browser you sign in with, the server also keeps a record (a random identifier and your DID, 14 days) that the cookie is checked against on every request: signing out, from any browser, ends every one of these records, so every browser is signed out, and revokes your OAuth tokens at Bluesky. Only while you are in the middle of signing in, we also keep a short record of that attempt. See Retention below for the exact durations.

If you turn on circle alerts

Alerts are optional and only for a signed-in account. When you turn them on, we store the e-mail address you give and the frequency you choose (as it happens, at most one e-mail a day, or a weekly summary). Nothing is sent before you follow the confirmation link we e-mail you (double opt-in); only a hash of that link and of the unsubscribe link is stored. When the circle of a friend changes and you enter its first places, an alert is queued: it records whose circle it was, never the rest of that circle. Only circles their owner opened on Skycle while signed in count, never a private circle. Every e-mail has a one-click unsubscribe link; pausing, unsubscribing and deleting your alerts are also on your alert settings page. The address is deleted with your alerts, with your data, or with your account after 12 months without signing in, and 30 days after you unsubscribe; alerts are kept 13 months at most. The same page shows a signed-in account the circles of other Skycle users that hold it, read from their latest snapshot (public circles only, the last 14 days); nothing more is stored for it.

Alerts are sent by e-mail only, never as a Bluesky message. If you signed in from the alert settings page and allowed it on Bluesky's consent screen, the form is filled in with your Bluesky account's e-mail address, read from your Bluesky server when you open the page: it is not stored and not logged unless you subscribe with it, and you can always type another one. Without that permission, or if you refuse it, nothing is read and the alerts work the same.

The weekly list. Unless you turn it off in your alert settings, a confirmed and active subscription also gets, once a week and in the same e-mails, the accounts that newly interact a lot with it, from the list described in Who interacts a lot with you (built the same way, by our server, about once a week for each subscriber, each at its own hour). Only accounts never named before are named; the very first time, nothing is sent, the list is only noted. Never named: an account that opted out (checked again in our database right before the e-mail leaves), an account hidden by Bluesky moderation, an account that blocks you or that you block; an account that asked Bluesky to hide its content from logged-out users is at most counted (“N accounts that hide from logged-out visitors”), never named, since an e-mail leaves Skycle. To remember who was already named, we keep, with your subscription, a keyed code computed from each account (not its identifier, and useless without our key), 500 at most, deleted with your alerts or your data. If you opted out of Skycle circles, no list is built and none is sent.

Who interacts a lot with you

The alert settings page of a signed-in account also lists the accounts that interact most with it over the past year: those that reply to, quote, repost, like or mention its posts, ranked with the same weights as a circle (following someone never counts), including people who never used Skycle. It is an estimate, and the page says so. It is built when you open that page, or when you ask for it in the People panel of your own circle, and once a week for the weekly list of your alerts if you turned it on, when no list is kept yet, so about once a day at most, by our server and never by your browser:

  • it reads your own recent public posts, with their counts, and the profiles of the accounts it finds, from Bluesky's public service;
  • it asks Constellation, a public, open index of the links between Bluesky records, which accounts replied to, quoted, reposted or liked those posts and which mentioned you. Constellation is run by the microcosm project (microcosm.blue, which says it is a project by the Bluesky account @bad-example.com, kept alive by community contributions); the instance asked is constellation.microcosm.blue. It receives your DID (a public identifier) and the public addresses of some of your posts, from our server, identified only as “Skycle (skycle.app)”: no cookie, no e-mail address, no name, nothing from your browser, and not your IP address (it sees our server's). What it answers is public Bluesky data. To our knowledge its operator publishes no privacy policy, no data processing agreement and no location for its servers: see International data transfers.

Both ways: on your own circle of the past year, signed in, the People panel also uses this list to mark the people of your circle who are among the accounts that interact the most with you. Only the identifiers and scores of the accounts of the list reach that page, for you alone; nothing more is stored, and none of it appears in an image, in a post or to anyone else. An account that hides its content from logged-out users is never marked.

Never listed: an account that opted out of Skycle circles (checked again, in our database, each time the list is shown), an account hidden by Bluesky moderation, an account that blocks you or that you block. An account that asked Bluesky to hide its content from logged-out users is shown to you, signed in, and to nobody else. If you opted out, no list is built for you and nothing is asked to Constellation. The list (each account's handle, display name and score, and how many interactions of each kind were read) is kept 24 hours in our cache, 5 minutes if it could not be built, and deleted with your data; it is shown to you only, never in an image or a post. If Constellation does not answer, the page says so and works without it.

Community circles

Anyone, signed in or not, can paste the link of a Bluesky list, starter pack or feed on /community and get the circle of that community: who interacts the most with its other members. To draw it, our server (never your browser):

  • reads who is in the community from Bluesky's public service: the members of the list or the starter pack (moderation lists are refused), or the authors of the feed's recent posts, with their public profiles;
  • reads, for at most 150 members, their recent public interactions (replies, mentions, quotes, reposts and likes of the last 90 days) from their own public repository, as it does for a circle's owner, or from what is already in our cache for their own circle. Interactions with anyone outside the community are not counted.

An account that opted out of Skycle circles is never read nor shown (checked in our database before anything is read; if it cannot be checked, nothing is drawn), and it is taken out of every community circle within a minute of opting out. A community made by an account that opted out, that Bluesky moderation hides or that hides from logged-out users is not drawn at all. Members that moderation hides are left out; members that hide from logged-out users are blurred in their place (no picture, name or handle). The result (the community's name, the public profiles of its creator and of the members drawn, and a score for each pair of members who interact; no post) is kept 24 hours in our cache, 5 minutes if it could not be built, and is public: its page and its picture can be shared. The page is never indexed by search engines.

Circle snapshots

If snapshots are enabled (the default — see above, there is no setting to turn this off yet), Skycle keeps one dated copy of your ranking per day it changes, capped at your 100 closest friends: for each of them, their DID, score, and the counts behind it (replies, mentions, quotes, reposts, likes), plus the ranking algorithm's version. It never stores a copy of your friends' profiles (their avatar, name, etc. are looked up again whenever a snapshot is displayed), so the privacy rules below always apply, even to old snapshots. Only you, signed in, can see your own history. We keep a snapshot for 24 months: a scheduled job runs every day and deletes the snapshots older than that, for every account, dormant ones included.

The share sheet has a “Copy link” button. Anyone, signed in or not, can use it on a circle that a signed-out visitor is shown (never on one whose owner opted out, hides it from logged-out users, or is hidden by Bluesky moderation). It writes one row, reachable at skycle.app/c/ followed by a random code of eight characters, that holds a configuration, not the circle: the DID of the account the circle is about, the layout, the look (colours, thickness, handles under the avatars… the same settings as above), the period, how many friends are shown and, for the few people you hid in the editor, their DIDs (at most 100). When you were signed in as the owner of that circle, the title you wrote on it is kept too; otherwise no title is kept. If you were signed in, your DID is kept as the creator of the link: it is never shown, it only lets us detach it when you delete your data. A link made since 11 November 2026 also keeps the DIDs of the friends it shows (see “Frozen links” below). Nothing else is kept: no IP address, nothing that identifies a visitor who is not signed in (the limit that stops a script from making thousands of links is a counter in the cache, see Retention).

The friends are read again each time the link is opened, from the circle's cache and under the rules for a signed-out visitor described below, so the page shows what a visitor would see on the circle itself: someone who opts out, or asks Bluesky to hide their content from logged-out users, leaves it at once (within a minute for an opt-out), and the page of an account that opted out is the same “circle not available” screen. The page is the same for everyone, the circle's owner signed in included, never reads your session and is kept out of search engines; the card shown when the link is posted is drawn from the same view. “Edit this circle” opens the editor with the look of the link as a draft in your browser: it is not saved to any account unless you choose to keep it.

We do this so that a circle can be shared with a short link instead of a picture. A link never changes (another look is another link, and the same circle set up the same way is the same link). We keep it 12 months after it was last viewed (the date of the last view is written at most once a day), then a scheduled job deletes it. Opting out, or deleting your data, deletes the links about your circle at once and removes your DID from the links you made about someone else's circle (those are not yours to delete: someone else may have shared the same one).

Frozen links and statistics (since 11 November 2026). A link made from that day keeps the circle as it was: the DIDs of the friends it shows, in order (the people pinned in the editor first, the people hidden left out), never their names or pictures. They are read again each time the link is opened, under the same rules for a signed-out visitor: an account that opts out leaves it, one that hides from logged-out users is blurred. A link made before keeps following the circle. Each page counts how many times it was opened in a browser: one number per link (link previews and search engines do not run the counter, and your IP address only serves the usual short-lived rate limit). The owner of the circle, signed in, sees these numbers on skycle.app/links, where any link about their circle, and their “whose circle am I in?” links, can be deleted. Every page has a “Report this link” link to the contact form. Opting out, or deleting your data, also removes your DID from the frozen links of others.

Signed in, the alerts page lets you make a link to the list of accounts whose circle you are in: the circles of Skycle users that hold you (with your exact place) and the accounts that interact a lot with you (an estimate, see above). Only you can make it, only for yourself, and only when you click the button; you can leave anyone out before. It writes one row, reachable at skycle.app/in/ followed by a random code of eight characters, that holds your DID and the DIDs of the accounts in the link (at most 24), in their order, with their place when it is exact. No name, no picture, no score and nothing about a visitor is kept. The list is frozen on that day; the profiles are read again each time the link is opened, under the rules for a signed-out visitor described below: an account that asked Bluesky to hide its content from logged-out users is shown as a blurred, nameless avatar; an account that opted out is not shown at all; and if you opted out or hide your content from logged-out users, the page shows nothing. The page and its preview picture are the same for everyone, never read your session and are kept out of search engines.

We do this so that you can share the result by a short link. We keep a link 12 months after it was last viewed (the date of the last view is written at most once a day), then a scheduled job deletes it. Opting out, or deleting your data, deletes your links at once and removes your DID from the links of others.

Technical logs

Our servers log structured technical events (errors, rate-limiting decisions, performance metrics) identified by an event name, e.g. generation.completed. Fields that look like a secret (password, token, cookie…) are redacted automatically before a line is written, but a handful of these events can include a handle (e.g. when generating a circle fails). We also write a visitor's IP address, together with the limiter's name, as a short-lived cache key used to enforce rate limits; it expires automatically after one minute (one hour for the limit on making share links). Separately, the web server in front of the application (Caddy, on our own server at HostMyServers) keeps access logs, which include the IP address, the exact URL requested (so, which handle's page was visited) and the browser's user-agent, for 12 months; after that, the IP address, the user-agent and the other request headers are removed from them, so that they no longer identify anyone, and they are deleted after 24 months. Cloudflare, which sits in front of the site, also processes these requests. The events of the list above (“Who interacts a lot with you”) carry only counts and the kind of a failure, never an identifier or the text of a post.

People shown in a circle who have not signed in

A circle shows the avatars of the people its owner interacts with. Anyone can view a circle, so Skycle applies these rules to everyone who appears in one but is not its signed-in owner:

  • If you asked Bluesky to hide your content from logged-out users (the “Logged-out visibility” setting, the !no-unauthenticated label), you appear only to the circle's owner, signed in with Bluesky. Everyone else sees a generic avatar without your name, handle or score detail — in the page and in any image exported or posted from it. A page affected this way is kept out of search engines (noindex); an already-exported or already-posted image is not covered bynoindex and can keep circulating.
  • Loading a circle has your browser fetch some images directly from third parties: avatars from Bluesky (cdn.bsky.app) and, for the background, Unsplash (images.unsplash.com). Each of those requests reveals your IP address to that third party, the same way it would for any image on any website — see Sub-processors below.
  • As you type in the search field of the home page, what you type — only once it looks like the start of a handle, 2 to 64 characters — is sent by Skycle's server, not by your browser, to Bluesky's public account search, to suggest matching accounts. Skycle neither logs nor stores it. Accounts that opted out of Skycle, or that hide themselves from logged-out visitors, are never suggested. The suggested avatars are loaded through Skycle's own server, so suggestions do not reveal your IP address to Bluesky.
  • Accounts hidden by Bluesky moderation, and deactivated, suspended or deleted accounts, never appear.
  • Visitors never see you in the circle of someone you block or who blocks you, on Bluesky directly or through a moderation list. When Bluesky cannot confirm this in time, the account is, by default, treated the same as a hidden one for any visitor (shown only to the circle's owner) until a later check succeeds — we would rather hide someone briefly by mistake than show someone who blocks the owner.
  • The history of a circle (past snapshots) is shown only to its signed-in owner, whatever the circle's visibility setting.
  • An account that interacts with someone signed in can appear in that person's “They interact a lot with you” list (see Who interacts a lot with you), and nowhere else: never in a circle, an image or a post, never to anyone but that person. The same rules apply: opted-out accounts, accounts hidden by moderation and blocks are left out, and an account hidden from logged-out users is shown only to the signed-in person it interacts with.

Opting out entirely. You can stop appearing in every Skycle circle at skycle.app/opt-out: sign in with Bluesky to prove the account is yours, then confirm. It takes effect within a minute, in every circle, including circles already computed and their history (each server keeps the list in memory for up to 30 seconds). Once you opt out, your own circle stays visible to you only, signed in with Bluesky; anyone else who opens your page sees a dedicated “circle not available” screen instead (also kept out of search engines), not your friends' data. The share links about your circle are deleted at the same time. You can appear again at any time from the same page.

Opting out does not retroactively rewrite data already recorded. Snapshots stored before your opt-out may still contain your DID until they expire (24 months), but never display you — it is simply never shown again once you opt out, there or anywhere else. Images of a circle that someone already downloaded or posted on Bluesky are theirs: Skycle cannot change them. Skycle keeps the date of your opt-out together with your DID for as long as you stay opted out, even after 12 months without sign-in, so that your choice keeps being honoured. At that point everything else of the account is deleted and the kept row is reduced to exactly your DID and the opt-out date (plus the technical dates the database keeps for any row): your handle, language, preferences and any other setting are erased.

Why we process this data (legal bases)

PurposeLegal basis (GDPR Art. 6)
Creating/updating your account when you sign in, keeping you signed inPerformance of a contract (1.b) — you requested the sign-in
Circle snapshots (history)Legitimate interest (1.f) — keeping a dated copy of your ranking, made only when you open your circle while signed in. It feeds your own history, the alerts you ask for and the list of circles that hold you (public circles only, the last 14 days). It holds public Bluesky data only and is kept 24 months. You can object at any time, or delete your history, via opt-out.
Share links (a circle shared by a short link)Legitimate interest (1.f) — keeping the configuration of a circle (the account, its layout and look, the people hidden) and, since 11 November 2026, the DIDs of the friends it shows, so that a person who asks for a link can share it. It is read again under the rules for a signed-out visitor each time it is opened, counts its views from a browser and is kept 12 months after its last view. You can object at any time, through opt-out: it deletes the links about your circle and takes you off the others; a link can also be reported from its page.
Sharing whose circle you're in (a list shared by a short link)Legitimate interest (1.f) — keeping, on your request, the list of accounts whose circle holds you (their DIDs and exact places) so that you can share it. It holds no name nor picture, is read again under the rules for a signed-out visitor each time it is opened and is kept 12 months after its last view. You can object at any time, through opt-out: it deletes your links and takes you off the links of others.
Community circles (a Bluesky list, starter pack or feed)Legitimate interest (1.f) — showing who interacts the most within a public community, from public data, balanced by the rules in “People shown in a circle” above; a right to object at any time via opt-out, after which you are never read nor shown in any community circle
Showing a circle's public Bluesky data, including third parties' avatars and handlesLegitimate interest (1.f) — generating the visual Skycle is built to produce, balanced by the rules in “People shown in a circle” above
Listing, for a signed-in account, who interacts a lot with it (estimate, via Constellation)Legitimate interest (1.f) — showing a person who interacts with their own public posts, from public data, balanced by the rules in “People shown in a circle” above; a right to object at any time via opt-out, after which no list is built
Circle alerts and their weekly list of the accounts that newly interact a lot with you, by e-mail; filling in the form with your Bluesky addressPerformance of a contract (1.b) — the alerts are a service you ask for: you turn them on and confirm your address (double opt-in), and your Bluesky address is only read if you allow Bluesky to share it with Skycle on its consent screen. You can stop the service at any time: the one-click unsubscribe link of every e-mail, pausing, turning off the weekly list or deleting your alerts on the alert settings page
Technical logs, rate limitingLegitimate interest (1.f) — keeping the service secure and available
Audience measurement (Umami, self-hosted)Legitimate interest (1.f) — cookieless, aggregated, see “Analytics” below

Retention

The periods below are our target retention. Deleting data as it ages out is automatic: scheduled jobs run every day (the 24-month snapshot purge and the 12-month account purge, dormant accounts included) and every 30 minutes (expired sign-in states and sessions).

DataKept for
Account row (DID, handle, preferences, circle look)Target: as long as you sign in at least once every 12 months; deleted (with everything it owns, cascading) after 12 months without a sign-in. Exception: if you opted out, the row is kept regardless (so your opt-out is never lost), reduced to your DID and opt-out date, while your own snapshots and alerts are still deleted
Circle snapshots (friend DIDs, scores, interaction counts)Target: 24 months, or less if the account becomes inactive (see above). A snapshot already recorded by someone else can still mention your DID after you opt out or your account is deleted; it is never shown, and ages out on the same 24-month schedule
Share link (account DID, layout, look, period, number of friends, hidden people, optional title, creator DID if signed in; since 11 November 2026, the DIDs of the friends shown and a view count)12 months after its last view (after its creation if it was never viewed). Deleted at once when the account it is about opts out or deletes its data; the DID of the account that made it is removed from it when that account opts out, deletes its data or is deleted; the DID of a friend is taken off the frozen list when that friend opts out or deletes their data
Link to whose circle you're in (your DID, the DIDs of the accounts in it and their exact places)12 months after its last view (after its creation if it was never viewed). Deleted at once when you opt out or delete your data; the DID of an account in it is removed when that account opts out or deletes its data
Community circle (community name, public profiles of its creator and members, a score per pair of members)24 hours in the cache (5 minutes if it could not be built); a member who opts out is no longer shown within a minute
Session cookie (sid, in your browser)14 days from sign-in; not renewed while you keep using the app
Server-side OAuth session (your tokens)14 days, extended as you keep using Skycle; an abandoned sign-in attempt expires after 1 hour; deleted, and revoked at Bluesky, when you sign out or delete your data
Browser sign-in record (random identifier, DID)14 days from sign-in, never extended; deleted for every browser when you sign out or delete your data
Computed circle (friend DID, handle, avatar URL)24 hours, or 10 minutes for a partially-computed circle
Alert subscription (e-mail address, frequency, weekly list switch, date of the last weekly list, keyed codes of the accounts already named, 500 at most)Until you delete your alerts or your data, 30 days after you unsubscribe, or with your account after 12 months without signing in; an alert 13 months at most
List of the accounts that interact a lot with you (handle, display name, score, interaction counts)24 hours, or 5 minutes if it could not be built; deleted with your data
Bluesky profile lookups24 hours, or 1 hour if the profile could not be found
Handle ↔ DID lookups, block-check results24 hours
Repository event counts and head revision (used to detect changes and compute scores)30 days
Home page example circle (cached, anonymous)30 days
Rate-limiting record (your IP address, per limiter)1 minute (1 hour for the limit on making share links)
Opt-out answers (whether an account opted out), in a server's memory only30 seconds
Background image search results (Unsplash)7 days, cached by search query only, not tied to you
Technical logs of the applicationAt most 12 months (rotated by size, usually much sooner)
Web server access logs12 months, then anonymized (IP address and headers removed); deleted after 24 months

Sub-processors

The following providers process data on our behalf:

ProviderPurpose
HOSTMYSERVERS SARL (France)Hosting of the servers, in datacenters located in France. The database (PostgreSQL), the cache (Valkey), the audience measurement (Umami) and the error tracking run there, operated by us
Cloudflare, Inc. (United States)DNS, TLS and cache of static files in front of the site
UnsplashBackground image search (only when you use that feature); the photos you pick are loaded by your browser from Unsplash
Resend (United States)Delivery of the messages sent through the contact form (your name, e-mail address and message), and of the circle alerts you turned on (your address, the circles entered and the accounts named in the weekly list)
Constellation (microcosm project, a public service)Public index of the links between Bluesky records, asked for who interacts with a signed-in account (on the alert settings page, and once a week for the weekly list of alerts): it receives your DID and the public addresses of some of your posts, from our server, and nothing else (see Who interacts a lot with you)

Donations (PayPal)

The “Donate” link opens PayPal (paypal.me) in a new tab: the page loads no PayPal script or cookie, and nothing is sent to PayPal until you go there. A donation is voluntary and gives nothing in return. PayPal processes it as an independent controller, under its own privacy policy, and shares with us, as the recipient, the name, the e-mail address and the amount of a donation, which stay in our PayPal account and are kept as long as accounting rules require. They are never linked to your Bluesky account or to anything else on Skycle.

International data transfers

Skycle.app's own servers are in France. Cloudflare and Resend are established in the United States, and Unsplash serves the photos you choose from its own servers, so some of your data (your IP address when you browse; the content of a contact message) can be transferred outside the EU/EEA.

Constellation, asked for who interacts with a signed-in account, is run by an independent community project that does not publish where its servers are, so we cannot exclude that a request (your DID, a public identifier, and the public addresses of some of your posts, sent from our server) is handled outside the EU/EEA, and we have no agreement with its operator. Nothing else about you is sent, and it is asked only for a signed-in account that has not opted out.

Cloudflare and Resend are certified under the EU-U.S. Data Privacy Framework (Cloudflare also under its Swiss and UK extensions), which the European Commission recognises as providing adequate protection, and their data processing agreements also include the European Commission's Standard Contractual Clauses (sources: Cloudflare's GDPR page, Resend's data processing addendum of 31 December 2025). Unsplash's privacy policy (last updated 12 September 2022) names no transfer mechanism and says only that it will comply with the GDPR's requirements for adequate protection where they apply. This is why only the words you type in the background search are sent to Unsplash, from our servers and never with your identity, and why the photos you pick are then loaded from Unsplash by your browser, which shows it your IP address, as any website you visit does.

Analytics

Skycle.app used Google Analytics in the past, loaded for everyone before any consent choice — this was not compliant, and it has been removed, along with its cookie banner. We now use Umami, an audience measurement tool that we host ourselves on our own infrastructure: no third party receives the data. It sets no cookie and no persistent identifier. It records the page visited, with the handle or the code the page shows replaced by a placeholder (a /@handle page is recorded as /@[handle], a share link as /c/[code]), the referring site (never the page it came from), your approximate country, device type, OS and browser, and events about how the product is used (a search with its period, a layout or theme change, a download, a post, a starter pack, the time a circle took to appear), which never carry a handle, a DID, a name, a URL or any text you typed. Two of these events are sent by our server itself (an alert e-mail sent, a one-click unsubscription), without your IP address or browser. Your IP address is used to derive the country and a visit identifier that changes regularly, and is not kept in clear. It is only active in production. No consent banner is required for this.

Security

Your session is protected by an encrypted cookie; secrets never appear in logs (redacted automatically); the application only exposes the data described in this policy, through code we control. This does not mean the database and cache are inaccessible to the team operating them — like any hosted service, they have the administrative access needed to run it. No system is perfectly secure, and we cannot guarantee absolute security.

Your rights

Deleting your data yourself. Signed in with Bluesky on the opt-out page, two buttons, each with a confirmation, let you exercise your right to erasure directly:

  • Delete my history deletes every snapshot of your own circle, for every period. Your account and your sign-in stay as they are, so viewing your circle signed in later records a new snapshot, as for any signed-in account.
  • Delete all my data deletes your history, your alert settings, the server-side record of your sign-in (your OAuth tokens) and your account row, then signs you out of this browser. If you opted out of circles, only your DID and the date of your opt-out are kept, so that your choice keeps being honoured; otherwise nothing is kept, and signing in again later creates a new, empty account. Every other browser where you were signed in is signed out at the same time, and your OAuth tokens are revoked at Bluesky. If Bluesky cannot be reached at that moment, the erasure still happens: Skycle deletes its copy of the tokens either way, and Bluesky lets them expire (at most 14 days).

Delete all my data also drops the cache entries about your own account (your computed circles, repository event counts, relations and profile); if the cache cannot be reached at that moment, they expire on their own, within 30 days at most (see Retention). Neither button reaches what is not stored as your data: your DID inside circle snapshots recorded by other people (see opting out above: never shown once you opt out, deleted with those snapshots after 24 months), your name, handle and avatar inside other people's cached circles (24 hours), images of a circle that someone already downloaded or posted, and our hosting provider's request logs. Deleting your data does not stop you from appearing in other people's circles: to stop that too, opt out first.

Under the GDPR, you have the right to access, rectify, erase, restrict or object to the processing of your data, to receive a copy of it (portability), and to stop the alerts at any time. To exercise any of these, email contact@skycle.app — we will act on it without undue delay. You can also lodge a complaint with your national data protection authority; in France, the CNIL (www.cnil.fr).

Changes to this policy

We may update this page; the date at the top and the version history below always reflect the latest change.

Contact

Questions about this policy or your data: contact@skycle.app, or the contact form.

Version history

  • 13 November 2026 — Signing in from the circle editor (#256): the button of its side panel and the one under the notice of a private history only confirm who you are, like the button at the top of the site.
  • 13 November 2026 — Audience measurement (#245): the page address recorded by Umami no longer contains the handle or the code the page shows (a /@handle page is recorded as /@[handle], a share link as /c/[code]), the referrer is reduced to the referring site, and two events are now sent by our server itself (an alert e-mail sent, a one-click unsubscription), without your IP address or browser.
  • 13 November 2026 — Video of the animated evolution (#43): signing in to post a circle also asks, optionally, to let Bluesky's video service save a video in your account. When you allow it, the video goes from our server to Bluesky's video service, which prepares it for playback and saves it in your account before the post appears; otherwise it goes to your account directly, as before.
  • 11 November 2026 — Alerts: their legal basis is now the performance of a contract (GDPR Art. 6.1.b), a service you ask for and can stop at any time, instead of consent; the double opt-in and the one-click unsubscribe stay. New section on donations (PayPal).
  • 11 November 2026 — Logs: the access logs of the web server are kept 12 months as they are, then anonymized (the IP address, the user-agent and the other request headers are removed) and deleted after 24 months; the technical logs of the application are kept 12 months at most, usually much less (rotated by size, erased at each redeployment).
  • 11 November 2026 — Alert retention applied every night (#232): an alert is deleted 13 months after it was queued, and the subscription of an account that unsubscribed (its e-mail address included) 30 days after the unsubscription.
  • 11 November 2026 — Share links are now frozen (skycle.app/c/…): a new link also keeps the DIDs of the friends it shows, in order, and every link counts its views from a browser (one number, link previews excluded), shown to the circle's owner on skycle.app/links, where links can be deleted; a "Report this link" link leads to the contact form; an account that opts out or deletes its data is also taken off the frozen links of others.
  • 11 November 2026 — Sharing whose circle you're in (#66, skycle.app/in/…): what the new table keeps (your DID and the DIDs of the accounts in the link, with their place when it is exact; no names, no pictures), why (sharing the result by a short link, on your request only), its legal basis (legitimate interest, with a right to object through the opt-out page), its retention (12 months after the last view), its erasure (at once with the opt-out and the deletion of your data; an account that opts out is also taken off the links of others), and the blurring of accounts hidden from logged-out users.
  • 10 November 2026 — Alerts, lot 2 (#64): alerts are by e-mail only. Subscribers also get, once a week, the accounts that newly interact a lot with them, found the same way as the list of who interacts a lot with you (Constellation): only names never sent before, never an account that opted out, and an account that hides from logged-out visitors is counted, never named; this weekly list can be turned off in the alert settings, and what it remembers of the accounts already named is a keyed code, not their identifier. Signing in from the alerts page now asks Bluesky for permission to read your account's e-mail address, only to fill in the form: you can refuse it or type another address, and it is stored only if you subscribe with it. Legal basis of the alerts: your consent.
  • 10 November 2026 — Video of the animated evolution (#43): the permission to upload videos, asked when you sign in to post a circle, is now used, only when you post the evolution of your circle as a video. The video is made in your browser, passes through our server to your own Bluesky account with the message, language and description you chose, and is not kept by Skycle.
  • 10 November 2026 — Community circles (skycle.app/community, #46): anyone can draw the circle of a Bluesky list, starter pack or feed. To do so, Skycle's server reads the community's public members from Bluesky's public service, then the recent public interactions (replies, mentions, quotes, reposts, likes of the last 90 days) of at most 150 members, from their own public repositories. It keeps, for 24 hours in its cache (5 minutes if it could not be built), the community's name, the public profiles of its creator and members (handle, name, avatar, labels) and a score for each pair of members who interact; no post. An account that opted out is never read nor shown, and a community made by an account that opted out is not drawn at all; accounts hidden from logged-out visitors are blurred.
  • 10 November 2026 — Share links (skycle.app/c/…): what the new table keeps (a configuration: the DID of the account, layout, look, period, number of friends, the people hidden, an optional title, the creator's DID if signed in; no list of friends), why (sharing a circle by a short link), its legal basis (legitimate interest, with a right to object through the opt-out page), its retention (12 months after the last view) and its erasure (at once with the opt-out and the deletion of your data).
  • 10 November 2026 — Legal basis of circle snapshots confirmed: legitimate interest (GDPR Art. 6.1.f), with the three uses of the copy named (your history, your alerts, the list of circles that hold you), its 24-month retention, and the right to object or to delete your history.
  • 10 November 2026 — Both ways (#44, #52): on your own circle, signed in, the People panel can mark the people of your circle who are also among the accounts that interact the most with you, from the list described under « Who interacts a lot with you ». That list can now also be built when you ask for it in this panel; only the identifiers and scores of its accounts reach the page, for you alone, and nothing more is stored. An account that hides its content from logged-out users is never marked.
  • 10 November 2026 — Who interacts a lot with you (#66): the alert settings page of a signed-in account now also lists the accounts that interact most with it (replies, quotes, reposts, likes, mentions, never follows), including people who never used Skycle. To build this estimate, Skycle's server asks Constellation, the public index of Bluesky links run by the microcosm project (constellation.microcosm.blue), about your public identifier (your DID) and the addresses of your own recent public posts, with no cookie and nothing else about you; it also reads your recent public posts and the profiles of the accounts found from Bluesky's public service. The result (handles, names, scores) is kept 24 hours (5 minutes if it could not be built) and deleted with your data. An account that opted out, that moderation hides, that blocks you or that you block is never listed, and an account that opted out gets no list.
  • 10 November 2026 — Retention and transfers: access logs of the web server are kept for 12 months (the period was left blank); the safeguards for transfers outside the EU/EEA are now named for Cloudflare and Resend (EU-U.S. Data Privacy Framework and Standard Contractual Clauses), and the absence of a named mechanism in Unsplash's policy is stated.
  • 10 November 2026 — Circle alerts (#64): if you turn them on, the e-mail address you give, confirmed by a link, is used only to tell you when you enter a friend's circle; every e-mail can be unsubscribed from in one click, and the address is deleted with your alerts or your data. Resend now also delivers these e-mails. A signed-in account also sees the circles of other Skycle users that hold it (#66).
  • 8 November 2026 — Starter packs (#62) and the look of your circle: signing in to create a starter pack asks Bluesky for the permission to create lists and starter packs (a public list of the people you chose, written in your own repository); the look you give your own circle (colours, thickness, title) is now also saved on your account, so that it follows you from one device to another, and is erased with it.
  • 8 November 2026 — Hosting moved to HostMyServers (France), with the database, cache, audience measurement (Umami) and error tracking self-hosted: the sub-processors, log retention, international transfers and analytics sections are rewritten; the retention purges are now scheduled jobs.
  • 1 November 2026 — Account suggestions (#97): describes what the home page's search field sends to Bluesky's public search as you type, that Skycle neither logs nor stores it, and which accounts are never suggested.
  • 1 November 2026 — Sign-in from the site header (#92, #114): states that this sign-in, like the one on the opt-out page, only confirms who you are, and that Skycle keeps one set of Bluesky permissions per account, not per device: such a sign-in replaces the permission to post granted earlier, even on another device, so the next circle you post asks for it again.
  • 1 November 2026 — Bluesky permissions (#17): each sign-in now asks only for what its feature needs (create posts and upload images to post a circle; your identity alone on the opt-out page), instead of full write access to your account.
  • 1 November 2026 — Session security (#78): signing out, or deleting your data, now signs out every browser and device at once and revokes your OAuth tokens at Bluesky; adds the per-browser sign-in record to the retention table. With this change, everyone signed in before it has to sign in with Bluesky again, once.
  • 1 November 2026 — Self-service erasure (#76): describes the two buttons of the opt-out page, “Delete my history” and “Delete all my data”, what each one deletes (cache entries about your own account included), and what neither can reach.
  • 1 November 2026 — Opt-out follow-up (#75): an opt-out now reaches every circle within a minute (a short in-memory cache) rather than immediately; the row kept for an opted-out account after 12 months without sign-in is now reduced to its DID and opt-out date.
  • 1 November 2026 — Security review follow-up (#35, PR #97): removes the invalid “consent, on by default” basis for circle snapshots (replaced by legitimate interest with a right to object, pending CEO confirmation) and the false “visibility/snapshots can be turned off” claim; fixes the technical-logs section (IP written to the rate-limit cache, Vercel request logs, handle in failure logs); splits the session cookie (14 days, not renewed) from the server-side OAuth session; adds the full cache retention table and an honest note that automatic 12/24-month purges are not fully wired yet (#9); adds per-friend interaction counts and the 100-friend cap to circle snapshots; aligns the opt-out wording with #96 and describes the “circle not available” screen shown to visitors of an opted-out account; softens the Vercel Web Analytics description; reworks the database-access security claim.
  • 1 November 2026 — Full rewrite (#35): corrects the false “does not store any data” claim, describes the real data model (accounts, circle snapshots, OAuth sessions), adds retention periods, sub-processors, international transfers, legal bases and GDPR rights. Google Analytics and its consent banner are removed. Links the self-service opt-out page (#20 part 2) and describes what it does and does not erase; the account-row minimisation it is still working towards is tracked in #75.
  • 19 October 2026 — Third-party privacy rules added (#20 part 1): the !no-unauthenticated label, unavailable accounts and blocks are now respected when a circle is shown to a visitor.
  • 28 March 2024 — Initial publication. Superseded: it inaccurately claimed Skycle stores no data and requires no sign-in.