| Crates.io | sms-server |
| lib.rs | sms-server |
| version | 3.2.0 |
| created_at | 2025-10-13 21:38:17.468447+00 |
| updated_at | 2026-01-22 22:58:01.274958+00 |
| description | SMS server for GSM modem hardware with HTTP/WebSocket APIs, encrypted message storage, delivery tracking, and GNSS location support. Designed for Raspberry Pi + GSM HAT setup. |
| homepage | https://github.com/morgverd/sms-server |
| repository | https://github.com/morgverd/sms-server |
| max_upload_size | |
| id | 1881199 |
| size | 423,989 |
Self-hosted SMS gateway for messaging, GNSS data, and modem control (signal strength, URCs, etc.). Offers database persistence, delivery tracking, and real-time events—no SIM polling needed. Secure, flexible, and efficient.
config.toml file (see Configuration Guide)| Document | Description |
|---|---|
| Configuration Guide | Complete configuration reference with examples |
| Event Types | Available events received via WebSocket or Webhook |
| HTTP API Reference | REST API endpoints for SMS operations |
| WebSocket Guide | Real-time event streaming setup |
The feature code is used in the build version metadata suffix. Eg: 1.0.0#ghtr (GPIO, http-server, tls-rustls).
| Name | Code | Default | Description |
|---|---|---|---|
gpio |
g |
✔️ | GPIO power pin support for automatic HAT power management |
http-server |
h |
✔️ | HTTP server to control the modem and access database |
db-sqlite |
✔️ | SQLite database connection driver (currently only database supported) | |
tls-rustls |
tr |
✔️ | Uses rustls and aws-lc-rs for TLS all connections |
tls-native |
tn |
Uses openssl for http-server (if enabled) and native-tls for all other TLS connections | |
sentry |
s |
Adds Sentry error reporting / logging integration |
An intelligent SMS responder that integrates with OpenAI's ChatGPT API. Receives incoming messages via webhooks, generates contextual replies using conversation history, and responds automatically. Features conversation memory and customizable response templates.
[!NOTE] Possibly the first ChatGPT SMS implementation running directly through cellular modem hardware!
A web-based GPS tracking dashboard that connects via WebSocket to display live position updates. Monitor location accuracy, track movement patterns, and analyze GPS performance in real-time. Accessible from any networked device with a modern web browser.
A Rust TUI that makes it easy to view a phonebook of recent contacts, compose SMS messages, view messages (live updating) and see device info. Uses the sms-client (crates.io) library to interface with this project!
git clone https://github.com/morgverd/sms-server
# Build, with all default.
cargo build -r
# Build with Sentry error forwarding.
cargo build -r --features sentry
# Build without HTTP server, and with GPIO, SQLite and Rust TLS.
cargo build -r --no-default-features -F gpio,db-sqlite,tls-rustls
# Build with native SSL and default features.
cargo build -r --no-default-features -F gpio,http-server,db-sqlite,tls-native
# Show command line help.
./sms-server -h
# Start the SMS server with a config path, can be relative or absolute.
./sms-server -c config.toml
# Start the SMS server with debug logging.
RUST_LOG=debug ./sms-server -c config.toml
You'll need some form of GSM modem that allows for serial connection. I use (and this project has only been tested with) a Waveshare GSM Pi Hat on a Raspberry Pi.
[!TIP] Many SIM cards require carrier-specific APN configuration and network registration before SMS functionality becomes available.