Every automation project hits the same wall: OTP verification.
You're building a bot, a scraper, an automation tool — and then you need to verify an account. GitHub, Google, Discord, OpenAI... they all want a code sent to your email.
Your options:
otp-gateway reads OTP codes directly from your inbox via IMAP.
pip install otp-gateway
No API keys. No external services. Just IMAP.
from otp_gateway import OTPGateway, OTPConfig
config = OTPConfig(
imap_email="you@gmail.com",
imap_password="your-app-password",
domain="yourdomain.com",
)
gw = OTPGateway(config)
alias = gw.generate_alias("github")
print(alias) # "github-a7k2m3@yourdomain.com"
result = gw.wait_for_otp(alias, timeout=90)
print(result["value"]) # "847291"
otp-gateway wait user@domain.com
In automation, every dependency is a risk:
otp-gateway uses only Python's standard library. Copy the otp_gateway/
folder into your project and it works.
$ otp-gateway wait github@yourdomain.com
⏳ Waiting for OTP at github@yourdomain.com...
✅ OTP found: 847291 (GitHub)
$ otp-gateway check --email user@domain.com --since 5m
$ otp-gateway alias github
github-a7k2m3@yourdomain.com
GitHub, Google, Discord, OpenAI, Anthropic, DeepSeek, AWS, Azure, Vercel, Netlify, Cloudflare, DigitalOcean, HuggingFace, Stripe, and 15+ more. The pattern library is easily extensible.
pip install otp-gateway
MIT licensed. PRs welcome.
If you build automation tools, give it a try. If you find it useful, a star on GitHub means a lot.