Privacy Policy for Mobaide
Effective date: 22 May 2026 Last updated: 30 July 2026
This Privacy Policy describes how the Mobaide mobile application ("Mobaide", "the app", "we", "our") collects, uses, stores, and discloses information about you ("you", "user") when you install and use the app on an Android device, and when you use the supporting Mobaide central server hosted at api.mobaide.com.
Mobaide is a developer tool. It lets you remotely interact with Claude Code or OpenAI Codex CLI sessions running on a "Mobaide agent" that you, the user, install and operate on your own workstation. The mobile app communicates with the agent through a relay (the central server) operated by the developer of the app.
1. Who is the data controller?
The data controller is an individual developer publishing the Mobaide app under the trading name "Mobaide":
- Operator: Pavel Timonin (individual developer / sole trader, trading as "Mobaide")
- Contact email:
[email protected] - Privacy contact (same address):
[email protected]
If you are located in the EU/EEA and you believe we have not handled your data correctly, you have the right to lodge a complaint with your local data protection authority.
2. Scope of this policy
This policy covers:
- The Mobaide Android application (package
com.mobaide.app) distributed via Google Play. - The Mobaide central server (
api.mobaide.com) operated by the developer. - The Mobaide website (
mobaide.com).
This policy does not cover:
- The Mobaide agent software you install on your own workstation. The agent runs locally on hardware that you control, processes data on your machine, and stores its configuration (including any third-party API keys you provide it) on your local file system. You are the data controller for any data the agent processes on your own device.
- Claude Code (provided by Anthropic) and Claude CLI sessions. Their data handling is governed by Anthropic's Privacy Policy. When you send prompts to Claude through Mobaide, those prompts are processed by Anthropic according to Anthropic's terms — Mobaide only relays the bytes.
- OpenAI Codex CLI sessions, if you choose to use Codex as your managed agent. Their data handling is governed by OpenAI's Privacy Policy. When you send prompts to Codex through Mobaide, those prompts are processed by OpenAI according to OpenAI's terms — Mobaide only relays the bytes. If you sign Codex in from inside the app, the OpenAI API key you enter is held only in memory on your phone (never written to your device's storage) and relayed to your own agent, where it is handed to the Codex CLI; it is never stored on the Mobaide central server (see Section 3.4). The Codex CLI then saves its own credential file on your own workstation, which is under your control.
- Linear (https://linear.app), when you choose to enable the optional "Auto Scan" integration on your own agent. Linear's handling of your workspace data is governed by Linear's Privacy Policy. Your Linear API key is stored locally on your own workstation by the agent; it is never transmitted to or stored on the Mobaide central server.
3. What information we collect
3.1 Account information
When you create a Mobaide account (or sign in with Google), the central server stores:
| Data | Source | Purpose | Where stored |
|---|---|---|---|
| Email address | You (registration form or Google ID token) | Authentication, password reset, verification emails, security notifications | Central server database (EU) |
| Password hash | You (registration / password reset) | Authentication. Passwords are hashed with Argon2id before storage; the plaintext password is never persisted. | Central server database (EU) |
Google account ID (Google sub claim) |
Google, if you choose "Sign in with Google" | Linking your Google identity to your Mobaide account. We do not store your Google profile name, picture, or any other Google profile field. | Central server database (EU) |
Account role (viewer / admin) |
Assigned by the server | Authorization | Central server database (EU) |
| Email-verification status, timestamps | Server-internal | Verifying you control the email address | Central server database (EU) |
| Hashed email-verification / password-reset codes | Generated by the server | Securing the OTP flows. Only hashes are stored; codes are deleted after 24h. | Central server database (EU) |
3.2 Device & session information
When you pair your phone with an agent, the central server stores:
| Data | Purpose | Where stored |
|---|---|---|
| A random device identifier (UUID) generated by the app at first launch | Identifying the device session for re-pairing and revocation. This is not the Android Advertising ID and is not the device hardware ID — it is a random UUID generated by Mobaide on first launch and persisted in the app's private storage, with the file excluded from Android Auto Backup. | App (private DataStore, backup-excluded) + central server database |
| Optional device name (e.g. "Anna's Pixel") that you can set in-app | Helping you identify your devices in the agent's paired-devices list | Central server database (with possible local cache on the app) |
| Agent identifier, pairing identifier | Routing your traffic to the correct agent | App + central server database |
| Hashed JWT refresh tokens | Keeping you signed in across app restarts | Central server database (hashes only) |
| JWT access & refresh tokens | Authenticating your requests to the central server | App: Android EncryptedSharedPreferences (AES-256-GCM, Android Keystore master key) |
3.3 User content stored on the server
| Data | Purpose | Where stored | Retention |
|---|---|---|---|
| Prompt templates (a name and the body text of each template) | Sync your saved prompts across devices | Central server database (EU) | Until you delete the template or delete your account |
3.4 Real-time traffic that we relay but do not store
When you operate a Claude Code or OpenAI Codex session from the app, the following data is transported through the central server but is not written to disk on the central server:
- Keystrokes you type and terminal output emitted by your agent (Claude Code or Codex session I/O).
- Project and session metadata exchanged between the app and your agent over the WebSocket.
- The OpenAI API key you submit through the in-app Codex sign-in, on its way to your agent. It passes through the server's in-memory routing only and is handed to the Codex CLI on your own workstation; it is never written to the central server's disk, logs, or backups.
The central server acts as a transit relay for this traffic. It forwards bytes between your phone and your agent over an authenticated WebSocket. The traffic is encrypted in transit with TLS (WSS), passes through the server's in-memory routing tables, and is then discarded — it is not appended to any database, log file, or backup. Server-side application logs are emitted at the connection-event level (e.g. "agent X connected", "mobile Y subscribed") and redact message payloads.
3.5 Information stored only on your device
The following information stays on your phone and is not transmitted to the central server:
- Auth tokens (encrypted with the Android Keystore / EncryptedSharedPreferences AES-256-GCM).
- Your "last-used project" / "last-used session" UI state.
- Terminal display preferences (display mode, column count).
- A local cache of Linear labels / states for your project (only if you use the Linear Auto Scan feature on your agent), so the in-app filter pickers can render offline.
3.6 In-app support requests
The app includes an in-app Help & Support screen (reachable from the Login and Settings screens, including when you are signed out). It offers two actions:
- Email support. When you tap "Email support", the app opens your own email client with a message pre-filled to our support address (
[email protected]) (this does not go through the Mobaide central server). The body includes a short diagnostics block to help us troubleshoot: the app version, your device model (manufacturer and model name, e.g. "Google Pixel 8"), the random device identifier (UUID) described in Section 3.2, and — only if you are signed in — your account email address. You can read and edit the whole message before sending, and nothing is sent unless you yourself send the email. If no email app is installed, the app only copies the support address to your clipboard and sends nothing. Support emails are processed by us (and our email-delivery provider) solely to answer your request. - Ask the community. When you tap "Ask the community", the app opens our public GitHub Discussions page in an in-app browser tab. This is a third-party service operated by GitHub, Inc.; the app sends it none of your data. Reading is anonymous; posting requires a GitHub account. Your activity there is governed by GitHub's Privacy Statement.
3.7 Information we do not collect
For transparency, the app does not collect or use:
- Your real name (unless you put it in your prompt-template body yourself).
- Your phone number, address, or any contact details other than the email address you register with.
- Your location (no location permission is requested or used).
- Your contacts, calendar, SMS, call logs, or any other personal-information surface on the device.
- Photos, microphone, or camera input. (QR pairing uses the Google Play Services "Code Scanner" module, which runs in a separate Google Play process and only returns the decoded text of the scanned QR code — Mobaide does not request the
CAMERApermission and never receives raw camera frames.) - Advertising identifiers (Android Advertising ID is not read).
- Crash reports or telemetry from third-party SDKs. The app does not integrate Firebase Analytics, Firebase Crashlytics, Google Analytics, Sentry, Amplitude, Mixpanel, Facebook SDK, or any comparable analytics/tracking SDK.
The in-app support diagnostics described in Section 3.6 are not an exception to the above: they are not collected automatically or in the background. They are assembled only when you tap "Email support", are shown to you in your own email client, and reach us only if you choose to send the message.
4. Permissions used by the app
The app declares the following Android permission, used strictly for its core functionality:
| Permission | Why it is needed |
|---|---|
INTERNET |
Connect to the central server over WSS/HTTPS. |
The app does not declare CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION, READ_CONTACTS, READ_SMS, READ_PHONE_STATE, READ_EXTERNAL_STORAGE, or any other sensitive permission.
5. How and why we use the data — legal bases (GDPR)
| Purpose | Data categories used | Legal basis (GDPR Art. 6) |
|---|---|---|
| Create and authenticate your account | Email, password hash, Google sub |
Art. 6(1)(b) — necessary for performance of the contract you enter into when you sign up. |
| Send email-verification codes and password-reset codes | Email, hashed OTP | Art. 6(1)(b) — performance of the contract; Art. 6(1)(c) — compliance with our security obligations. |
| Sync your prompt templates across your devices | Prompt template content, account ID | Art. 6(1)(b) — performance of the contract. |
| Pair your phone with your agent and route traffic between them | Device ID, agent ID, pairing ID, JWT tokens | Art. 6(1)(b) — performance of the contract. |
| Operational logs (connection events, error events) without payload content | Account ID, agent ID, timestamps, IP address of the requesting connection | Art. 6(1)(f) — legitimate interest in operating, debugging, and securing the service. |
| Detect abuse / brute-force login attempts (rate limiting) | Email, IP address, timestamp | Art. 6(1)(f) — legitimate interest in security. |
| Respond to your in-app support requests | App version, device model, device UUID, and — if you are signed in — your account email, together with the message you write | Art. 6(1)(f) — legitimate interest in providing user support and troubleshooting the app. |
We do not use your data for advertising, profiling, automated decision-making with legal effect, or training machine-learning models.
6. Sharing and disclosure
We do not sell, rent, or trade your personal data. Your information is shared only with the following categories of recipients, strictly for the purposes listed below:
- Hosting / infrastructure providers for the central server (located in the EU/EEA). They process data only on our instructions and under a data-processing agreement.
- Google LLC — only when you choose "Sign in with Google". Google verifies your Google ID token; we receive your email and your Google
subfrom Google's identity service. Google's processing is governed by Google's Privacy Policy. - Google Play services — for distributing the app, delivering in-app updates, and providing the GMS Code Scanner module used for QR pairing. Google Play's processing of installation telemetry is governed by Google Play's terms.
- Email-delivery providers (SMTP transactional email) that send our verification, password-reset, and security-notification emails, and that carry the support emails you send us through the in-app "Email support" action. These providers process the recipient address and the email body strictly to deliver the message.
- Anthropic — when you type a prompt that is routed through your own agent to Claude Code. The content you send to Claude is processed by Anthropic according to Anthropic's Privacy Policy. Mobaide is not a party to your Anthropic relationship; we merely relay the bytes.
- OpenAI — when you choose to use Codex as your managed agent and type a prompt that is routed through your own agent to Codex. The content you send to Codex is processed by OpenAI according to OpenAI's Privacy Policy. Mobaide is not a party to your OpenAI relationship; we merely relay the bytes.
- GitHub, Inc. — when you tap "Ask the community", the app opens our public GitHub Discussions page in your browser. The app does not send GitHub any of your data; anything you choose to post there is provided by you and processed by GitHub under GitHub's Privacy Statement.
- Public authorities, if compelled by a valid legal order and only to the extent legally required.
We do not share your data with advertisers, data brokers, or analytics aggregators.
7. International data transfers
The central server, its database, and its backups are hosted in the European Union / European Economic Area (EU/EEA).
Some of the third parties listed in Section 6 (in particular Google, Anthropic, and OpenAI) may process data outside the EU/EEA. Where such processing occurs, those providers rely on the European Commission's Standard Contractual Clauses (SCCs) or on an adequacy decision to safeguard the transfer. Links to those providers' transfer-impact disclosures are included in Section 6.
8. How long we keep your data
| Data | Retention period |
|---|---|
Account record (email, password hash, Google sub) |
Until you delete your account (see Section 10). |
| Hashed mobile refresh tokens | Until you log out, revoke the device, or the token's "expires at" passes. |
| Hashed pairing tokens | At most 5 minutes (the lifetime of a QR pairing nonce). Tokens that have served their purpose are scrubbed shortly after consumption. |
| Email-verification / password-reset OTP token hashes | Active code: up to its TTL (15 min for email verification, 30 min for password reset). Consumed code: at most 24 hours, then permanently deleted. |
| Prompt templates | Until you delete them, or — if you delete your account — purged together with your account: immediately for Immediate deletion, or at the end of the 14-day grace window for Scheduled deletion. |
| Operational logs (connection-event level, no payload) | Up to 90 days, then permanently deleted. |
| Deletion audit record (account identifier, timestamps, request source and outcome) | Retained indefinitely as a minimal proof-of-deletion record, in order to demonstrate compliance with GDPR Art. 17 ("right to erasure"). |
| Support correspondence (the email you send to our support address and our replies) | Kept only as long as necessary to handle your request and for a reasonable period afterwards, then deleted. |
| Server-side backups | Rolled over within 30 days. |
After account deletion, all directly identifying data (other than the minimal deletion audit record described above) is purged from the live database within 30 days; backup rotations remove it within an additional 30 days.
9. Security
We apply industry-standard safeguards:
- All network traffic between the app, the central server, and your agent uses TLS 1.2+ (HTTPS / WSS).
- Passwords are hashed with Argon2id. Plaintext passwords are never stored, logged, or sent to any third party.
- Pairing tokens, refresh tokens, and OTP codes are stored only as SHA-256 / HMAC-SHA-256 hashes; the raw tokens are not retained.
- Auth tokens on the device are stored in Android EncryptedSharedPreferences under an AES-256-GCM master key managed by the Android Keystore. The app's backup rules exclude both the encrypted auth file and the device-identity DataStore from Android Auto Backup.
- On first QR pairing, the Android app pins the central server's manifest-signing public-key fingerprint (SHA-256). Subsequent pairings against the same relay must match the pinned hash; a mismatch hard-fails and cannot be bypassed by user confirmation.
- The mobile↔server WebSocket and the agent↔server WebSocket authenticate independently with separate JWTs / bearer tokens.
No system is perfectly secure. If we become aware of a personal-data breach that is likely to result in a risk to your rights, we will notify the competent supervisory authority within 72 hours (GDPR Art. 33) and, where required, inform affected users without undue delay.
10. Your rights
If you are in the EU/EEA, the UK, or another jurisdiction with comparable rights, you have the right to:
- Access the personal data we hold about you.
- Rectify inaccurate data.
- Erase your data ("right to be forgotten"). You can delete your account at any time:
- In-app: Settings → Danger zone → Delete account. You pick one of two modes:
- Scheduled (default): a 14-day cancellable grace window. You can cancel via the in-app banner, the web portal, or the one-click cancel link sent in the confirmation email.
- Immediate: an irreversible cascade purge executed synchronously, with no grace window. You will be asked to re-authenticate with your password or a fresh Google sign-in (issued within the last 5 minutes) before the deletion is accepted.
- Web portal: sign in at
https://mobaide.com/portal/account, open Danger zone, and confirm. The same two modes and re-authentication requirements apply. - By email: send
[email protected]a deletion request from the email address registered to your Mobaide account. We will complete the deletion within 30 days and send you a confirmation. - Public information page (no sign-in required):
https://mobaide.com/portal/delete-account-infodescribes the steps and timing. This is also the URL listed on the Google Play "Data deletion" entry.
Once the deletion completes (immediately for Immediate mode, at the end of the 14-day window for Scheduled mode), your account record, paired devices, prompt templates, refresh tokens, and all dependent rows are purged from the live database. A minimal audit record of the deletion request is retained as described in Section 8. - Restrict processing in specific circumstances. - Object to processing carried out under our legitimate interest (Art. 6(1)(f)) — in particular our operational logs. - Portability — receive a machine-readable copy of the data you provided to us. - Withdraw consent at any time (where processing relies on consent). - Lodge a complaint with your local supervisory authority.
To exercise any of these rights, email [email protected]. We will respond within 30 days. We may need to verify that the requester is the account holder before acting.
11. Children's privacy
Mobaide is a developer tool intended for users aged 13 and over, and is not directed at children under 13. We do not knowingly collect personal data from children under 13. If you believe a child under 13 has created an account, please contact [email protected] and we will delete the account and associated data promptly.
In the EU/EEA, the minimum age for consenting to information-society services without parental consent varies by member state (between 13 and 16); if you are below the applicable threshold in your country, you must have your parent's or guardian's permission to use Mobaide.
12. Open-source components
The Android app is built with, among others, the following third-party components. None of them, as integrated, transmits personal data to any party other than as described in this policy:
- AndroidX Jetpack libraries (Apache-2.0)
- Jetpack Compose & Material 3 (Apache-2.0)
- OkHttp (Apache-2.0) — HTTPS / WebSocket transport
- Kotlinx Serialization (Apache-2.0)
- Hilt / Dagger (Apache-2.0)
- AndroidX Security Crypto (Apache-2.0) — EncryptedSharedPreferences
- Google Credential Manager + Google ID (Apache-2.0) — Sign in with Google
- Google Play In-App Update (Apache-2.0)
- Google Play Services Code Scanner (Apache-2.0) — QR scanning
- Termux
terminal-view(Apache-2.0, vendored fork) — terminal renderer - Calvin-LL/Reorderable (MIT) — drag-and-drop reordering
13. Changes to this policy
We may update this Privacy Policy from time to time. When we do, we will change the Last updated date at the top and, for material changes, notify you in-app or by email before the new version takes effect. The current version is always available at https://mobaide.com/privacy.html.
14. Contact
For general questions or support, please email:
For questions about this policy or about your personal data (including exercising the rights described in Section 10), please email: