https://github.com/morgverd/sms-terminal
TUI for sms-server - send/receive SMS, view message history, and control GSM modems from your terminal.
https://github.com/morgverd/sms-terminal
cli cross-platform ratatui rust sms sms-client terminal tui
Last synced: 5 months ago
JSON representation
TUI for sms-server - send/receive SMS, view message history, and control GSM modems from your terminal.
- Host: GitHub
- URL: https://github.com/morgverd/sms-terminal
- Owner: morgverd
- License: agpl-3.0
- Created: 2025-09-11T21:11:43.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2026-01-10T18:17:48.000Z (6 months ago)
- Last Synced: 2026-01-11T04:44:29.413Z (6 months ago)
- Topics: cli, cross-platform, ratatui, rust, sms, sms-client, terminal, tui
- Language: Rust
- Homepage: https://crates.io/crates/sms-terminal
- Size: 5.42 MB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SMS Terminal
A Rust-based TUI for sending and receiving SMS messages live through your own hardware.
## Related Projects
- **[sms-server](https://github.com/morgverd/sms-server)** ([crates.io](https://crates.io/crates/sms-server)) - SMS server for Raspberry Pi with database storage.
- **[sms-client](https://github.com/morgverd/sms-client)** ([crates.io](https://crates.io/crates/sms-client)) - Rust library for remote server interfacing.
## Features
- **[Smart Phonebook](#phonebook--messages)** - Recent contacts, friendly names with editing, and lazy loading.
- **[Live Messaging](#live-messaging)** - Send multipart messages and receive updates in real-time.
- **[Device Monitoring](#device-information)** - View modem connection info and signal strength.
- **[Delivery Reports](#delivery-reports)** - Track when recipients receive your messages.
- **[Theme Support](#themes)** - Multiple built-in themes with customization options.
- **[Easy Installation](#installation)** - Simple setup with `cargo install`.
- **[Highly Configurable](#configuration)** - Via command line arguments, config file, or both.
- **Error Reporting** - Optional Sentry integration for debugging.
## Quick Start
```bash
# 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.crt
```
## Showcase
### Phonebook & Messages
Access recent contacts with friendly name support. Messages are lazy-loaded for optimal performance.

### Live Messaging
Send messages and receive notifications in real-time across any view when WebSocket is enabled.


### Device Information
Monitor modem status, server version, signal strength, and WebSocket connection state.


### Delivery Reports
Check delivery confirmations for outgoing messages directly from the messages view.

### Themes
Customize your experience with built-in themes and background fill options.
- **F10** - Change color scheme
- **F11** - Toggle background fill mode

## Configuration
Configuration can be provided through command line arguments or a config file.
### Config File Locations
- `./sms-terminal-config.toml` (local, highest priority)
- Windows: `%appdata%/Local/sms-terminal/config.toml`
- Linux: `$HOME/.config/sms-terminal/config.toml`
### Available Options
| 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`!
## Installation
### Basic Installation
```bash
cargo install sms-terminal
```
### With Sentry Support
```bash
cargo install sms-terminal -F sentry
```
### Usage Examples
```bash
# 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
```