Home / Privacy
Privacy policy
Pulse Mail is a free, open-source desktop Gmail client. It runs on your computer. There is no Pulse Mail account and no Pulse Mail server. This page describes what Google user data the app asks for, how that data is used, where it sits, and how to take it back. It matches the current code in the public repository.
Who is responsible
Pulse Mail is maintained by Abdallah Saber as an independent MIT-licensed project. Contact is through GitHub issues — there is no support email for this project.
Google user data the app accesses
When you click Sign in with Google, Pulse Mail starts Google’s OAuth 2.0 installed-app flow (authorization code + PKCE, loopback on 127.0.0.1) and requests exactly these scopes (see src-tauri/src/auth/oauth.rs):
https://mail.google.com/— read, compose, send, and permanently delete all your email from Gmail. Pulse Mail uses this to sync mail over the Gmail REST API and to authenticate IMAP (XOAUTH2). IMAP IDLE is how new mail can toast within seconds; Google’s IMAP docs require this scope. In the UI, delete moves a thread to Gmail Trash via the Gmail API (threads.trash), not a silent bypass of Trash.openid— OpenID Connect so the app can call Google’s userinfo endpoint after sign-in.profile(theuserinfo.profilescope) — your Google account name and profile photo, shown in the account switcher. The photo is downloaded once, sniffed as a raster image, capped at 256 KiB, and stored as a data URL in the local database. The bearer token is not sent to the photo host.
The app does not request other Google scopes (Drive, Calendar, Contacts, and so on).
How that data is used
Only to run the email client you see:
- list, search, open, send, reply, forward, archive, star, label, and trash mail;
- keep an IMAP IDLE connection so the tray can notify you of new mail;
- extract one-time codes from messages you already received, and put “Copy code” on the notification if you left that on;
- show which Google account is signed in.
Pulse Mail does not use Gmail data for advertising, analytics, credit, or training machine-learning models. It does not sell data. It does not transfer Google user data to a developer-operated server — there isn’t one.
Where it is stored
- Refresh token — OS credential store only, via the
keyringcrate, servicecom.abdallah.pulsemail, entryrefresh-token:<email>. On Windows that is Credential Manager; on macOS, Keychain; on Linux, Secret Service. It is never written to SQLite, log files, or the UI. - Access token — process memory only, wrapped so it cannot be printed. It expires in about an hour and is refreshed locally.
- Mail cache — a SQLite file named
pulse-mail.dbin the app data directory (Windows:%APPDATA%\com.abdallah.pulsemail\; macOS:~/Library/Application Support/com.abdallah.pulsemail/; Linux:~/.local/share/com.abdallah.pulsemail/). Saved attachments live under anattachmentsfolder next to it. The cache is not encrypted at rest. It relies on your OS user account (and BitLocker / FileVault / LUKS if you use them). - OAuth client id/secret — either a local
google-oauth-client.jsonyou provide, or values compiled into official GitHub installers. Those are Google Cloud desktop-client credentials, not your mailbox. Desktop clients are public-by-design; PKCE protects the sign-in flow.
Network: who the app talks to
HTTPS only. Endpoints:
- Google:
accounts.google.com,oauth2.googleapis.com,gmail.googleapis.com(REST and batch),imap.gmail.com,openidconnect.googleapis.com(userinfo), and the HTTPS photo host Google returns on your profile. - This project’s GitHub Releases (
github.com/abdallahsaber065/pulse-mail) for optional self-update. That path carries installer metadata and binaries, not your mail.
No telemetry, crash reporter, or third-party analytics SDK. Adding any other endpoint is a product decision documented in the repo, not something the running app sneaks in.
This website
The pages at pulsemail.abdallahsaber.eu.cc are static files deployed with GitHub Pages. They set no cookies, store nothing in your browser, and load no analytics or ads. GitHub, as the host, may process connection logs under GitHub’s privacy statement. We do not receive those logs.
What we do not do
- No Pulse Mail backend, accounts, or remote mailbox.
- No selling or renting Google user data.
- No advertising, retargeting, or data brokers.
- No using your mail to train AI models.
- No humans reading your mail as part of providing the app. (If you file a GitHub issue, only paste what you are willing to make public.)
Google API Services User Data Policy — Limited Use
Pulse Mail'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.
In practice that means Gmail data is used only to provide the user-facing mail client described above, is not transferred except as needed to talk to Google on your behalf (send, sync) or as the law requires, and is not used for ads.
Revoke Google access
- In Pulse Mail: avatar → Sign out. The app revokes the token at Google (best effort), deletes it from the OS credential store, and deletes that account’s cached mail and saved attachments.
- On the web, any time: Google Account → Third-party access → Pulse Mail → Remove access. After that, sign out in the app as well so the local cache goes away.
Delete local data
Sign out (above) removes that account’s token and cache. To wipe everything Pulse Mail stored on this computer, also delete the app data directory listed under “Where it is stored” and uninstall the app. Uninstalling the app by itself may leave the data directory in place — delete it if you want it gone.
Children
Pulse Mail is a general-purpose email client. It is not directed at children.
Changes
If how the app handles Google user data changes, this page will change in the same repository and keep an effective date at the top. The running app’s behavior is whatever version you installed.