Skip to content

Repository files navigation

📬 InboxSwipe

Tinder-style triage for your Gmail. Swipe through your entire mailbox — left to keep, right to delete, down to unsubscribe — then bulk-delete in Gmail when you're ready.

demo

Nothing is deleted by the app. Swiping applies Gmail labels (Swipe/Delete, Swipe/Unsubscribe); you review and delete in Gmail yourself with one search. Fully reversible until that moment.

Light Dark
light dark

How it works

  • Syncs metadata for all your mail (newest first) into a local SQLite database — sender, subject, snippet, date. Message bodies never leave Gmail.
  • You swipe. Decisions are stored locally and flushed to Gmail as labels in batches.
  • In Gmail: search label:Swipe/Delete → select all → delete. Done.
  • Undo any decision. Sender-level stats warn you when you've already marked a sender for unsubscribe.

Self-hosting

This is a personal, self-hosted tool — you run it, pointed at your own Gmail, with your own free Google Cloud credentials. How?

Requirements

  • Docker (or Node.js 20+ to run without it)
  • A Google account and 15 minutes for Google Cloud setup

Run (Docker)

git clone https://github.com/PakshP/InboxSwipe.git
cd InboxSwipe
cp .env.example .env    # fill in your Google credentials
docker compose up -d

Run (without Docker)

Requires Node.js 20+:

npm install
cp .env.example .env
npm start

First-time setup

Then from the machine running it (or through an SSH tunnel — ssh -L 3000:localhost:3000 user@server):

  1. Open http://localhost:3000/oauth/login and connect your Gmail
  2. Click Sync (a full first sync of a large mailbox takes ~1 hour due to Gmail API quotas; it's resumable and runs in the background)
  3. Swipe

After the first login, daily use works from any device that can reach the server — the OAuth redirect only matters for the login step.

Access from anywhere

Want to use your instance away from home (and reconnect Gmail from your phone)? See docs/public-hosting.md.

Keyboard shortcuts

keep · delete · unsubscribe · U undo

Privacy

  • Metadata only, stored in SQLite on your machine
  • Talks exclusively to Google's Gmail API — no third-party services, no telemetry
  • Your OAuth credentials and token live in .env / local DB, gitignored

License

MIT

About

Tinder-style Gmail triage: swipe to keep, delete, or unsubscribe. Self-hosted, privacy-first.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages