A self-hosted GitHub bot that automatically follows back your followers and unfollows users who don't follow you back — with smart bot filtering and rate limiting built in.
| Job | Schedule | Action |
|---|---|---|
| Follow | Daily at 09:00 UTC | Follows back anyone who follows you but you don't follow back |
| Unfollow | Daily at 18:00 UTC | Unfollows anyone you follow who doesn't follow you back |
Both jobs run automatically once deployed — no manual intervention needed.
Before following anyone back, the bot checks their profile and skips them if:
- Their account type is
Bot - Their username ends with
[bot] - Their account is less than 30 days old
- They fail 2 or more of these checks:
- No public repositories
- No bio
- No followers
This keeps your following list clean and human-only.
The bot is designed to stay within GitHub's unofficial limits:
- 5 second delay between each follow/unfollow
- 10 minute cooldown every 50 actions
- Max 100 actions per run
- Follow and unfollow jobs run 9 hours apart — never at the same time
Click Fork at the top right of this page.
- Go to GitHub Settings → Developer Settings → Personal Access Tokens
- Click Generate new token (classic)
- Give it a name like
github-orbit - Check the
user:followscope - Copy the token
- Go to render.com and sign up (free)
- Click New → Web Service
- Connect your forked repo
- Set the following:
| Field | Value |
|---|---|
| Environment | Node |
| Build Command | npm install |
| Start Command | npm start |
- Add environment variables:
| Key | Value |
|---|---|
GITHUB_TOKEN |
your token from step 2 |
GITHUB_USERNAME |
your GitHub username |
- Click Deploy
That's it. The bot will start and run on schedule forever.
Once deployed, visit your Render URL to see the bot status:
{
"bot": "github-orbit",
"user": "yourusername",
"status": "idle",
"lastFollow": "2024-01-15T09:00:00.000Z",
"lastUnfollow": "2024-01-15T18:00:00.000Z",
"schedule": {
"follow": "daily at 09:00 UTC",
"unfollow": "daily at 18:00 UTC"
}
}github-orbit/
├── src/
│ ├── server.js # Express server + cron scheduler
│ ├── github.js # GitHub API helpers + bot filter
│ ├── followJob.js # Follow-back logic
│ └── unfollowJob.js # Unfollow logic
├── .env # Local env vars (never commit this)
├── .gitignore
├── package.json
└── README.md
- Never commit your
.envfile — it's in.gitignore - The token only needs
user:followscope — nothing else - The bot will never follow/unfollow more than 100 users per run
- Render's free tier keeps the service alive 24/7
MIT