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

Мессенджер +
Meshtastic LoRa

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

Пишут в чат-бот → бот шлёт DM по радио на твою карманную ноду. Отвечаешь с ноды одной строкой — ответ улетает обратно в чат конкретному человеку. Никаких приложений у собеседников.

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

У моих друзей нет Meshtastic. И не должно быть

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

Без приложений у собеседников

У всех уже есть мессенджер. Никаких настроек каналов, hops, шифрования. Со стороны чата — обычный бот, под капотом — радио.

Привычный мессенджер, а не радио

Друзья и родные открывают тот же чат, что и обычно. Никаких MQTT, hops, ключей и SF11 — это всё прячется в моём сервере и моей ноде.

Sticky-слоты @N

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

Статусы доставки как в мессенджере

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

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

Очередь в 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
Как это работает

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

Жми «Послать сообщение» — увидишь полный путь: чат → облако мессенджера → сервер 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 чат → Влад
Что уже сделано

Фичи, которые работают сейчас

Не «скоро будет», а «уже работает». То что в бете — помечено β. То что планируется — в разделе голосования.

Sticky-слоты @N

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

Статусы доставки + ACK

«передаю → отправлено → доставлено → ответ». Не дошло — кнопка « ещё раз».

Whitelist + бан-лист

Опциональный закрытый режим. Тихий бан — пользователь не узнаёт о бане после конкретного сообщения.

Реферальные ссылки

Разные deep-link'и разным группам — у тебя в кармане видно «откуда»: [@3 work:vlad].

GPS / /where β

Команда от избранных юзеров возвращает локацию + «Фикс N мин назад». Не-избранным — «недоступно».

SOS / тревога β

#SOS с карманной ноды → рассылка списку получателей с координатами. «Красная кнопка» без защиты от ложных.

Авто-ретраи в SQLite

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

Нативный PyQt6 GUI

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

Архитектура

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

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

Любой пользовательпишет боту в чате
relay.py + home-нодасервер с интернетом, USB-нода
↓ Meshtastic DM (E2E-шифр) ↓
Чужие ноды-ретрансляторытолько зашифрованный блоб, не читают
Pocket-нодау тебя в кармане, читаешь и отвечаешь
VOTE NOW YOUR IDEAS MATTER MESHGRAM ROADMAP · BY YOU ПРОДАМ ГАРАЖ VOTE NOW YOUR IDEAS MATTER MESHGRAM ROADMAP · BY YOU ПРОДАМ ГАРАЖ
Голосование

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

Это не roadmap-комитет — финальное решение всё равно за автором. Но если 80% проголосовавших хотят VPS-деплой, а карту просят 5 человек — это полезный сигнал.

Текущие предложения · по мотивам раздела «Что планируется» в 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 (свой парсер)