httpSMS: Turn Any Old Android Phone Into a Free SMS Gateway

By Prahlad Menon 3 min read

Have an old Android phone collecting dust in a drawer? It’s about to become your free SMS gateway.

httpSMS is an open-source project that transforms any Android device into a programmable SMS gateway. You get a simple HTTP API to send and receive text messages - no Twilio subscription, no virtual number fees, just your existing carrier plan.

GitHub: NdoleStudio/httpsms
Docs: docs.httpsms.com

Why This Exists

The creator, originally from Cameroon, built httpSMS because many countries don’t support virtual phone numbers. If you can’t buy a Twilio number in your region - or you just don’t want to pay per-message fees - this solves the problem.

How It Works

Your App → HTTP API → Push Notification → Android Phone → Carrier SMS
                                              ↓
                                     Incoming SMS → Webhook → Your App
  1. Call the API with your message
  2. Firebase Cloud Messaging pings your Android phone
  3. Phone sends the SMS via its normal carrier connection
  4. Incoming messages get forwarded to your webhook

The Stack

  • API: Go + Fiber, runs on Cloud Run (or self-hosted Docker)
  • Web UI: Nuxt + Vuetify
  • Android App: Native Kotlin
  • Database: CockroachDB (or Postgres for self-hosting)
  • Push: Firebase Cloud Messaging

Key Features

End-to-End Encryption
Messages encrypted with AES-256. The key stays on your phone - even the server can’t read your SMS content.

Rate Limiting (Back Pressure)
Set limits like “3 messages per minute” to avoid carrier abuse detection. Even if you queue 100 messages, they’ll send at your configured rate.

Message Expiration
Set timeouts for time-sensitive messages. If the phone misses a push notification and can’t send in time, you get notified instead of sending a stale message.

Webhook Forwarding
Every incoming SMS hits your webhook endpoint. Build auto-responders, 2FA verification, or chatbots.

Quick Start

// Sending an SMS with the Go client
client := httpsms.New(httpsms.WithAPIKey("your-api-key"))

client.Messages.Send(context.Background(), &httpsms.MessageSendParams{
    Content: "Your verification code is 123456",
    From:    "+18005550199",  // Your Android phone's number
    To:      "+18005550100",
})

Clients available for Go and JavaScript/TypeScript.

Self-Hosting

Full Docker setup available:

git clone https://github.com/NdoleStudio/httpsms.git
cd httpsms

# Configure Firebase, SMTP, Cloudflare Turnstile
cp api/.env.docker api/.env
cp web/.env.docker web/.env
# Edit .env files with your credentials

docker compose up --build

You’ll need:

  • Firebase project (for push notifications + auth)
  • SMTP server (for notification emails)
  • Cloudflare Turnstile (for captcha protection)

Alternatives

httpSMS isn’t the only option in this space:

Use Cases

  • 2FA/OTP delivery for your app
  • Appointment reminders for small businesses
  • IoT alerts from sensors/devices
  • Transactional notifications without per-message fees
  • SMS automation in regions without virtual number support

The Bottom Line

If you’re building something that needs SMS and you’re tired of paying Twilio $0.0079 per message (plus monthly number fees), httpSMS is a legitimate alternative. Grab that old Android phone, install the app, and you’ve got an SMS API.

The tradeoff: you’re responsible for uptime. Phone dies? No SMS. But for side projects, internal tools, or regions where virtual numbers aren’t available, this is a solid open-source solution.


httpSMS is AGPL-3.0 licensed. Star count: 3.6k+ on GitHub.