Privacy Policy
Pythilo has no account, no analytics, no advertising and no tracking, in the app or on this website. Your projects stay on your device. This policy explains, in detail, the few cases where data leaves it.
Last updated 5 November 2026
Who we are
Pythilo, the app for iPhone and iPad, and the website at pythilo.com are made and run by Serhii Ziborov (“we”, “us”). For the few personal data described here, we are the controller. You can reach us at support@pythilo.com.
Summary
- No account, no analytics, no ads, no tracking. Neither the app nor the website contains analytics, advertising, crash-reporting or tracking code, and neither sets cookies.
- Your code stays on your device. Pythilo runs Python on the device. Your projects, lesson progress and settings are stored there and never sent to us.
- The network is used when you ask for it: installing packages, Git, code you run yourself, shared rooms and connecting an AI client.
- Shared rooms are end-to-end encrypted. Our relay sees encrypted text and the technical data needed to deliver it, keeps it in memory only, and forgets it when the room closes.
- The website's web server keeps standard access logs for its pages (not for rooms), to run and protect the site.
App: data on your device
The app stores the following on your device only. We do not receive any of it.
| What | Where it is kept |
|---|---|
| Your projects, including files from rooms you joined and packages you installed | The app's Documents folder, visible in the Files app |
| Lesson progress, your code for each lesson, and your lab code | The app's private storage |
| Settings, including the Git name and email and the room name you enter | The app's private storage |
| Git access tokens for HTTPS remotes | The iOS Keychain, on this device only, available only while it is unlocked, not synced |
| Temporary files for running code and rooms | The app's caches, deleted when no longer needed |
If you back up your device with iCloud or a computer, the backup includes the app's data under Apple's or your own backup terms. Deleting the app deletes its data from the device. Pythilo does not use iCloud or any server of its own to store your data.
App: when it uses the network
Pythilo works offline. It reaches the network only for the actions below, each started by you. When it does, the service you reach receives what any internet connection reveals, such as your IP address, plus what the action needs, and handles it under its own privacy policy.
| You… | The app contacts | What is sent |
|---|---|---|
install a Python package (pip, the Packages screen) | The Python Package Index (pypi.org and files.pythonhosted.org), or an index you name | Requests for the packages and their metadata |
install a JavaScript package (npm install) | The npm registry (registry.npmjs.org) | Requests for the packages and their metadata |
| clone, fetch, pull or push with Git | The Git server whose address you entered | Repository data, your commits (which carry the Git name and email you set), and, for private repositories, the username and token you saved for that host |
| run your own code or use the terminal to fetch something | Whatever your code or command contacts | Whatever your code or command sends |
| open your local site in the web preview | Your server on this device; the page may load resources from the internet (for example, FastAPI's /docs loads Swagger UI from a CDN) | Ordinary web requests made by the page |
| share a project as a link | Nothing: the files are packed into the link itself, after the #, which browsers do not send to servers. Whoever you send the link to can read the files | Nothing, until you send the link to someone |
| create or join a shared room | Our relay at pythilo.com | Encrypted room data. See Shared rooms |
| connect an AI client | Nothing on the internet; the client on your computer connects to the device over your local network | See AI clients |
Shared rooms and the relay
A shared room lets you work on a project with other people, browsers or AI clients. Room data passes through our relay, which is part of the pythilo.com website.
What is end-to-end encrypted
File names and contents, edits, your display name, cursors and selections, which devices can run code, run requests and their results (output, errors, timings, and the device and Python version they ran on) are encrypted on your device with AES-256-GCM before they are sent. The key is in the part of the room link after #, which browsers and the app never send to a server. We cannot read this data.
What the relay does see
- The room's random id, when it was created and when it expires, and the size and timing of encrypted messages.
- Random ids for each connection and message, how many participants are connected, and access tokens (we store only their hashes).
- Your IP address, used while a request is handled. To limit abuse, the relay keeps a keyed hash of the IP address for as long as a room you created lasts, and a hash of it for about a minute to count how many rooms it creates. These stay in memory.
How long
Rooms are held in the relay's memory only, never written to disk, and deleted when the owner ends them or their time runs out (between one and 24 hours, as the owner chose). A restart of the server deletes every room.
What other participants see
Everyone in a room can decrypt it. They see the files, your edits and cursor, your display name (the room name from Settings, else the first word of your Git name, else the device's name), your device model and Python version if your device can run code, and the results of code your device ran for them. Joining copies the room's files to each participant's device, where they stay after the room ends. Share links only with people you trust.
AI clients on your network
When you connect an AI client (such as Claude Code or Codex) from the Playground tab, the app runs a small server on your device that the client on your computer reaches over your local network. Nothing passes through our servers. While sharing is on, the client can, within the permissions you set, read the shared project's files and problems, edit them, run them, install packages and use Git; it receives your project name, device model, Python version, file contents, run output, Git status and diff, and the remote's address. It never receives your Git tokens.
The connection uses a fresh token each time and ends when you stop sharing. It is unencrypted HTTP on your local network, so use it on networks you trust. The AI client and its provider handle what they receive under their own terms and privacy policies, which may include sending your code to the provider's servers.
App permissions
Pythilo asks for one permission: Local Network, used to let an AI client on your network connect to the device and to open local web servers. It does not ask for, or use, your location, contacts, photos, camera, microphone, health data or advertising identifier.
Apple, TestFlight and the App Store
Pythilo is distributed by Apple. Apple processes your data under its own privacy policy when you download apps, buy them, or use TestFlight. If you take part in the TestFlight beta, Apple shares with us what TestFlight provides to developers, such as the name and email address you were invited with (for invited testers), the build and device you use, crash reports and usage sessions, and any feedback and screenshots you choose to send. If you allow your device to share analytics with app developers, Apple may also give us aggregated usage and crash data. We use this only to fix and improve Pythilo.
The website
pythilo.com offers lessons, interactive labs and a playground that run Python in your browser with Pyodide, the room relay, the guide and this information. It has no account, no cookies, no analytics, no advertising, and loads no fonts, scripts or images from other sites: everything, including Pyodide, is served from pythilo.com. Python you run on the site runs in your browser, not on our server; like any program it can make its own network requests.
The site is served from a server we rent from Hetzner Online GmbH. Its domain's DNS is hosted by Vercel Inc. Support, privacy and security emails are forwarded by Forward Email to our Gmail inbox; Forward Email and Google process messages you choose to send under their own policies.
Website: storage in your browser
The site saves the following in your browser's own storage so your work survives a reload. It is not sent to us, and you can delete it at any time by clearing this site's data in your browser.
| Storage | What |
|---|---|
| Local storage | Lesson and lab progress and your code for each lesson or lab; your playground display name; whether to keep playground drafts |
| IndexedDB | Up to 32 playground drafts (source code, name, date). Room keys and permissions are never written here |
| Session storage (until the tab closes) | Owner and view tokens for rooms you created, and which folders you opened |
A room link contains its key. In a browser, the full link sits in the address bar and your history; anyone who gets it can join the room until it ends.
Website: server logs
The web server records a standard access log for page and file requests: your IP address, the date and time, the page path requested, the response status and size, request duration and your browser's user-agent string. Query strings and referring pages are not stored. Requests to the room relay and to room pages are not written to the access log. An error log records problems with requests, which can include the IP address. We use logs only to keep the site running and secure, and we do not combine them with other data. Logs are kept for up to eight days, with earlier rotation when a log reaches 64 MB.
Legal bases
Where the EU or UK General Data Protection Regulation applies, we process the data described here because it is necessary to provide what you ask for (delivering rooms you create or join, Article 6(1)(b)), and for our legitimate interests in running a secure and reliable service and preventing abuse (server logs and rate limits, Article 6(1)(f)). Data shared with us through TestFlight is processed for our legitimate interest in fixing and improving the app.
Who we share data with
We do not sell or rent personal data, and we do not share it for advertising. Our hosting provider (Hetzner Online GmbH) and DNS provider (Vercel Inc.) process the technical data needed to run the website and relay. If you email us, Forward Email delivers the message to our Gmail inbox, operated by Google; do not include secrets or private room links unless needed for your request. We may disclose information if the law requires it, and only what we hold, which for rooms is encrypted text we cannot read.
How long we keep data
- Room data: in memory until the room ends, at most 24 hours.
- IP-based abuse limits: in memory for the lifetime of the room, or about a minute.
- Server logs: see Server logs.
- TestFlight information: for as long as Apple makes it available to us.
Your rights
Depending on where you live, you may have the right to access, correct or delete personal data about you, to object to or restrict its processing, to data portability, and to complain to a data protection authority. Most of the data described here never reaches us, and what does (server logs, rate-limit hashes) does not identify you by name. To make a request, contact us at support@pythilo.com. Data stored on your device or in your browser is under your control: delete it in the app, in the Files app, by deleting the app, or by clearing the site's data in your browser.
Children
Pythilo is a tool for learning and writing code and is not directed at young children. Because neither the app nor the website collects personal data for us, we do not knowingly collect personal data from children. If you are below the age at which you can consent to online services in your country, use Pythilo with a parent's or guardian's permission, and do not join rooms with people you do not know.
Security
The website and relay are served only over HTTPS. Rooms are end-to-end encrypted, access tokens are stored as hashes, and the relay keeps nothing on disk. Git tokens stay in the iOS Keychain. Code you run in Pythilo runs with the app's access to your projects; only run code you trust (see What runs on iOS).
Changes to this policy
If the app or website starts handling data differently, we will update this policy before the change takes effect and change the date at the top.
Contact
Questions or requests about privacy: support@pythilo.com. See also the Terms of Use and Support.