Changelog
Changelog
All notable changes to the SMS Gateway Proxy platform are documented here. This project follows Semantic Versioning.
v1.0.0 — 2026-04-10
Initial stable release of the SMS Gateway Proxy platform.
Features
Core Messaging
- REST API (HTTP/JSON, port 8080) and gRPC API (HTTP/2, port 44044) for SMS submission
- Automatic message segmentation for long SMS (GSM7 and UCS2 encoding)
- UUID-based transaction tracing across the full message lifecycle
- Delivery receipt (DLR) tracking with per-segment status reporting
- Message status query via
SmsInfoendpoint
SMPP Infrastructure
- SMPP v3.4 client connections to carrier SMSCs
- Virtual pools with Smooth Weighted Round-Robin load balancing
- Configurable per-link rate limits (
esme_rate/esme_rate_burst) - Automatic link health monitoring with 10-second check cycle
- Dynamic pool rate adjustment when links go up or down
- IP whitelist per SMPP link
Rate Limiting
- L1 in-process rate limiter for low-latency global throttling
- L2 distributed rate limiter via Redis for cluster-wide coordination
- Per-link and per-pool rate enforcement with burst support
- HTTP 429 / gRPC
RESOURCE_EXHAUSTEDon limit exceeded
Message Control Platform (MCP)
- Node-RED-based contact policy engine
- CP1 strategy — daily and weekly per-number frequency caps
- CP1 On-Build — frequency management during campaign build phase
- CP2 strategy — message deduplication within configurable time window
- Blacklist filtering from S3/MinIO CSV files with auto-renewal
- Pluggable filter architecture via
config_local.yaml
Authentication and Security
- JWT-based authentication with configurable token TTL
- Admin API key for privileged operations
- Per-user
app_id/app_secretcredentials - IP whitelist enforcement per SMPP link
Observability
- Prometheus-compatible
/metricsendpoint - OpenTelemetry tracing support with configurable sampling
- Real-time dashboards:
/dashboard/stats,/dashboard/smpp-links,/dashboard/load-balancers - Health check endpoint:
/healthy
Storage and Export
- Aerospike for message state persistence with configurable TTL
- Statistics exporter for CDR (Call Detail Records) to S3-compatible storage
- Configurable export intervals and S3 bucket/path settings
Deployment
- Docker Compose deployment with pre-built images
- Centralized configuration via
config_local.yamlandsmpp_rules.toml - Multi-node cluster support with shared Redis state
Known Limitations
- TLS for the gRPC listener is disabled by default — use a reverse proxy or service mesh for encrypted gRPC transport
- The REST API does not support bidirectional streaming — use gRPC
SendMessageStreamfor high-throughput integrations - Blacklist CSV files must be uploaded to S3/MinIO manually or via an external process