A Rust-based TUI for sending and receiving SMS messages live through your own hardware.
- sms-server (crates.io) - SMS server for Raspberry Pi with database storage.
- sms-client (crates.io) - Rust library for remote server interfacing.
- Smart Phonebook - Recent contacts, friendly names with editing, and lazy loading.
- Live Messaging - Send multipart messages and receive updates in real-time.
- Device Monitoring - View modem connection info and signal strength.
- Delivery Reports - Track when recipients receive your messages.
- Theme Support - Multiple built-in themes with customization options.
- Easy Installation - Simple setup with
cargo install. - Highly Configurable - Via command line arguments, config file, or both.
- Error Reporting - Optional Sentry integration for debugging.
# Install via cargo
cargo install sms-terminal
# Connect to an insecure server with auth
sms-terminal --host 192.168.1.20:3000 --auth hello --ws-enabled
# Connect to a secure server
sms-terminal --host sms-api.internal:3000 --ssl-certificate ./ca.crtAccess recent contacts with friendly name support. Messages are lazy-loaded for optimal performance.
Send messages and receive notifications in real-time across any view when WebSocket is enabled.
Monitor modem status, server version, signal strength, and WebSocket connection state.
Check delivery confirmations for outgoing messages directly from the messages view.
Customize your experience with built-in themes and background fill options.
- F10 - Change color scheme
- F11 - Toggle background fill mode
Configuration can be provided through command line arguments or a config file.
./sms-terminal-config.toml(local, highest priority)- Windows:
%appdata%/Local/sms-terminal/config.toml - Linux:
$HOME/.config/sms-terminal/config.toml
| Option | Type | Description |
|---|---|---|
theme |
emerald, blue, zinc, indigo, red, amber, pink |
Select a built-in theme |
host |
String | Server host for HTTP and WebSocket (e.g., localhost:3000) |
http-uri |
URI | HTTP URI (overrides host if set) |
ws-uri |
URI | WebSocket URI (overrides host if set) |
ws-enabled |
Boolean | Enable WebSocket support for live updates |
auth |
String | Authorization token for requests |
ssl-certificate |
Path | SSL certificate filepath for secure connections |
sentry |
URI | Sentry DSN for error reporting (requires sentry feature) |
Tip
WebSocket connection is optional but strongly recommended for live updates!
Warning
In a config file, the options use underscores instead of hyphens. Eg: ws_enabled instead of ws-enabled!
cargo install sms-terminalcargo install sms-terminal -F sentry# View help and available commands
sms-terminal -h
# Start terminal with default view
sms-terminal --host 192.168.1.20:3000 --auth testing
# Start with messages view for a specific contact
sms-terminal messages "+44123" --host 192.168.1.20:3000





