Privacy Policy
PlainMote (plainmote.link, the “Service”) is operated by xwvike (“we”). This policy describes the information we collect when you use the Service, how that information is used and stored, and the rights available to you.
Key points
- The Service displays no advertising, uses no analytics or tracking tools, and does not sell user information.
- When you sign in with GitHub or Google, the Service reads your public profile only and does not obtain your email address.
- When content is accessed through a share link, the Service records the visitor’s IP address, approximate location and browser information, and this record is visible to the creator of the link.
1. Information we collect
1.1 Account information
When you sign in with GitHub, the Service reads only your public GitHub profile and stores your GitHub user ID, username, display name and avatar URL; it does not obtain your email address, repositories or any other GitHub data. When you sign in with Google, the Service requests only your basic profile and stores your Google account ID, name and profile picture URL; it does not obtain your email address or any other Google data; see section 9, “Google user data”, of this policy. The Service does not store the access tokens granted by the sign-in provider. On the Sign-in methods page you can link the other sign-in method to the same account or unlink it, keeping at least one; accounts created with different methods are never merged automatically.
1.2 Sign-in state
After you sign in, the Service uses a cookie to keep you signed in. A sign-in remains valid for 30 days and ends immediately when you sign out.
When you sign a device in with the command line tool, the Service keeps a sign-in credential for that device and records the device name, operating system and version reported by the command line, together with the time of sign-in and the time and IP address of its most recent use. This information is shown on the Authorized apps page so that you can review and revoke signed-in devices. A command line sign-in remains valid for 90 days and ends immediately when it is revoked on the Authorized apps page or signed out from the command line. While a sign-in is pending, the Service temporarily records the IP address that requested it, so that you can check it on the confirmation page; the request lapses once confirmed or after 10 minutes and is deleted in the next routine cleanup.
When you authorize an AI app to access your account through MCP, the Service records the app’s name and origin and the time of authorization, together with the time and IP address of its most recent use; share links created through the app also record the name of the app that created them. This information is shown on the Authorized apps page so that you can review and revoke authorized apps. An authorization lapses after 30 days without use and ends immediately when it is revoked on the Authorized apps page.
1.3 Content you store
This includes the body and earlier versions, name, filename and similar details of the resources you create, together with the note, validity period, use limit, use count and revocation status of your share links. Resource bodies are held in Cloudflare R2 object storage in encrypted form. We are technically able to access this content, but do so only to diagnose faults, handle abuse reports or where required by law. If you set a master password, you can turn on end-to-end encryption for a resource: its body, earlier versions, name and filename are encrypted in your browser before upload, and the Service stores only the ciphertext and neither stores nor can obtain the keys needed to decrypt it, so it cannot see the content. The size, update times, share link status and access records are not encrypted.
If you set a master password, the Service stores key material generated and encrypted by your browser: your account key encrypted with the key derived from the master password, the same account key encrypted with the recovery key, the parameters of the derivation, and, encrypted with the account key, the key of each piece of encrypted content and the key or code of each share link. The master password and the recovery key are never sent to the Service, and the Service cannot obtain from this material the master password, the recovery key or any content you encrypt. When you open or create encrypted content with the command line tool, the master password is likewise used only on your device, and the command line tool does not store it.
1.4 Share link access records
Whenever content is requested through a share link, whether the request is served or refused, the Service creates an access record containing network request information such as the time, outcome, IP address, browser and device information, referring page and requested address. Access records also include an approximate location estimated from the IP address, to the level of country or region, first-level administrative division and city. The location is estimated by the network provider at the time of access and may not match the actual location; the Service does not obtain more precise location information.
Access records belong to the owner of the resource, who can view them on the Access history page. Consequently, when you open a link sent to you by someone else, the creator of that link can see your IP address, approximate location and browser information. Requests made by messaging applications to generate link previews are recorded in the same way.
1.5 Quick shares
Quick shares on the home page can be created without an account. The Service stores the text or file and the filename you submit (or, with end-to-end encryption, only the ciphertext; see the third paragraph of this section). The link expires after at most 30 days, after which the related content is deleted. The Service does not record the IP address of the person who creates a quick share. A quick share created while signed in (including one created with the command line tool) belongs to your account: it appears under My resources, counts toward your account’s storage and is deleted when its link expires. Before then you may convert it into a resource, after which it is kept as described in section 1.3.
Access records for quick shares created without signing in do not belong to any account and cannot be viewed by any user; if the creator signs in and saves such a quick share to their resources, its existing access records are transferred to that account. Access records for quick shares created while signed in belong to the creator, are handled as described in section 1.4 and are kept after the quick share is deleted.
Signed-in users who have set a master password can choose end-to-end encryption when creating a quick share on the home page or with the command line tool. Such a quick share is encrypted in your browser before it is uploaded, as end-to-end encrypted resources are: the Service stores only the ciphertext and neither stores nor can obtain the key or code needed to decrypt it. The key or code of the share link is stored encrypted with your account key, so that only you can see it again after unlocking with your master password. Where the key travels in the link, the Service cannot read, recover or review the content; where a four-character code is used instead of a key, the small number of possible codes means that anyone holding the ciphertext could recover the content by trying them all, and this offers weaker protection. The size of the content and access record information such as the time of access and IP address are not encrypted and are handled as set out above for quick share access records. The encryption and decryption code is provided by the Service, and its security depends on the integrity of the code the Service delivers; the source code of the Service is published at https://github.com/xwvike/plainmote and can be checked.
1.6 Data export records
When you export your data, the Service records the time of the export solely to limit how often exports can be made, and deletes the record after 24 hours.
1.7 Cookies
The Service uses only cookies that are strictly necessary to provide it: to keep you signed in, to secure sign-in and form submissions, and to remember your chosen interface language and light or dark appearance. They are not used for tracking or advertising. Apart from these, only after you unlock with your master password does the Service keep a key that cannot be exported in the browser’s site storage, deleting it once it has been idle for the time you set or when you sign out; the Service does not otherwise use browser local storage.
2. How we use information
We use the information above only to: provide the Service, including sign-in, content storage and delivery, and displaying access records to resource owners; maintain the security of the Service and investigate and address abuse; and diagnose and fix faults. We do not use this information for advertising, profiling or training machine learning models, and we do not sell it.
The operator manages the Service through an administration interface. It provides only metadata about accounts and resources (such as the username, the sign-in methods and their account IDs, resource name, filename, type and size, the number and state of share links, whether an account has set a master password and whether a resource is encrypted) and aggregate statistics; it does not provide resource content, share link addresses, any key material or visitor information from access records. Actions taken through it, such as suspending an account or taking down or deleting a resource, are recorded with the time, the object, the reason and the source IP address of the action.
3. How we share and disclose information
- GitHub: signing in with GitHub redirects you to GitHub for authorization, and that process is governed by GitHub’s privacy policy.
- Google: signing in with Google redirects you to Google for authorization, and that process is governed by Google’s privacy policy.
- Google Fonts: page fonts are provided by Google Fonts, and when they load, your browser sends information such as your IP address to Google.
- Cloudflare: resource bodies are stored in Cloudflare R2, and Cloudflare’s privacy policy applies.
- AI apps you authorize: unencrypted content read by an app you have authorized is sent to that app and to the AI model provider it uses, and is processed under their respective privacy policies. Such transfers take place with your authorization, which you can revoke at any time; encrypted content is not made available to apps in readable form.
- Infrastructure providers: providers of network transport and other infrastructure for the Service may process related technical data in the course of providing their services.
Except as described above or as required by law, we do not disclose your information to any third party.
4. How we store information
- Account information: retained for as long as the account exists, and deleted immediately when the account is deleted. When a sign-in method is unlinked, its account ID, name and avatar URL are deleted immediately.
- Master password key material: retained for as long as the account exists, and deleted immediately when the account is deleted.
- Sign-in state: ends on expiry or sign-out.
- Command line sign-ins: deleted immediately on revocation or sign-out, and in routine cleanup after expiry; sign-in requests lapse once confirmed or on expiry and are deleted in routine cleanup.
- Authorized apps: deleted immediately on revocation, and in routine cleanup after they lapse.
- Data export records: deleted after 24 hours.
- Resources and share links: retained until you delete them. Deleting a resource also deletes its body, its earlier versions and all of its share links.
- Earlier versions of resources: when the content of a resource is replaced, the previous content is kept as an earlier version. Each resource keeps at most 10, each for at most 30 days from when it was replaced; when storage runs short, the versions replaced longest ago are deleted sooner. You may delete any earlier version at any time.
- Records of administrative actions: retained indefinitely, so that the operator’s actions can be reviewed. Deleting an account or a resource does not delete the records of actions taken on it.
- Access records: deleted automatically after 30 days. Deleting a resource does not cause its access records to be deleted earlier.
- Quick shares: deleted after the link expires; once converted into a resource, kept as resources are.
Deleted data may remain in short-term backups and is removed when the relevant backups expire.
5. Your rights
- When signed in, you may view, modify and delete your resources and share links at any time, and view their access records.
- You may export your data from the Data page. The export contains basic account information, stored files and their earlier versions, and access records; share link addresses and settings are not included. Encrypted content is exported as ciphertext together with the key material needed to decrypt it, which remains protected by the master password or the recovery key; when you export after unlocking with your master password in the browser, the browser decrypts it and saves it as plaintext. Each account may export up to 2 times every 24 hours.
- You may delete your account from the Data page. The account and its resources, share links, access records and other associated data are removed from the active Service, links already sent stop working immediately, and the data cannot be restored through the Service; short-term backups are cleared as described above.
- If you are unable to sign in, you may email [email protected] with your username and how you sign in to request account deletion or a copy of your data; we may ask you to demonstrate control of that sign-in account, and will process the request within 30 days of receipt.
- If you are not a user of the Service but your IP address appears in another user’s access records, you may contact us to request deletion of the relevant records.
- You may revoke the Service’s authorization in your GitHub or Google account settings at any time. This does not affect your account; you will be asked to authorize again the next time you sign in.
6. How we protect information
We take reasonable technical and organisational measures to protect your information, but no security measure is completely infallible. A share link serves as the access credential, and anyone who holds it can retrieve the corresponding content; please send links only to their intended recipients.
7. Children
The Service is not directed at children under the age of 14. If you believe that a child has provided personal information to the Service, please contact us so that it can be deleted.
8. Changes to this policy
When this policy is revised, we will update the date at the top of this page. If a revision expands the scope of information collected or its use, we will state this on this page before the revision takes effect.
9. Google user data
This section sets out how the Service accesses, uses, stores, shares and deletes Google user data when you sign in with Google.
- Data accessed: the Service requests only the
openidandprofilescopes, through which it obtains your Google account ID, name and profile picture URL. The Service does not request your email address and does not access your Gmail, Contacts, Drive, Calendar or any other Google data. - Use: your Google account ID is used to identify your account so that you can subsequently sign in with the same Google account. Your name is used as your username on the Service; it is displayed only on pages visible to you, and the operator can view it through the admin interface. Your profile picture URL is stored as part of your account information and included in your data exports; it is not displayed on any page. This data is used solely to provide sign-in and is not used for advertising, profiling or training machine learning models.
- Storage: this data is stored in the Service’s database for as long as Google sign-in remains linked to your account. The Service does not store any token issued by Google, including access tokens and ID tokens.
- Sharing and disclosure: the Service does not sell, rent, transfer or disclose Google user data to any third party, except as required by law.
- Deletion: you may unlink Google sign-in on the Sign-in methods page (at least one sign-in method must remain) or delete your account on the Data page, whereupon this data is deleted immediately. You may also revoke the Service’s access at any time on the Third-party apps & services page of your Google account; revoking access does not delete data already stored by the Service, which can be deleted as described above.
The Service’s use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.
10. Contact us
If you have any questions about this policy or your personal information, please email [email protected].