Cellular Modem Infrastructure & AT Command Stack
Signalroute is a suite of tools for managing cellular modems, from embedded AT command parsing to cloud-connected SMS routing infrastructure.
+---------------------------------------------------------------+
| CLOUD LAYER |
| +-------------+ +------------------------------------+ |
| | Generic | <--- | WebSocket tunnel for SMS routing | |
| | Cloud Server| | from physical modems behind NAT | |
| +-------------+ +------------------------------------+ |
+---------------------------------------------------------------+
|
| WebSocket (TLS 1.3)
v
+---------------------------------------------------------------+
| GATEWAY LAYER (Go) |
| +-------------+ +------------------------------------+ |
| | sms-gate | ---> | Headless daemon multiplexing | |
| | | | 4G/LTE USB modems with SQLite | |
| +-------------+ +------------------------------------+ |
| |
| +-------------+ +------------------------------------+ |
| | modem-emu | | High-concurrency modem emulator | |
| | (testing) | | 10,000+ simulated modems via TCP | |
| +-------------+ +------------------------------------+ |
+---------------------------------------------------------------+
|
|
v
+---------------------------------------------------------------+
| EMBEDDED LAYER |
| +-------------+ +------------------------------------+ |
| | libat-c | | Zero-malloc, ISR-safe AT engine | |
| | (C11) | | Lock-free ring buffer, bare-metal | |
| +-------------+ +------------------------------------+ |
| |
| +-------------+ +------------------------------------+ |
| | libat | | Header-only C++23 AT parser | |
| | (C++23) | | Zero-allocation for embedded IoT | |
| +-------------+ +------------------------------------+ |
+---------------------------------------------------------------+
| Repository | Language | Description |
|---|---|---|
sms-gate |
Go | Headless daemon that multiplexes 4G/LTE USB modems and tunnels SMS to the cloud via outbound WebSocket with SQLite WAL persistence |
modem-emu |
Go | High-concurrency cellular modem emulator bypassing kernel PTY limits (10,000+ modems via TCP/Unix sockets) |
libat-c |
C (C11) | Zero-malloc, ISR-safe AT command engine with a lock-free ring buffer for bare-metal microcontrollers |
libat |
C++23 | Header-only, zero-allocation AT command parser for modern embedded systems and IoT |
Use libat-c (C) or libat (C++) to build robust cellular connectivity into your embedded devices with minimal memory footprint and zero dynamic allocation.
Deploy sms-gate to build scalable, NAT-proof edge gateways that route messages from physical SIM banks directly to your cloud infrastructure without dropping messages.
Use modem-emu to simulate thousands of cellular modems for end-to-end integration testing of your gateways without physical hardware dependencies.
// libat-c example (C11)
#include "at.h"
#include "at_gsm.h"
at_init();
at_register_urc("+CMTI:", on_sms_received, NULL);
at_gsm_csq(on_signal_quality, NULL);// libat example (C++23)
#include <at/parser.hpp>
at::parser p{"AT+CGDCONT=1,\"IP\",\"internet\""};
auto result = p.parse_command();# Deploy sms-gate
go run ./cmd/gateway --config config.yaml
# Test with mock modems using modem-emu
go run ./cmd/emu --config configs/scale-1000.json| Component | Target Platform | Memory Requirements |
|---|---|---|
libat-c |
Bare-metal ARM Cortex-M/RISC-V | < 1KB RAM |
libat |
Embedded Linux/MCU | Header-only, zero allocation |
sms-gate |
Linux (x86_64/ARM64/ARM32) | ~50MB for 100 modems |
modem-emu |
Linux/macOS | ~2GB for 10,000 emulated modems |
- Zero-allocation embedded parsers — No heap usage (
malloc/free), deterministic latency. - Lock-free ring buffers — SPSC buffer in C11 makes it ISR-safe for real-time systems.
- WebSocket tunneling — Route SMS from NAT'd modems to the cloud without inbound ports.
- SQLite persistence — Local WAL-mode queue for offline resilience ("SQLite-before-SIM-delete").
- Massive concurrency — Test with 10,000+ simulated modems bypassing
/dev/ptsOS limits. - Modern C++23 — Type-safe, compile-time optimized header-only parser.
We welcome contributions across all layers of the stack:
- Embedded — C/C++ optimizations, new AT command handlers, 3GPP spec coverage.
- Systems — Go performance improvements, rate-limiting logic, edge deployment.
- Testing — Expand mock modem fidelity (new hardware profiles), add fuzzing.
Please read our Contributing Guide and Code of Conduct.
All Signalroute repositories are released under the MIT License unless otherwise specified.
Signalroute — Bridging cellular hardware to the cloud, one AT command at a time.