Legal

Privacy Policy

How OpenCode Mobile — Unofficial handles data. Last updated: 19 October 2026.

This is an unofficial third-party client for opencode. It is not published by the opencode project. This page covers the iOS and Android apps only — not your opencode server, and not the opencode project.

Snapshot

Kind Where it lives When
Connection password Device only (iOS Keychain / Android Keystore-backed storage) Always
Host, username, profile names Device only (ordinary local storage) Always
Session cache, drafts, themes, diagnostic log buffer Device only Always
Prompts, messages, files The opencode server you configured, plus on-device cache copies Always
Crash reports and automatic diagnostics Google Firebase, release builds Always on release builds. No in-app switch.
Product usage events Google Firebase, release builds On by default. Turn off in Settings → Privacy. Clear All Data turns it back on.
Feedback you send (message, optional screenshot and log) Google Firebase (US) and a private GitHub repository, release builds Only when you tap Send in Report a problem
Advertising ID / ads Not used —

Who we are

Ivan Fenenko publishes OpenCode Mobile — Unofficial as an independent client. The apps have no account system and do not relay traffic to your opencode server.

On this device

Connection passwords stay in iOS Keychain or Android Keystore-backed storage. Host, username, display name, and related profile fields stay in ordinary on-device storage.

The apps also keep session and message cache, unsent composer drafts, theme and display preferences, and a rolling diagnostic log buffer on the device. Diagnostic Logs in Settings are a share-sheet export. They are not uploaded automatically. Redaction is heuristic, not a guarantee.

Settings → Clear All Data removes this local data and resets the product-usage switch to on.

Your server

Prompts, messages, attachments, and project content you send through the app go to the opencode server you configured. That traffic and any server-side logging are outside this policy. Delete that content on the server.

Sent to us

Release builds include Firebase Crashlytics and Firebase Analytics. Debug builds do not include this Firebase runtime and send nothing to us.

Crash reports and automatic diagnostics have no extra switch. They can include device and OS information, app version, crash stack traces, Firebase installation / app-instance identifiers, and automatic lifecycle events such as first open and session start. Automatic screen / page-view reporting is disabled. Advertising ID is not collected for ads or ad personalization. That is not the same as “no device identifiers.”

Product usage events are optional and on by default. When the Settings → Privacy switch is on, release builds may send product_screen_view and product_user_action. Parameters are short enum IDs (screen, action, presentation, trigger, outcome, and similar flags). Connection-edit events are IDs such as “edited password,” not the URL or password itself. These events do not include prompts, file contents, or credential values. Turn the switch off and those events do not fire. Crash reporting stays on.

Feedback you send

Settings → Send Feedback and Session Chat → ⋯ → Report a problem open a form for a bug report or an idea. Nothing is sent until you tap Send.

A report contains:

  • Your message and whether it is a bug or an idea.
  • A screenshot, if you leave it attached. From Session Chat the app captures the screen when you open the form. You can cover parts of it before sending, and covered parts are blacked out in the uploaded image. From Settings you can pick one from Photos.
  • A diagnostic log for the last 5, 15 or 60 minutes, if you leave it attached. It is redacted on the phone: URLs, IP addresses, host:port pairs, port numbers, the connection's host and profile name, and a custom username are masked. Redaction is heuristic, not a guarantee. You can preview the log before sending.
  • App and device details: platform, app version and build, OS version, device model and language setting.
  • Which screen you reported from, the server's API version (v1 or v2) and opencode version.
  • A random anonymous Firebase user ID created for sending reports, and a Firebase App Check token that shows the report came from an App Store or Google Play copy of the app.

A report never includes your server address, username, password or profile name, or your prompts, messages or files.

Release builds store the report and its attachments in Google Firebase (Cloud Firestore and Cloud Storage, in the United States, us-central1). A Firebase function then files it as an issue in a private GitHub repository that only the maintainers can see. The issue holds the message, the app and device details above, and the last 50 lines of the redacted log. The screenshot stays in Firebase.

Debug builds do not send reports. They open the system share sheet instead, and you choose where it goes.

Why

To keep the apps working, find crashes, see which screens or actions fail, and fix the problems and ideas you report. Not for advertising. Data is not sold.

Who processes it

Crash and product-usage data is sent to Google Firebase (Crashlytics and Analytics) so those services can run. Google may process that data on servers outside your country.

Feedback reports are stored in Google Firebase (Authentication, App Check, Cloud Firestore, Cloud Storage and Cloud Functions, in the United States) and filed as issues in a private GitHub repository. There is no other recipient and no sale of data.

How long

Developer-held diagnostics follow the Firebase project defaults.

Feedback reports, screenshots and logs in Firebase are deleted automatically after 90 days. The anonymous user ID used to send them is deleted after 30 days. The GitHub issue for a report is kept as long as it is needed to work on the report, or until you ask for it to be deleted.

Your choices

  • Settings → Privacy → Product Analytics turns optional usage events off or on. The switch starts on. Crash reporting does not change.
  • Settings → Clear All Data removes local app data and turns Product Analytics back on.
  • Settings → Diagnostic Logs lets you share a local log window. Nothing is sent until you share it.
  • Report a problem is optional. Remove the screenshot or the log before sending to leave them out.

Deletion

The apps have no accounts, so there is no account to look up. Email digitalpotatoapps@gmail.com with the subject “OpenCode Mobile data deletion” and whatever you can share: app version, OS, approximate crash time, and a Firebase installation ID if you have one. For a feedback report, include the reference shown after sending (for example “Ref 1F0DE9”). Identifiable diagnostics and reports we control will be deleted. A complete wipe is not guaranteed.

Content on your opencode server is outside this process. Delete it there.

Children

The apps are for people 18 and over and are not directed at children.

Changes

The date at the top moves when these practices change.

Contact

Questions about this policy: digitalpotatoapps@gmail.com