MESHGRAM
v0.4 · в активной разработке

Telegram +
Meshtastic LoRa

Личный мост, чтобы оставаться на связи без интернета — пока карманная нода в зоне приёма меш-сети, тебе можно написать в обычный Telegram.

Друзья пишут в Telegram-боту — бот шлёт зашифрованный DM по радио на твою карманную ноду. Отвечаешь одной строкой — ответ улетает обратно в Telegram конкретному человеку. Адресная связь поверх mesh, без общего чата и без приложений у собеседников.

50+ моделей нод ~5 км в зоне видимости 170 символов / пакет E2E шифрование
соло-проект · без коммерции · MIT
MESHGRAM MESSENGER ↔ LORA MESHGRAM БЕЗ ИНТЕРНЕТА MESHGRAM PERSONAL BRIDGE ПРОДАМ ГАРАЖ MESHGRAM MESSENGER ↔ LORA MESHGRAM БЕЗ ИНТЕРНЕТА MESHGRAM PERSONAL BRIDGE ПРОДАМ ГАРАЖ
Зачем это

У друзей нет Meshtastic — и не должно быть

Чтобы остаться на связи в местах без сотовой сети, не нужно заставлять родных и друзей ставить себе приложение Meshtastic, разбираться в каналах, hops и SF11. Meshgram — это не общий чат на радио, а мост из Telegram в LoRa: собеседник пишет в привычный Telegram-бот, на карманной Heltec-ноде сообщение приходит по радио. Адресно, конкретному человеку, без общего канала.

Ноль усилий со стороны собеседника

Telegram уже стоит у всех. Открыл бота, написал — это всё. Никаких каналов, hops, ключей и установки приложения Meshtastic.

Адресный DM, а не общий канал

Между home-нодой и pocket-нодой идёт E2E-зашифрованный DM Meshtastic. Чужие узлы на канале только ретранслируют пакет, содержимое не читают.

Sticky-слоты @N

Каждый собеседник получает короткий слот: @1, @2, @3. Повторные сообщения от того же человека падают в тот же слот — переписка не разрывается.

Статусы доставки как в Telegram

« передаю → отправлено → доставлено → ответ». LoRa-ACK от карманной ноды поднимается обратно до Telegram-пользователя.

Авто-ретраи через рестарт

Очередь в SQLite, экспоненциальный бэк-офф 2→4→8→16 мин. Сервер упал — после старта добивает то, что не доехало.

50+ моделей нод

Heltec V3/V4, T-Beam, T-Echo, T-Deck, RAK4631, Xiao S3, ThinkNode M1-M6 и ещё ~40. SVG-рендеры с офсайта Meshtastic.

SOLO PROJECT MIT LICENSE PYQT6 LORA · 868/433 MHz SQLITE MESHGRAM.SITE SOLO PROJECT MIT LICENSE PYQT6 LORA · 868/433 MHz SQLITE MESHGRAM.SITE
Как это работает

Путь сообщения от чата до твоего кармана

Нажми «Послать сообщение» — увидишь весь путь: Telegram-чат → серверы Telegram → твой сервер с relay.py → home-нода Heltec → LoRa-эфир → pocket-нода у адресата.

[1] @VLAD Meshgram bot в сети Привет! Я ноду в кафе оставил. отправка… доставлено @kolya · LoRa → чат Ок, забираю через час. только что · через mesh Сообщение… [2] CLOUD cloud relay [3] СЕРВЕР · relay.py relay.py · running [16:15:02]msg from @vlad [16:15:02]resolve → slot 03 (pocket) [16:15:04]→ home-Heltec via USB [16:15:04]tx LoRa DM → 0x03 [16:15:09]ACK from pocket [16:15:10]status updated [4] HOME · Heltec V4 !Meshgram-home slot 03 → tx USB tx [A] LoRa AIR 868/433 МГц SF11 · BW125 · DM [5] POCKET · Heltec V4 !Meshgram-pocket listening… 82% rx [6] @KOLYA · MESHTASTIC Meshtastic !Meshgram-pocket · DM @vlad · чат → LoRa Привет! Я ноду в кафе оставил. только что · -98 dBm Ок, забираю через час. отправка по LoRa… DM…
1 Влад → чат
2 облако чата
3 relay.py · @3
4 USB → home
5 LoRa-эфир
6 pocket rx
7 BT → Meshtastic
8 ACK → home
9 доставлено
10 Михаил → reply
11 BT → pocket
12 LoRa обратно
13 home → relay.py
14 чат → Влад
Что уже работает

Возможности из коробки

Всё ниже — уже в production, а не «в планах». Бета-функции помечены β. Дорожная карта — в разделе голосования.

Sticky-слоты @N

Каждому собеседнику — короткий слот, как мини-чат. Окно жизни 20 часов до первого ответа, +10 часов после. Освобождённые номера переиспользуются — нумерация не разрастается.

Цепочка статусов доставки

«передаю → отправлено → доставлено → ответ» — как в обычном Telegram. Не дошло за TTL — inline-кнопка « ещё раз».

Whitelist и бан-лист

Опциональный закрытый режим — пускаем только своих. Бан тихий: забаненный получает обычное «не принимает сообщения», без подсказок что и когда вызвало бан.

Реферальные deep-links

Раздаёшь разным аудиториям свои ссылки — у тебя в кармане видно, откуда пришёл человек: [@3 work:vlad], [@5 friends:anya].

Геолокация по запросу β

Команда /where от избранных пользователей возвращает текущие координаты с пометкой свежести. Остальным — нейтральный ответ «недоступно», ничего не выдаёт о настройке.

SOS-тревога β

Триггер #SOS с карманной ноды — рассылка пред-настроенному списку контактов с координатами. «Красная кнопка» без защиты от ложных срабатываний — приоритет надёжности.

Очередь ретраев в SQLite

Если связь временно пропала — сообщение в очереди. Бэк-офф 2 → 4 → 8 → 16 минут до истечения TTL. Очередь переживает рестарт сервера — после старта продолжает добивать.

Нативный PyQt6 GUI

Тёмная тема в стиле dev-консоли, splitter с лайв-логом и панелью ноды, восемь секций настроек, мастер первичной установки в три шага.

Архитектура

Две точки и приватный радиоканал

Бот и GUI живут в разных процессах. GUI запускает relay.py через QProcess, читает stdout → раскрашенный лог. Закрыть окно — бот продолжает работать.

Любой пользовательпишет боту в чате
relay.py + home-нодасервер с интернетом, USB-нода
↓ Meshtastic DM (E2E-шифр) ↓
Чужие ноды-ретрансляторытолько зашифрованный блоб, не читают
Pocket-нодау тебя в кармане, читаешь и отвечаешь
Альтернативы

Что ещё есть в этой нише

Открытые проекты, связанные с мостами Telegram ↔ Meshtastic LoRa. Ссылки на исходники.

Проект Маршрутизация Ключевые фичи
Meshgram это
— этот проект, meshgram.site
addressed @N Sticky-слоты @N на каждого собеседника, цепочка статусов доставки, нативный PyQt6 GUI с тёмной темой, 50+ моделей нод, whitelist, реферальные deep-links, SOS, GPS /where
tb0hdan group bridge MQTT для соединения mesh-сетей разных городов, веб-карта нод, APRS bidirectional, plugin-архитектура, console-команды (/distance, /ping, /stats). Используется коммьюнити в Киеве
neoemit group bridge UTF-8 chunking длинных сообщений с ACK-gating, синхронизация эмодзи-реакций, plugin dm_http_command (DM → HTTP-API), Docker, systemd-юниты, reply-link mapping
gretel · WIP group bridge Serial и TCP подключение к ноде, авто-reconnect, rate-limiting, опциональный syslog. Минимальный YAML-конфиг
vitug group bridge Авто-ответы по ключевым словам с RSSI/SNR и hop-count, разбивка длинных сообщений, логирование чатов в файлы, маппинг node ID → имя
samfromlv group bridge Мост Meshtastic ↔ приватные группы Telegram, двунаправленная связь
ChuckNorrison group bridge Минимальный форвардер сообщений TG ↔ нода через serial-интерфейс
CTPSTACK2025 mesh → TG Лёгкий Python-скрипт, форвардит входящие LoRa-сообщения через USB в Telegram-чат. Односторонний
group bridge = TG-группа ↔ общий mesh-канал · addressed @N = приватный слот на каждого собеседника · one-way = только в одну сторону
В РАЗРАБОТКЕ

Cloud-режим — нода и больше ничего

Сейчас Meshgram требует ПК с relay.py — он держит USB-ноду и связывается с Telegram. В планах — упростить до того, что у тебя дома стоит только сама нода с Wi-Fi на подоконнике, а relay живёт у нас на сервере. Никаких локальных процессов, никакого VPN ради бота.

Поставь и забудь

Нода с Wi-Fi (Heltec V3/V4, T-Beam) питается через зарядку, подключается к домашнему роутеру. Один раз настроил — дальше работает.

relay живёт у нас

Сообщения идут от ноды через MQTT-bridge на наш VPS, оттуда в Telegram. Для России это значит, что VPN тебе на ПК больше не нужен — мост работает с нашей стороны.

Работа из коробки

Поддержка пары одинаковых нод, sticky-слоты @N, ретраи, ACK-статусы — всё то же что в self-host версии. Просто без локального процесса на ПК.

Статус (май 2026): end-to-end тесты пройдены, идёт закрытая внутренняя бета. Self-host версия (с локальным relay.py) остаётся бесплатной и работающей — cloud просто добавится как опция.
Попробовать сейчас

Хочешь пощупать как это работает — без железа?

У проекта есть демо-бот в Telegram. Он не подключается к реальной mesh-сети, не требует ни ноды, ни настроек — просто показывает интерфейс и флоу как у настоящего Meshgram. 30 секунд — и ты понимаешь, как это выглядит со стороны пользователя.

@MeshgramDemoBot · симуляция

Открой бота, напиши любое сообщение

Увидишь живую цепочку статусов «📨 передаю → 📨 отправлено → ✓ доставлено», слот @N, ответ от «фейкового Михаила» через 5–12 секунд — ровно тот же UX, что и в боевом режиме.

Если зашло — есть команда /donate: поддержать можно через CryptoBot (USDT) или нативными Telegram Stars (⭐). Без обязательств — это сольный любительский проект, любая копейка идёт в счёт хостинга и нод-ретрансляторов.

VOTE NOW MESHGRAM ROADMAP · BY YOU ПРОДАМ ГАРАЖ VOTE NOW MESHGRAM ROADMAP · BY YOU ПРОДАМ ГАРАЖ
Roadmap by you

Что выкатить следующим? Выбери до 2-х

Это не дорожная карта по комитету — финальное решение остаётся за автором. Но голоса показывают, что нужно реальным пользователям, а не только мне. Чем больше людей просят одно и то же — тем выше приоритет.

Список предложений · собран из раздела «Что планируется» в README и реальных запросов выбрано 0 / 2
Свои идеи

Что-то не нашлось в голосовании?

Опиши свою идею — она уйдёт в общий пул. Лучшие предложения попадают в следующий раунд голосования или сразу в работу. Кратко, по делу — что делать и зачем это нужно.

Это сольный любительский проект

Делаю в одиночку, в свободное время, без коммерческих целей. Это инструмент лично для меня — выкладываю «как есть» под лицензией MIT. Если тебе он окажется полезен — отлично. Хочешь форкнуть, переписать или переиспользовать — пожалуйста.

Никаких гарантий, никакого SLA, никакой поддержки. Issues и PR приветствуются, но я могу их не разгребать неделями. Голосование выше — не дорожная карта, а просто полезный сигнал, что приоритезировать.

Стек

На чём всё работает

Один Python на всё: бэкенд, GUI, скрипты. Никакого Node, Electron, JS-тулчейна. Конечный пользователь запускает один .bat-файл.

Python 3.10+ PyQt6 meshtastic-python messenger bot lib SQLite pyserial pypubsub dotenv (свой парсер)