Edsger

Privacy Policy

Last updated: October 9, 2026

Edsger (formerly lilC; “we”, “the app”) is a programming environment for iPhone and iPad, with a matching C copy in the web browser. You write C, Python, JavaScript or Lua in an editor and run it on your device. The app includes on-device AI and optional cloud AI features described below. This page is the public copy of the policy also summarized in Settings.

1. Data we collect

Edsger does not require an account and does not collect your name, email, contacts, location or advertising identifiers. We do not use analytics, crash reporters, or advertising SDKs. Your code, chats and photos stay on your device unless you choose an optional cloud feature (Dijkstra, BYOK, GitHub, image generation, cloud execution, quizzes or worksheets), in which case only the data described in section 4 is sent for that request. These pages do not set cookies or load third-party scripts.

2. Data stored on your device

On iPhone, source files you create are stored in the app’s Documents folder. Theme, editor, and agent preferences are stored in UserDefaults. Agent conversation history and EDSGER teaching chats are stored on the iPhone. In the browser copy, files and theme stay in this browser (IndexedDB / localStorage). With local models, we do not receive those files or conversations. If you choose BYOK cloud models on iPhone, the sharing described below applies.

3. How we use data

Local files are used to let you edit, run, share, and ask the on-device agent to work on programs. EDSGER chat history is used to continue your local learning conversations. Preferences are used to control the app’s appearance and agent mode.

4. Sharing

We do not sell or rent personal data. Edsger runs C on-device with PicoC and runs its optional AI agent and EDSGER tutor on-device with a bundled model. Local models do not send your code, questions, or conversations to a cloud AI. On iPhone you may optionally bring an OpenAI or Anthropic (Claude) API key in Settings → BYOK. Before loading or testing a model, you must explicitly allow sharing with that provider. When you select it for Chat or Agent IDE, your prompts, photos you attach in Chat, relevant conversation context, imported document passages, project code, and tool results are sent directly from your device to your chosen provider. Your personal API key authenticates those requests with that provider. Edsger’s servers do not receive your BYOK key, prompts or responses. The chosen AI provider processes requests under its policies. Provider retention and abuse-monitoring policies still apply; local-only privacy does not apply to these cloud requests.

Provider policies: OpenAI, Anthropic. We do not sell or rent your data to these providers.

Dijkstra Super Fast (Edsger Pro, optional): Dijkstra runs only after you turn on “Allow sharing with Dijkstra.” For each request, your prompt, photos you attach in Chat, relevant conversation context, imported document passages, project code and tool results are sent over HTTPS to Edsger’s service on Cloudflare, which forwards them to DeepSeek’s API to generate the reply. DeepSeek processes them under the DeepSeek privacy policy and may store data on servers outside your country, including in the People’s Republic of China. Edsger’s service does not store prompts, photos, code or replies. To check your membership and allowance, the app sends your Apple-signed subscription transaction; the service confirms it with Apple and keeps a usage record per subscription (an anonymous Apple transaction ID, billing period, amounts used and request IDs). It does not receive your name, email or Apple Account. Usage records are kept while the subscription is active and for up to 13 months afterward for billing disputes, then deleted. Local runtimes and math stay on your device. Optional cloud execution is covered below.

Chat note (Edsger Pro, optional): anything you write in the Chat note, such as reply preferences or facts about yourself, is saved only on your device. It is included with each Chat request you send to Dijkstra or to a model you connected with your own API key, and it is handled the same way as the rest of that request. It is never sent with on-device AI or IDE agent requests. Clear the note anytime to stop sending it.

Photos in Chat (Edsger Pro, optional): you choose each photo with Apple’s photo picker, so the app never gets access to your photo library. Before anything is sent, the photo is resized and re-encoded on your device, which removes location and camera details. It is saved with your conversation on this device and deleted when you delete that chat. When you send it, the photo goes with that Chat request to Dijkstra or to the model you connected with your own API key, and up to the three most recent photos in a conversation are included with follow-up questions. Edsger’s service does not store photos. On-device AI cannot read photos.

GitHub (Edsger Pro, optional): if you connect a GitHub account in Home → Git, you sign in on GitHub’s own website and authorize Edsger there. Only the files you select, the repository name, its private or public setting, and your commit message are sent directly from your device to GitHub when you tap Push. Edsger’s servers do not receive your GitHub access, files or account details. Nothing is sent to GitHub until you push, and files on GitHub are never deleted by the app. Repositories you push to are stored by GitHub under GitHub’s privacy statement.

Images in Chat (optional membership feature): after you separately allow sharing with OpenAI, Dijkstra can request an image when you ask for one or when a visual directly helps your stated goal. Only the image description and fixed generation settings go through Edsger’s service on Cloudflare to OpenAI; your Apple transaction and personal BYOK keys do not go to OpenAI. OpenAI performs content filtering and moderation under its own policies. Descriptions are queued briefly and erased from Edsger’s queue before dispatch. Completed images are private, accessible through your verified subscription, and retained on Edsger’s servers for up to 30 days. A separate billing journal keeps only a request digest, provider request identifier, status and usage for up to 30 days; it contains no description or pixels. Saved images remain with your Chat on this device. Deleting a Chat queues server-image deletion for the next connected, authenticated request; the retention limit still applies if deletion cannot be sent. Withdrawing sharing permission stops new generation requests but does not cancel a generation already accepted by the service. OpenAI’s own retention policies still apply.

Cloud execution (optional membership feature): after separate permission, the selected project snapshot, entry point, language and standard input go over HTTPS through Edsger’s verified gateway to a separate Cloudflare execution service. A fresh isolated instance runs the project with no outbound network access and no Apple transaction, model key or other Edsger credential in the program’s environment. Working files are destroyed when execution ends, is stopped or reaches its hard time limit. Edsger processes source, input and output transiently and keeps request identifiers, limits and usage metadata for accounting; source and output are not written to service logs. Results return to the app for its console or isolated offline preview. On-device runtimes do not send files to this service.

Practice quizzes and worksheets (optional): creating practice requires separate permission to send generated questions, choices or expected answers and explanations to Edsger’s tool service on Cloudflare for deterministic rendering. The renderer does not receive your original source document, conversation, personal provider key or Apple transaction, and calls no AI model. Question generation uses your selected local model, Dijkstra or BYOK with that model’s existing permissions and billing. Quiz rendering uses the membership gateway; free worksheet rendering uses a separate rate-limited service without a receipt. Tool content is processed transiently. Saved practice, your written worksheet answers and review progress stay on this device and work offline. Exporting or sharing sends the selected file to the destination you choose.

5. Tracking

Edsger does not track you across apps or websites. We do not use the App Tracking Transparency prompt because we do not track.

6. Children

Edsger is a general-audience coding tool. It is not directed at children under 13. We do not knowingly collect personal information from children.

7. Your choices

You can delete an individual file from Home → Delete and erase local files from Settings. You can turn off Agent Mode in Settings. You can delete EDSGER conversations from its chat history. You can turn off “Allow sharing with Dijkstra” in Settings → Membership at any time; new requests then use on-device AI. In BYOK settings you can withdraw provider sharing consent or remove a saved API key. Withdrawal stops new AI requests; it cannot recall data already sent. Removing the key does not revoke it at the provider or erase data already processed there. Revoke keys or request deletion with the provider if needed. In Git you can disconnect GitHub at any time, even without an active membership; this deletes the access token from this device. To revoke Edsger’s access on GitHub itself, use “Manage access on GitHub” or GitHub Settings → Applications. Repositories you pushed stay on GitHub until you delete them there. Uninstalling Edsger removes its local files, agent history, and EDSGER chats from this device. iOS Keychain entries may survive uninstallation; remove your BYOK keys before uninstalling or revoke them with the provider.

8. Security

On-device C programs run in a constrained interpreter; optional cloud programs run in separate isolated instances. system() is disabled. BYOK keys are stored in the iOS Keychain, accessible only while the device is unlocked, without iCloud synchronization or migration to another device. Keys are not saved in preferences or chat history. The GitHub access token is stored the same way and is sent only to GitHub’s API; your GitHub password never passes through the app. Cloud connections use HTTPS, fixed provider destinations and disabled redirects. Do not put API keys or other secrets in prompts, source files, or documents sent to AI. Provider account identifiers and API credentials are processed directly by the selected provider.

9. Purchases

The editor, on-device language runtimes and on-device AI are free. Edsger Pro and Edsger Pro Plus are optional monthly subscriptions sold through Apple; Apple processes payment and we never receive your payment details. Dijkstra, image generation and cloud execution share one monthly membership allowance. BYOK API usage is billed separately by the provider; consumer ChatGPT or Claude subscriptions do not include API billing. Edsger does not sell API credits or collect provider payments through BYOK.

10. Contact

Questions or privacy requests: garrettiswoodside@gmail.com. The project is at github.com/garrettmichae1/lilc.

11. Changes

If this policy changes, we will update the date above and the in-app copy.