Rust script that keeps a Grindr account always "online"
  • Rust 80.6%
  • Shell 19.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-13 23:18:05 +01:00
src Apply uniform distribution with location jiggle 2026-07-13 21:03:41 +02:00
.env.example Initial commit 2026-06-12 14:03:37 +02:00
.gitignore Update README and .gitignore 2026-06-12 20:36:20 +02:00
build.sh Add cross platform build script 2026-06-12 20:36:46 +02:00
Cargo.lock Decrease max limit of random interval from 15 to 10 minutes to never go offline 2026-07-07 16:02:34 +01:00
Cargo.toml Decrease max limit of random interval from 15 to 10 minutes to never go offline 2026-07-07 16:02:34 +01:00
LICENSE Initial commit 2026-06-12 14:03:37 +02:00
README.md Decrease max limit of random interval from 15 to 10 minutes to never go offline 2026-07-07 16:02:34 +01:00

grindr-always-online

Rust script that keeps a Grindr account always "online" by sending a GET /v4/cascade request at random intervals (210 min apart). Automatically changes location by ~5m each request to improve grid rankings. Powered by grindr.rs.

Configure

  1. Clone the repository or download a release from Forgejo releases.
  2. Set your credentials
# Google OAuth not supported
export GRINDR_EMAIL="m@example.com"
export GRINDR_PASSWORD="yourpassword"

# https://geohash.softeng.co/, must be 12 characters
export GRINDR_GEOHASH=""

export GRINDR_DATA_DIR="/var/lib/grindr-always-online"

Or put them into .env and load:

set -a; source .env; set +a

Or use systemd's EnvironmentFile=:

[Unit]
Description=Grindr Always Online
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
DynamicUser=yes
StateDirectory=grindr-always-online
WorkingDirectory=/var/lib/grindr-always-online
EnvironmentFile=/etc/grindr-always-online/.env
Environment="GRINDR_DATA_DIR=/var/lib/grindr-always-online"
ExecStart=/opt/grindr-always-online/target/release/grindr-always-online

Restart=always
RestartSec=30

NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/grindr-always-online
ReadWritePaths=/etc/grindr-always-online
ReadWritePaths=/opt/grindr-always-online
ReadOnlyPaths=/boot
ReadOnlyPaths=/srv
ReadOnlyPaths=/usr

[Install]
WantedBy=multi-user.target

Run

cargo run --release          # loop forever at random intervals
cargo run --release -- once  # fire a single request and exit

The login session and device identity are cached in session.json and device.json in the data directory, so it only logs in on the first run.

License

MIT

Donate

hloth.dev/donate