txtMesh

The first SMS gateway for MeshCore LoRa networks.

A bidirectional SMS text message gateway: Send and receive messages to and from any phone number, right from your MeshCore device. No special app required beyond what you already use for MeshCore.

Currently in beta testing exclusively in the Capital District Region of New York State.

MeshCore Mike
5185551234 Hey, are you at the trailhead?
✅ SMS delivered to ***1234
📱 1234: Yes! Parking lot, see you soon
WX
☀️ 72°F Partly cloudy • High 78°F
Fri: ⛅ 74/58
Sat: 🌧️ 65/52
Sun: ☀️ 70/55
txtMESH
SMS 518-555-1234
Mike [a1b2]: Hey, are you at the trailhead?
Yes! Parking lot, see you soon

Getting Started

Two paths to the same network — one from the mesh, one from any phone.

MeshCore Users

  1. Get within range of the txtMesh💬 SMS gateway, either direct (0-hop) or through one or more MeshCore repeaters.
  2. Send hello to the #txtmesh hashtag channel. The gateway will see you and walk you through setup.
  3. Send a Flood Advert when prompted (Menu → Flood Advert). The gateway automatically sends you a welcome DM with 20 free tokens.
  4. Send a text message via DM: 5185551234 Hey, it's Mike on the mesh

Each message costs 1 token. Type BAL to check your balance anytime.

SMS Users

  1. Get a MeshCore user's public key — the first 4–8 digits of their public key, like a1b2c3.
  2. Text (518) 621-3121 with their MeshCore public key and your message: a1b2 Hey, are you on the mesh?
  3. That's it — You'll receive 20 free txtMesh gateway tokens to start, and replies from MeshCore users will arrive as normal text messages.
  4. Save (518) 621-3121 as "txtMesh" in your smartphone's address book contacts so the txtMesh gateway number is easily available.

No special app needed, any phone that can send a text message will work with the txtMesh gateway to send and receive messages with people on the MeshCore network.

Features

The first service to bridge LoRa mesh radio and SMS into a single two-way messaging platform.

Bidirectional SMS Relay

The first true two-way link between off-grid mesh radio and the phone network. MeshCore users text any phone number; replies come back over the air. ACK-based delivery confirmation with multi-part splitting.

Session Management

Automatic session tracking for active conversations. Configurable timeouts, max session caps, and rate limiting per user.

Weather & PING

WX command for current conditions and 3-day forecasts. PING for live firmware trace with per-hop SNR, per-leg distance, and health summary.

Message Retry System

Failed deliveries retry with exponential backoff. Persistent queues survive restarts. Separate SMS and MeshCore retry tracking.

Path Quality Intelligence

Per-contact ACK history drives smarter routing: adaptive timeouts from observed RTTs, flood-first bias for flaky paths, sent→acked promotion when the path is hot, reply-as-ACK from any inbound traffic, advert-triggered retry, cold-contact skip, and pre-flight trace probes.

Saved Contacts & Away

Save friendly aliases for phone numbers and MeshCore public keys. Away mode with auto-away detection notifies senders you're offline.

Auto-Discovery & Signal Test

Contact registry with auto-pruning. Signal test bot auto-replies on the MeshCore public channel with location, path, and distance info.

Discord Bridge

Optional bidirectional Discord relay with per-user identicons, signal footers, repeater echo counts, reaction matching, and channel auto-prune.

Emergency Communications

Designed for planned resilience, not just improvised connectivity.

When disasters strike, cell infrastructure fails — but a well-planned MeshCore network doesn't. Unlike consumer mesh systems that depend on client devices to relay messages, MeshCore is built around dedicated repeater nodes: fixed infrastructure that can be solar-powered, weatherproofed, and strategically positioned long before an emergency occurs.

txtMesh connects that planned mesh to the wider world — bridging MeshCore's radio network to the SMS network so messages can reach anyone, anywhere, on an ordinary phone.

How it works in the field

A pre-deployed repeater backbone covers the region — hilltops, fire stations, EOC rooftops, water towers. These nodes stay on through power outages and don't depend on civilian devices being present to relay traffic.

Responders and civilians with MeshCore devices send messages across that backbone. A message addressed to a phone number routes hop-by-hop toward the txtMesh gateway at the network's edge.

The txtMesh gateway bridges the last mile. Positioned where radio coverage meets cellular coverage, it receives MeshCore DMs and delivers them as SMS to any phone number — family members, coordinators, hospitals.

Replies return the same way — an SMS response routes back through the gateway and across the mesh to the originating device. No app, no internet, no cell service required at the field end.

Built for unreliable conditions

  • Per-contact path quality — rolling ACK history per contact drives adaptive timeouts and flood-first retries on flaky paths
  • Flood fallback routing — if a known path goes silent, the gateway resets and retries via mesh flood
  • Reply-as-ACK — any inbound traffic from a contact counts as proof their path is alive, avoiding wasted retries
  • Advert-triggered retry — pending mesh retries fire immediately when a contact's advert reappears
  • Persistent message queues — messages survive gateway restarts
  • Exponential backoff retry — failed SMS deliveries are retried automatically
  • ACK-based confirmation — senders know if a message made it through

A practical example

A search and rescue team is operating in a valley with no cell service after a storm. Their MeshCore handhelds route through two fixed repeaters on a ridgeline to reach the gateway at the incident command post. A team member sends:

5185559876 All 4 accounted for, moving to extraction point B

The incident commander's phone buzzes with a text. They reply. The field team gets the response — no internet, no cell signal required at their end.

Why SMS Gateway Tokens?

MeshCore is free and always will be — your messages travel over LoRa radio waves that cost nothing to send. But when a message passes between MeshCore and SMS networks, it becomes a real text message delivered to a real phone number. Every one of those texts has a cost, and that cost adds up.

Each token covers the cost of one outgoing or inbound SMS message. You buy what you need, use it when you need it, and your balance never expires.

New users get free tokens to try things out. After that, topping up takes about 30 seconds. We appreciate every person who helps keep this gateway alive.

Add SMS Gateway Tokens →

Command Preview

Simple text commands on both sides of the bridge.

MeshCore Side
You (MeshCore DM) HELLO
txtMesh💬 Welcome to txtMesh · A MeshCore text gateway.
txtMesh💬 💰 20 complimentary tokens. Each outgoing SMS costs 1 token.
You (MeshCore DM) 5185551234 Hey, can you pick me up at the trailhead?
txtMesh💬 ✅ SMS delivered to ***1234
txtMesh💬 📱 1234: On my way! 15 min
You (MeshCore DM) SAVE mom 5185551234
txtMesh💬 Saved: mom → ***1234
SMS Side
You (SMS) a1b2 Hey Mike, you on the trail?
txtMesh💬 Welcome to txtMesh! 💰 20 free tokens. Each message costs 1 token.
txtMesh💬 🟢 Message delivered. You'll only see warning or failure notices going forward.
txtMesh💬 Mike [a1b2]: Yeah! At the summit, great views
You (SMS) Awesome, headed up now
You (SMS) SAVE mike a1b2
txtMesh💬 Saved: mike → a1b2

Command Reference

Text any of these commands to the gateway.

Messaging

<phone> <msg>
Send SMS to a phone number
<name> <msg>
Send to a saved contact
BYE
End active conversation
LIST
Show active sessions

Contacts

SAVE <name> <number>
Save a contact
DELETE <name>
Remove a contact
CONTACTS
List saved contacts

Info

HELP
Show available commands
STATUS
Gateway health and uptime
WX
Weather and 3-day forecast
PING
Signal trace with per-hop SNR
BAL
Token balance and account info
WHOAMI
Show your MeshCore public key
LOCATION
Show GPS-based location

Settings

AWAY <msg>
Set away message for senders
BACK
Clear away message
AUTOAWAY
Auto-away after inactivity
SMS ON/OFF
Toggle receiving from strangers
ACCEPT ON/OFF
Cover incoming message costs
AUTOREFILL
Auto-purchase tokens when low

Changelog

Recent updates to txtMesh.

v1.7April 2026 Channel Onboarding & Smart Delivery

Channel Onboarding

  • Dedicated #txtmesh channel — new users can now send any message to the #txtmesh channel to begin onboarding. No advert or public key needed — the gateway captures the sender’s identity from the channel message and guides them through setup.
  • Automatic advert detection — once a user sends a Flood Advert, the gateway automatically completes onboarding: grants 20 free tokens, sends a welcome DM, and confirms on-channel.
  • Channel commands — HELP, STATUS, BAL, WX, and PING all work on #txtmesh. BAL sends balance via DM for privacy.
  • Known user nudge — registered users who message on #txtmesh get a friendly reminder to use DM instead.

Quiet Public Channel

  • One-shot welcome for new locals — the first time a new MeshCore user within 90 mi of the gateway sends a signal-test phrase on the public channel, the bot replies once with a welcome and points them at the configured #testing channel.
  • Decaying redirect — explicit ping words from non-eligible users get a per-user nudge on a decay schedule: immediate, then +1 h, +6 h, then silent forever. Casual greetings are silent.

Smarter Mesh Delivery

  • Per-contact path quality — every send and ACK round-trip is recorded per contact and feeds adaptive routing decisions.
  • Adaptive ACK timeouts — once enough round-trip samples exist, the heuristic timeout is replaced with the observed P95 × 1.5, so slow paths don’t get prematurely declared dead.
  • Flood-first bias on flaky paths — contacts with poor recent ACK rate get the retry order inverted, flooding while the radio is warm instead of dying on a bad stored route.
  • Sent → acked promotion — when a chunk transmits but no ACK comes back AND the path was recently proven, treat the chunk as delivered instead of retrying.
  • Reply-as-ACK — any inbound DM or channel chatter from a contact counts as proof-of-life without polluting the ack-rate metrics.
  • Advert-triggered retry — when a contact’s advert arrives, all their pending mesh retries are immediately promoted out of exponential backoff.
  • Cold contact skip — contacts silent for 12 h with 3 consecutive failures skip inline retries and go straight to the persistent queue.
  • Pre-flight trace probe — before retrying flaky contacts, a quick single-trace path check skips the attempt entirely if the path is dead.

Path Intelligence

  • Variable-length path prefixes — full support for 1-byte, 2-byte, and 3-byte path hash modes from MeshCore firmware 1.14+. All path parsing, trace routing, RX log decoding, and Discord signal footers handle the path_len bitfield correctly.
  • Path data cache — repeater path information now survives gateway restarts. Previously lost until remote repeaters advertised again.
  • Collision detection — when two repeaters share the same short path hash, GPS distances are suppressed with a warning identifying the conflicting nodes.
  • Client node exclusion — companion/client devices are excluded from all path GPS lookups and repeater label matching.
  • Working advert acks — the gateway properly adds contacts to the firmware and refreshes the cache before sending the advert acknowledgement DM.

Repeater Health

  • Auto-discovered repeater tracking — the gateway now automatically identifies which repeaters carry the most traffic from traces, RX logs, and path data. Battery, SNR, and health trends are tracked for all active repeaters — no manual configuration required.
  • Ranked repeater display — daily roundup shows manually configured repeaters first, then auto-discovered repeaters ranked by traffic frequency (up to 8 total), with relay counts, day-over-day trend arrows (↑/↓/–), and battery status for each.
  • Dashboard repeater table — combined HA dashboard card showing relay count with trend, battery percentage, and average SNR per repeater.

Quality of Life

  • Deferred delivery confirmation — SMS users now see a delivery notice only after the mesh ACK actually lands, not boilerplate on first send.
  • Shorter Discord signal footer — prefix byte labels condensed from “2-byte prefix” to “2B”.
  • Prefix mode in ping responses — pong announces the sender’s hash mode when non-default.
  • Smarter distance display — total signal path distance is only shown when the sender’s GPS is known. Per-leg distances between repeaters still display normally.

v1.6Feb 28, 2026 Discord Bridge & Signal Intelligence

Discord Bridge

  • Bidirectional relay — MeshCore channel messages flow to Discord webhooks and back, with per-user avatars and echo suppression.
  • Repeater echo count — keycap emoji reactions show how many MeshCore repeaters relayed each Discord message.
  • Per-channel auto-prune — configurable message retention with live progress tracking.
  • DISCORD admin command — enable/disable the bridge globally or per-channel from DM, SMS, or channel.

Signal Intelligence

  • Firmware trace — PING responses now show per-hop SNR and GPS distance for every repeater in the path.
  • PING <node> — trace signal path to any specific node on the mesh by name.
  • Repeater identity tags — all path displays show [XX] hex prefix tags next to repeater names.
  • Privacy redaction — nodes marked with a redaction flag show spoiler tags in ping responses and masked names in Discord.

Mesh Health & Roundup

  • AI health analysis — daily roundup includes an AI-generated health note based on 8 mesh metrics including battery trends, airtime, ACK rate, and per-repeater SNR.
  • ACK rate tracking — monitors delivery success rates across all mesh sends.
  • Per-repeater SNR tracking — records signal quality from firmware traces for tracked repeaters.

New Commands

  • LOCATION — reverse-geocodes a node's GPS coordinates to a city name. Waits for an advert if GPS isn't available yet.
  • ADVERT ON/OFF — per-user control over advert acknowledgement DMs that show signal path and timestamp.

v1.5Feb 22, 2026 Onboarding & Payments

User Onboarding

  • Welcome DM on first advert — new MeshCore users automatically get a welcome message and free starter tokens when the gateway first hears them.
  • Token info in onboarding — new users are told how the token system works and how to add more.

Stripe Integration

  • Website token purchase — phone number lookup, bundle selector, and Stripe Checkout flow at txtMe.sh.
  • Gateway offline protection — purchases blocked with a warning banner when the gateway is unreachable, with a server-side guard to prevent bypassing.
  • Auto-refill — optional automatic token top-up via Stripe when balance drops below a threshold.

v1.4Feb 20, 2026 Reliable Delivery & Audit Logs

Reliable Mesh Delivery

  • Direct MeshCore API for retries — preserves timestamp and attempt across retries so client-side dedup works correctly. Retries appear as the same message, not duplicates.
  • Flood fallback on stale paths — when a path-routed send gets no ACK, the gateway resets the path and retries via flood to find nodes that have moved.
  • Separate flood retry config — new option controls flood retries independently from DM retries.

User Activity & Accountability

  • Per-user audit log — every account tracks DMs sent/received, SMS sent/received, and token operations with timestamps.
  • Last Seen column — billing dashboard shows when each user was last active.
  • Broader last-seen tracking — updates on public channel messages and advert discovery, not just DMs.
  • Dashboard activity viewer — view any account's full event history from the dashboard.

SMS Notifications

  • Tightened delivery failure messaging to accurately reflect the retry flow.
  • Clear distinction between “retrying” and “gave up” notifications.

Gateway Live

Real-time stats from an active txtMesh gateway.

-- SMS Sent
-- SMS Received
-- MeshCore Sent
-- MeshCore Received
-- Active Sessions
-- Uptime
-- Gateway
-- Discord
-- Airtime
-- Version
Loading...