Privacy
No cookies, ads or ad trackers. No automated decisions about you.
Who’s responsible
Shubham, in Sweden. Email hey@devios.dev about anything here.
At a glance
| What | Why it’s allowed | How long | Where |
|---|---|---|---|
| Visit counts | Legitimate interest: knowing which pages are useful | Visitor codes about two days; anonymous daily totals | Cloudflare and Supabase, Stockholm |
| Notes on Visitors: drawing, message, name or Anonymous | Consent, by posting | While shown; declined notes 30 days, unreviewed ones 90 days | Supabase, Stockholm |
| Booking a call | A step you asked for: holding the call | 30 days after the call or its cancellation; an unbooked hold, or a booking that never got its calendar event, a day at most | Supabase, Stockholm; Google; Cloudflare; Stripe, for paid calls |
| Receipts and credit notes for paid calls | A legal obligation: bookkeeping | 7 full calendar years after the year each is issued | Supabase, Stockholm |
| Error reports: message, page, browser and system; no IP address | Legitimate interest: keeping the site working | 90 days without a repeat | Cloudflare and Supabase, Stockholm |
| Map tiles | Legitimate interest: showing the map | Up to OpenFreeMap | OpenFreeMap |
| My retired live sessions: title, opened, last used | Legitimate interest: clearing them on schedule | 90 days from each session’s last use | Supabase, Stockholm |
| LinkedIn recommendations | Legitimate interest: showing what colleagues said | While shown; ask and yours comes down | Supabase, Stockholm |
GDPR Article 6(1): consent (a), contract or a step you asked for (b), a legal obligation (c), legitimate interest (f). Old sessions could be zipped for me; none of those zips is kept, and no session can make one now.
Visit counts
- Daily totals: page, referring site, phone or computer, posts read, projects clicked. Other pages, DevIos IDE’s too, count as one, without addresses.
- Unique visitors: a one-way code of IP address, browser, a secret and the date, with page and time. Recent codes show how many people are here.
Booking a call
- On Book a call: name, email, optional note and topic, time, time zone, reminders sent, and the booking link you came through, if any; the same when I add a call for you.
- Turnstile checks you’re a person. Holds last 5 minutes. A one-way code of your IP address caps daily holds and bookings; holds keep it two days.
- Google Calendar gets your name, email, note and topic, sends the Meet invite, and keeps the event under Google’s policy.
- Cloudflare emails you the booking with a cancel or move link, then reminders a day and an hour before. I get each booking, move and cancellation by email.
- Paid calls: Stripe takes the payment, to ForgueStudio (my sole trader business), by card, wallet, Swish or Revolut Pay, each through Stripe. Your card stays with Stripe. I keep the amount, currency, VAT, your country, any company details, when it was paid or refunded and Stripe’s payment id, deleted with the booking. Stripe gets the call’s time and length, its booking link and the receipt number with the payment, not your name or email from me; it keeps its own record under its policy. Full refund if you cancel 24 hours or more before, or if I cancel.
- Receipts: I email yours, and a credit note if you’re refunded. Each holds ForgueStudio’s details, your name, email, country and company details, the call, amount, VAT, how you paid (card brand and last 4 digits, or Swish’s reference) and Stripe’s id. Bookkeeping law (bokföringslagen) keeps them 7 full calendar years after the year they’re issued, after the booking is gone.
- A company’s VAT number is checked with the EU’s VIES service. For euros and dollars, the server asks the Riksbank for its exchange rate; that carries nothing about you.
Services your browser talks to
Each sees your IP address and browser. Fonts and the rest come from this site.
- Cloudflare: the site, and DevIos IDE’s live-editing server.
- Supabase: the database, images, Visitors notes, DevIos IDE sign-in.
- OpenFreeMap: map tiles.
challenges.cloudflare.com(Turnstile): booking only.js.stripe.com,api.stripe.com,hooks.stripe.comand Link (link.com): paying for a call only. Revolut Pay goes to Revolut and back.github.com,api.github.com,avatars.githubusercontent.com: DevIos IDE only.cjrtnc.leaningtech.com(CheerpJ): the Java runtime, about 13 MB the first time Java opens on a computer or runs. Never your code.pypi.org,files.pythonhosted.org,cdn.jsdelivr.net/pyodide: a Python project’s listed packages. They get names and versions, never code.
Where it’s held
- Supabase: Stockholm. Server code: Cloudflare’s data centre nearest Stockholm.
- Cloudflare keeps error logs 7 days, and no log of each request. It answers from near you, so outside the EU if you are.
- Its Email Service keeps each email’s address, subject and delivery 30 days, with previews off, under its data processing agreement.
- Outside the EU: Anthropic (US), Google, GitHub (US), Stripe (US, for paid calls), PyPI (Python Software Foundation, US), jsDelivr.
Kept in your browser
- Theme, achievements and the week calendar’s ticks.
- In a project: the name, sidebar and signed-out look you last used, and a closed phone tip.
- A Java program’s files, cleared as runs start and end.
- Booking: your last few time zones (
booking-recent-zones). - Paying with Revolut Pay or Swish: the payment you come back to, until the tab closes (
booking-pay-trip). - DevIos IDE’s: below.
None of it leaves your device; clearing site data removes it.
Your rights
Email hey@devios.dev to:
- see your data and get a copy (portability)
- have it corrected or deleted
- limit its use, or object to uses based on legitimate interest
- withdraw consent: delete a note, turn email off, keep my AI off your code
Answers within a month. Visit codes can’t be traced to you. Complaints: Sweden’s data protection authority, Integritetsskyddsmyndigheten (IMY).
DevIos IDE
My invite-only code editor, at /ide; you sign in with GitHub. Outside the group, a demo of made-up data saves and sends nothing.
At a glance
| What | Why it’s allowed | How long | Where |
|---|---|---|---|
| GitHub account: id, username, name, email, picture; joined, last on; colour | Contract | While in the group, and 30 days more if I remove you; a sign-in outside it, 7 days | Supabase, Stockholm |
| Renewable GitHub token | Contract | Until you sign out (a phone: your last sign-in), disconnect or leave, or I pause or remove you; six months at most | Supabase, Stockholm, encrypted |
| 8-hour GitHub token | Contract | 8 hours, cleared within the hour, or as above; the tab’s copy until it closes | Supabase, Stockholm, encrypted; your browser |
| Project files: versions (30 daily, 10 others), Git state, waiting commits; since 12 October 2026, who typed and deleted what, by minute and day | Contract | Until the owner deletes it or leaves without handing it on; 30 days more if I remove the owner | Cloudflare, EU |
| Who opened a project, as whom and when; whose typing is whose; last edit | Legitimate interest: nobody types as someone else | Until the project is deleted, even after you leave | Cloudflare, EU |
| Project record: name, language, description, owner, shares and roles; repository, branch, commit; a publish under way; Git choices; sent-out ids; a signed-in guest’s GitHub username | Contract | Until the project is deleted; sent-out ids until 20 more go; a guest’s username until they join | Supabase, Stockholm |
| A send-out the live-editing server missed | Legitimate interest: keeping people out | Until it’s heard, 30 days at most | Supabase, Stockholm |
| A guest’s name, from a guest link | Consent, by joining | Until the project is deleted | Cloudflare, EU |
| Line notes and replies | Contract | Until the note or project is deleted; private ones, until their author leaves | Supabase, Stockholm |
| Board stories in projects not on GitHub; card order on GitHub boards | Contract; order: legitimate interest | Until the story or project is deleted | Supabase, Stockholm |
| Invites: the friend’s name, a note to me, a project and role; the link’s fingerprint and encrypted copy | Legitimate interest: invite only | Unanswered requests 30 days; unused links 30 days after they end; the rest 30 days after they’re used, declined or taken back | Supabase, Stockholm |
| Inbox | Contract | 30 days from each item’s arrival or last update, read or not | Supabase, Stockholm |
| Inbox emails you turn on | Consent, by turning them on | Not kept; Cloudflare’s record, 30 days | Cloudflare Email Service |
| GitHub’s pull request and issue events for linked repositories | Contract | 7 days from GitHub’s last mention | Supabase, Stockholm |
| Preferences | Contract | While in the group | Supabase, Stockholm |
| Group activity: invites, joins, leaves, project changes, guest links, my settings | Legitimate interest: a record for me | 90 days | Supabase, Stockholm |
| Code my AI reads | Consent, by writing in a project it’s on for | Not stored by me; Anthropic deletes it within 30 days, or 2 years if flagged | Cloudflare, then Anthropic, US |
| My AI’s calls: time, model, tokens, cost | Legitimate interest: a monthly budget | 90 days | Supabase, Stockholm |
The editor can’t work without what’s marked Contract.
Who sees what
- Me (Group page): names, usernames, pictures, who invited whom, join and last-on times, project counts and sizes.
- Your inviter: your name, username, picture, join time.
- A project’s people: each other’s names, pictures, colours, cursors, runs and contributions.
- Invite links: their maker’s name, username and picture. Guest links: first names and colours of those in the project.
- Your email: only you; the server uses it to spot me, and for email you turn on.
I can’t open a project unless it’s shared with me.
Projects
- All code runs in your browser; none is sent away to run.
- Uploads and imports go straight to the live-editing server; uploads hold back likely keys.
- Deleting a project deletes its files at once; one row keeps its id from reuse.
- A guest who signs in from a project moves their typing to that GitHub account.
- The owner’s phone can run a project in an editor’s computer tab.
- In memory only: who’s in a project, 30 seconds; short-address lookups, 10 minutes. Those pages ask not to be indexed.
GitHub
- Tokens work only where the DevIos IDE app is installed and you have access; the renewable one only fetches 8-hour ones.
- Your browser reads repositories you open, and writes only when you act: commits (with your noreply address), pull requests, reviews, releases, issues.
- The server acts as you to check pushes, publish, attach releases, open issues and manage push access. It keeps only repository, branch and commit.
- Nothing deletes a repository or force-moves a branch. It deletes only its publish branch, revoked push access and undone invitations.
- A note sent as a pull request comment becomes GitHub’s; another’s goes quoted, with their first name.
- Revoking the app in GitHub’s settings deletes the kept tokens.
Inbox and email
- A note’s item keeps its first 280 characters; a failed public build’s, five error lines.
- For a repository without a project: only GitHub’s message id, kind and time.
- Email is off until you turn a kind on; it goes to your GitHub email, with one-click off.
My AI
Only I can use it, only where I turn it on. It reads that project’s files, yours too: near my cursor for suggestions, all for questions. It writes only what I accept. Retired /live sessions could also use my Claude subscription; none do now.
Kept in your browser
- Local storage: your sign-in;
ide.blame,ide.testsRunOnSave,ide.dontAsk;ide.ownClients, your typing ids (last 200). ide.reviewed: Cursor-look Review ticks, as fingerprints; 30 days, or until the lines change.- Guests:
ide.guestPasses(last 20, 30 days each), name, a closed note. ide.knownMember: a signed-out member’s first name, username, colour, and whether to sign them back in.- IndexedDB
devios-git: History’s GitHub cache, per account; unused parts 30 days, all of it until sign-out. - Session storage, until the tab closes:
ide.githubTokenand return notes.
Only guest passes are sent, back to the site.
Leaving
Leaving (on Account) first offers your projects as a download. Projects others use go to someone you pick, or are deleted; the rest are deleted. Shared notes, stories, typing and the people you invited stay, under “a former member”. Private notes, inbox, preferences, tokens and account go at once; your sign-in after 7 days. You’re signed out everywhere. If I remove you, your account and projects wait 30 days for you to download.
Credits
- Map data © OpenStreetMap contributors(Open Database Licence).
- Tiles: OpenFreeMap (OpenMapTiles schema, Positron styles). Map: MapLibre GL JS (BSD 3-Clause).
- Icons: Lucide (ISC). Fonts (SIL Open Font Licence): Geist, Geist Mono, Inter, Inter Tight, IBM Plex Sans and Mono, JetBrains Mono, Fira Code, Space Grotesk.
- C and C++: LLVM’s clang, wasm-ld and libc++, built by YoWASP, with wasi-sdk (Apache 2.0 with LLVM Exceptions; notice).
- Java: CheerpJ by Leaning Technologies (Community License); Eclipse Compiler for Java (EPL 2.0).
- Technology logos belong to their owners.
Last updated 16 October 2026.