loading version...
About Proton Pulse
Proton Pulse is a compatibility platform for playing Windows games on Linux and Steam Deck. It runs its own report submission, moderation, and audit pipeline; scores every report against your hardware; syncs configs across devices; and ships a Steam Deck plugin that writes launch options directly from Gaming Mode. ProtonDB reports are one of several inputs that feed the site, alongside Steam Web API data, native Pulse Reports, and Deck / Machine / SteamOS verification metadata. Everything on top of that is Proton Pulse.
The main pages stay focused on finding a game and reading its reports. This page covers what the project is, where its data comes from, and how it compares to ProtonDB.
/data/{appId}/. Scriptable, scrapeable, forkable. No API key required.Proton Pulse consumes several public datasets and layers its own scoring, submission, and moderation on top. Each ingest runs on its own schedule via the open data pipeline.
Steam sign-in, not OAuth
We use Steam OpenID 2.0. Steam sends back three pieces of profile data: your 64-bit Steam ID, public display name, and avatar URL. Nothing about your library, friends, purchases, or email.
Sign-in exists so reports can be tied to a real Steam account. That makes tier scores honest (no throwaway votes) and lets you edit or withdraw your own reports later.
Library and wishlist matching is a separate pull. It fires the first time you land on the profile page (library) or tap the "On wishlist" browse chip (wishlist), then only when you tap Refresh. Steam only returns anything when your Steam profile visibility is set to Public -- Friends only or Private returns nothing and nothing is cached. Details in the Steam Library wiki.
Delete anytime, reports go anonymous
Delete your account from the profile page at any time. It runs immediately, no email step. Everything that identifies you is removed: avatar, Steam ID, auth record, and saved system profiles. The compatibility reports you left behind are anonymized instead of destroyed, so tier scores stay accurate for everyone else. This is the GDPR right to erasure.
One caveat: a report's free-form notes are kept as part of that anonymized record, so do not put personal information in the notes field.
Read the code
Prefer to read the code? Here are the files:
- Sign-in flow: steam-callback edge function
- Erase flow: admin_erase_user migration
- Full policy: privacy.html
Automated scanning
Every push and pull request runs through
CodeQL static analysis (XSS, injection, auth bypass),
Semgrep with OWASP + TypeScript rulepacks (SAST coverage for the Deno edge functions),
Syft-generated SBOMs scanned by Grype against NVD for supply-chain coverage,
Dependabot for known dependency CVEs, and
npm audit gating on high/critical vulnerabilities.
Issue attachments are hash-checked against
VirusTotal.
Security hardening
The site ships a Content Security Policy restricting script and connection sources. All edge functions enforce per-IP rate limiting. Database access uses Row-Level Security so users can only modify their own data. Internal auth tokens are derived via HMAC-SHA256.
Pen testing and standards
Manual security audits are conducted against OWASP Top 10 and CWE Top 25. Full findings, CWE references, and fix verification are documented on the Safety wiki. Report vulnerabilities via GitHub Security Advisories.
Vulnerability disclosure policy
The full disclosure policy lives in SECURITY.md. It covers scope, response SLA (acknowledge within 72 hours), and safe-harbor language for good-faith research. The same policy mirrors to the Decky plugin repo.
Backup restore drill
Backups are HMAC-signed and pushed to a private mirror on every schema change. Every 90 days a scheduled workflow files a drill issue against the runbook so the restore path is exercised against a scratch Supabase project. A backup that has never been restored is not a backup.
A key to every badge and mark you'll see across the site.
| Feature | Proton Pulse | ProtonDB |
|---|---|---|
| Edit your own reports | Yes, at any point after submitting | No |
| Delete your own reports | Yes, at any point after submitting | No, admin only |
| Fix or withdraw a pending report | Yes. Your report is yours from submission onward. | No. Mods can't see the pending queue; you can only ask for removal after it publishes. |
| Hardware context per report (GPU, driver, Proton version) | Yes, full spec capture | Partial, self-reported text |
| Filter reports by your GPU / driver | Yes | No |
| Hardware-aware compatibility scoring | Yes, weighted algorithm | No, flat tier only |
| Vote on configs (upvote / downvote) | Yes | No |
| Open data / JSON API (no key required) | Yes, all data public | No, closed |
| Source code | GPL-3.0 open source | Closed source |
| Direct apply configs to Steam (no copy/paste) | Yes, via Decky plugin | No |
| Submit reports without leaving game | Yes, via Decky plugin | No |
| Playtime tracking per config | Yes | No |
| Non-Steam game support (GOG, Epic, Heroic) | Yes | No |
| Report confidence score | Yes, documented | Yes |
| Browse without an account | Yes | Yes |
| Report approval turnaround | A daily pipeline auto-approves clean reports. An admin can approve one on demand if you can't wait. Edits to an already-approved report re-enter the same flow. | Manual batches by one person, a day or two, sometimes longer |
| Moderation tools | Auto-moderation runs on every submit. Admins can also flag a report or hide a whole game. | Admin removes reports on request |
| Fix wrong or missing box art | Paste a URL or drop in a file. It's live on the site right away, no pipeline wait. | No, whatever Steam shows is what you get |
| Data pipeline | Rebuilds every few hours in shards, so one broken shard doesn't tank the whole run. Every run's history is public. | Manual publishing step by one maintainer |
Proton Pulse is an open-source, community-owned compatibility platform for Steam on Linux, licensed under GPL-3.0. Everything lives on GitHub: the data pipeline, hardware reports, voting system, scoring algorithm, and this site. Fork it. Self-host it. Audit it. Contribute.
There is no private API, no proprietary backend, no data you can't see. Every Pulse Report
ships as static JSON under /data/{appId}/. The scoring algorithm is
fully documented and runs client-side so you can verify it
yourself. Upvotes and downvotes surface the most helpful configs.
Pulse Reports come from the Decky Loader plugin and capture real hardware specs, Proton versions, launch options, and outcomes from actual gameplay sessions. Reports merge with other open compatibility datasets so the picture keeps getting sharper.
Repositories:
proton-pulse-web - data pipeline, static site, and JSON API
decky-proton-pulse - Decky Loader plugin for Steam Deck