Вечный спор о двух полюсах
Если вы хоть раз обсуждали «правильную» архитектуру мессенджера, вы знаете, что разговор всегда скатывается в два полюса, и оба плохие.
Полюс первый: чистый P2P. Никаких серверов, клиенты говорят напрямую. Звучит красиво ровно до первого практического вопроса. Собеседник офлайн, а вы хотите написать ему сейчас. Куда уйдёт сообщение? В никуда, ждите, пока он включит телефон одновременно с вами. NAT, симметричные файрволы, спящий Android, который убивает фоновые сокеты. P2P горит на неудобстве.
Полюс второй: сервер. Удобно, офлайн-доставка есть, пуши есть. И ровно одна коробка, в которой лежат личности всех, граф контактов всех, очереди всех. Эту коробку можно заблокировать по сети, можно изъять физически, можно прийти к оператору с предписанием. Серверные мессенджеры горят на сервере.
Один из наших пользователей в бете сформулировал это лучше, чем мы в любой презентации: обсуждение альтернатив всегда имело два полюса. Либо ищем инфраструктуру как в Matrix, где все сидят по своим загонам и не пишут друг другу. Либо сидим без офлайн-сообщений как в P2P. Либо вообще не можем подключиться, потому что мосты для обхода блокировок съела моль.
Мы делаем RCQ, мессенджер в духе старой аськи, но на современной крипте. И последние месяцы мы потратили на то, чтобы найти выход из этого треугольника. Ниже модель, к которой мы пришли, и, что важнее, места, где она пока спотыкается. Это не готовый протокол, это дизайн и первые слои. Но он внутренне непротиворечив, и спор о двух полюсах он закрывает.
Первая ошибка: путать два слоя
Главное, что мы поняли: в мессенджере есть два независимых слоя, и почти все споры о децентрализации смешивают их в кашу.
Слой первый, транспорт. Как байты физически доходят до сервера. Это про IP, домены, обфускацию, обход DPI.
Слой второй, данные. Кто такой пользователь 777, где лежат его ключи, где его очередь сообщений. Это про базу.
Когда кто-то говорит «сделаем релеи, и будет децентрализация», он почти всегда говорит про первый слой и молча оставляет второй централизованным. А уязвимость, от которой вы защищаетесь, живёт ровно во втором слое. Релей можно поднять заново за минуту. Базу с личностями всех пользователей нельзя.
Разберём оба слоя по очереди, потому что хорошее решение для одного не лечит другой.
Слой транспорта: релеи-гидры, и эту идею принесли пользователи
Скажу честно: идея конкретно этого транспортного слоя пришла не от нас, а от пользователей в нашем бета-чате. Люди с реальным опытом обхода блокировок (Asterisk, xray, нюансы работы ТСПУ) предложили вот что.
Сегодня у нас, как у многих, обфускация живёт на каждом клиенте. Каждое приложение тащит свой sing-box, свой VLESS, свои конфиги. Это работает, но это тяжело и это много точек, каждую из которых можно фингерпринтить.
Их предложение: перенести обфускацию с клиентов на релеи. Релей это тупая труба. Он гонит зашифрованные байты до ядра и всё. Он не хранит данных, и благодаря sealed sender он не видит ни отправителя, ни содержимого. Такие релеи поднимают сами пользователи, пачками, как гидру. Сегодня релей тут, завтра там, заблокировали один, поднялся другой. А клиент при этом ходит до ближайшего релея простым невинным трафиком.
Почему это сильно, и почему мы это берём:
Прецеденты ровно такие. Tor с его мостами и Snowflake, Telegram с MTProxy. Это проверенная схема: распылённая сеть одноразовых входных узлов, которую дешевле не трогать, чем блокировать.
Трафик до релея менее палевный. ТСПУ и DPI смотрят в том числе на объём и тайминг. Вялые пакетики, как будто человек бесконечно обновляет какой-то сайт, палятся хуже, чем гигабайты, которые льёт классический VPN. Релей, который обслуживает только один мессенджер, это не публичный VPN с ютубом внутри.
Нагрузка лёгкая, поднять такой релей может почти кто угодно, потому что релею нечем рисковать. Он слепой.
Одну оговорку мы держим прямо в дизайне, потому что она важная: гидру из домашних релеев нельзя включать раньше onion-слоя. Домашний релей видит ваш IP и то, на какой остров вы идёте, и изъять его может тот же местный противник. Поэтому порядок жёсткий: сначала наши зарубежные релеи плюс onion-маршрутизация через несколько узлов, чтобы ни один релей не видел и ваш адрес, и адресата разом, и только потом распылённая гидра внутри страны. Иначе она сольёт метаданные ровно тех, кого должна прятать.
Это честное улучшение нашего текущего обхода, и спорить тут не с чем. Но ровно здесь начинается подмена, на которую легко купиться.
Слой данных: почему релеи не отменяют единое сердце
Заманчиво сказать: ну вот, релеи распылены, поставим за ними одну хорошую базу, и готово. Релеи защитят от блокировки, а база пусть будет одна, с RAID и бэкапами.
Это и есть подмена. Релеи решают только блокировку. Сердце они не лечат, потому что релей это труба, а не копия мозга. У единого сердца остаётся ещё три способа умереть, и обфускация трафика ни один из них не закрывает.
Изъятие и принуждение. Сервер за границей это не неприкасаемый сервер. Дата-центры изымают, хостер отключает по запросу, оператора прессуют через местный суд. История знает аресты владельцев и выдачу данных. «За границей» не равно «недосягаемо».
Отказ оператора. Деньги кончились, оператор устал, ушёл, передумал. Сама аська умерла не от блокировки, а потому что владелец принял решение её выключить. Одно решение одного хозяина, и аккаунты у всех мертвы. RCQ во многом существует именно потому, что единое сердце аськи когда-то выключили росчерком пера.
Компрометация. Один взлом, и утекли метаданные всех разом. Один оператор это одна точка, которую можно обязать логировать. Весь смысл такого проекта в том, что нет единого, кого можно прижать. Единое сердце за границей это всё равно один, кого можно прижать.
И отдельно: при единой базе у того, кто поднял свой сервер, ноль суверенитета. Он не хозяин своих пользователей, он донор трафика центральному оператору.
Вывод неприятный, но честный: нет такой страны и такого хостинга, где единая база безопасна. Поэтому правильный вопрос не «куда поставить сердце», а «как сделать, чтобы сердца не было вообще».
Модель: ключ это личность, остров это мейлбокс
Дальше начинается наша часть. Мы разносим и слой данных тоже, но не репликацией одной базы, а по-другому.
Личность это криптографический ключ, а не номер. Номер (UIN) это просто локальная ручка на конкретном острове плюс подсказка о маршруте. Адрес выглядит как номер@остров. Голый номер по умолчанию означает наш флагманский остров, а @остров всплывает только для других островов и самохостинга. Проверяется собеседник по safety-number, то есть по ключу, а не по доверию к номеру.
Из этого сразу следует ответ на вопрос, который нам задавали чаще всего: а что с коллизией номеров. Если 777@остров-А и 777@остров-Б это два разных человека, это нормально, как bob@gmail и bob@yahoo это два разных Боба. Номер не несёт личность, личность несёт ключ. Совпадение номеров на разных островах это не коллизия личностей, это просто «эта ручка тут занята».
Остров (мы называем его мейлбоксом) это уже не релей, это отдельная роль. Он держит входящую очередь пользователя и отдаёт его бандл ключей. Очередь временная: остров подержал запечатанный конверт, пока получатель не забрал, и стёр. Своих островов меньше, чем релеев, и поднимает их тот, кто хочет настоящего суверенитета.
Доставка работает через client-multihoming, и тут ключевой принцип: острова между собой не общаются вообще. Никакого server-to-server. И это не просто проще федерации в стиле Matrix, это честнее по метаданным. При server-to-server появляется отправляющий сервер, который видит оба конца сразу: и кто пишет, и кому на какой остров. При нашей схеме такого узла нет вообще. Остров получателя узнаёт не больше, чем наш бэкенд сегодня (запечатанный конверт пришёл локальному получателю с какого-то адреса), а остров отправителя в отправке вообще не участвует. Так что ни один сервер не видит оба конца разом. Мостит их сам клиент: отправитель тянет бандл получателя с его острова, запечатывает конверт и кладёт в очередь его острова. Чтобы пережить смерть острова, пользователь прописан сразу на нескольких. Отправитель кладёт конверт во все, а клиент получателя забирает с любого живого и схлопывает дубликаты по id сообщения. Это и есть избыточность: она живёт в поведении клиента, а не в связке серверов.
Отказ обрабатывается ровно по отсутствию подтверждения доставки. Нет ack, отправитель ретраит и заодно перечитывает бандл получателя, вдруг тот сменил остров. Получатель, у которого отвалился домашний остров, поднимает новый и переиздаёт свой список островов.
И последнее, что делает всю эту конструкцию дешёвой: история сообщений локальная, она лежит на устройствах. Сервер это временный буфер, а не архив. Поэтому смерть острова почти ничего не стоит: то, что ценно, на сервере и не лежало, теряются максимум сообщения, которые были в полёте. И по запросу серверу нечего отдать, потому что истории у него физически нет.
Почему нельзя сделать единую базу красивых номеров
Нас регулярно спрашивают: ну сделайте всё-таки единую сквозную нумерацию, чтобы 777 был один на весь мир. Это не лень с нашей стороны, это фундаментальный размен, известный как треугольник Зуко.
Имя в сети может иметь максимум два свойства из трёх: человеко-приятное (короткий запоминаемый номер), глобально-уникальное (без коллизий) и без центрального издателя. Хотите короткие уникальные номера на весь мир, обязаны иметь центрального издателя этих номеров. А центральный издатель это ровно то единое сердце, от которого мы уходим. Блокчейн-реестр имён формально децентрализован, но это глобальный общий журнал, в который каждый остров обязан синкаться и которому обязан доверять, то есть снова глобальная точка координации. Для хранения базы он не нужен и даже вреден.
Поэтому мы сознательно меняем глобальную уникальность номеров на суверенитет и отсутствие единой точки отказа. Номер становится локальной ручкой острова, а непрерывность личности обеспечивает ключ.
Честные границы: что это пока НЕ решает
Теперь обязательная часть, без которой такие тексты читать нельзя.
Это уже не только дизайн. Кросс-островная доставка (мы зовём её Layer B) работает. Мы подняли второй полностью независимый остров и прогнали полный цикл: человек на одном острове пишет человеку на другом, конверт запечатывается ключом получателя, ложится в очередь его острова, забирается и расшифровывается. Это живёт в вебе и в опубликованной сборке под Android и iOS, а не на бумаге.
Мультихоуминг и failover тоже уже не план. Аккаунт держится сразу на нескольких островах, резервный приложение подбирает само, одним переключателем. Сообщение кладётся во все ящики, клиент забирает из любого живого и схлопывает дубликаты по id. Падение острова при этом невидимо для личной переписки. У первой версии есть честные рамки, и мы их не прячем: на резервном острове ходит только наш простой формат запечатывания, а не полноценная libsignal-сессия; опрашивает резерв то устройство, которое его включило; групповые чаты пока живут на одном острове. Но базовый сценарий, ради которого всё затевалось, остров умер и ничего не потеряно, уже работает и проверен на живом втором острове.
Главная нерешённая часть это rendezvous, то есть обнаружение. Теперь, когда доставка и мультихоуминг работают, именно она выходит на первый план. Релеи и острова «везде» это не решение само по себе. Настоящая инженерия в том, как клиент находит свежий релей и новый остров переехавшего собеседника, когда старое заблокировали, так, чтобы сам этот первый шаг тоже не блокировался. Это ровно те самые «мосты, которые съела моль». Тут даже Tor не идеален, и мы не делаем вид, что у нас есть серебряная пуля. Это следующий большой кусок работы, и именно на нём модель либо взлетит, либо споткнётся.
Метаданные. Сервер всё ещё видит время и IP подключения до того, как появится onion-слой (уже проектируем, но не готов). Sealed sender прячет отправителя и содержимое, релеи прячут, на какой остров вы ходите, но против глобального пассивного наблюдателя, который видит весь трафик разом, не защищён никто, включая Tor. Мы не обещаем то, чего не бывает.
Удобство имеет цену. Локальная история означает, что новое устройство не подтянет старую переписку с сервера, её там нет. Потеряли все устройства разом, потеряли историю. Лечится мультидевайсом и опциональным локальным шифрованным бэкапом, но это честный размен privacy-мессенджера, ровно как у Signal.
Зачем мы это пишем
Не для того, чтобы сказать «у нас всё готово». Готово далеко не всё. Мы пишем это, потому что разговор о двух полюсах ведётся годами и почти всегда упирается в ложный выбор между неудобным P2P и сервером, который можно изъять. Выход есть, и он не требует ни магии, ни блокчейна: разделить транспорт и данные, сделать релеи слепыми трубами, а данные распылить по островам так, чтобы у них была та же гидро-природа, что и у релеев. Тогда сердца, которое можно изъять, просто нет.
И отдельное спасибо нашим пользователям, которые принесли транспортную половину этой идеи и заодно ткнули нас носом в самую сложную её часть. Хороший фидбэк дороже любого роадмапа.
Код открыт. Если у вас есть мысли по rendezvous, нам правда интересно, это сейчас самый горячий для нас вопрос.
Ссылки
Сайт и приложения: rcq.app
Карта островов (beta): fed.rcq.app
Веб-клиент, можно попробовать прямо сейчас: chat.rcq.app
Открытый код, AGPL: github.com/rcq-messenger
Каталог островов и как поднять свой: rcq.app/servers
Комментарии (18)

atwok
11.06.2026 05:19Децентрализация упирается в пуши на мобильных устройствах, это всё что нужно знать про децентрализацию сегодня. Сперва децентрализуйте пуши для устройств Apple, Android - собирайте подписи, подкупайте кого-то в Евросоюзе, чтобы они инициативу продвигали и обязали эти компании изменить подход к уведомлениям.

rcq Автор
11.06.2026 05:19Замечание по делу, пуши действительно главная точка централизации, и на iOS вы абсолютно правы -фоновые уведомления это только APNs, ни один сторонний сервер этого не обойдёт, это ограничение ОС, а не приложения. Лоббировать Apple с Google нам не по силам, не будем притворяться.
Пара уточнений по тому, что реально можно. Это не "всё или ничего" -свой остров подключает собственный ключ APNs, и тогда пуш идёт остров -> Apple напрямую, мимо нашего центра, то есть даже пуш не централизован через нас (в self-host это настраивается). На Android мы FCM сегодня вообще не используем, доставка идёт по живому сокету пока приложение работает, а полноценный фоновый будильник пока отложен. Его, кстати, на Android можно сделать без Google, постоянным foreground-сервисом, как у Briar и FOSS-XMPP клиентов, ценой батареи. На iOS без APNs надёжного фона нет, тут крыть нечем.
И главное по сути -централизация пуша ортогональна(!) тому, что мы децентрализуем. Пуш это всего лишь "пинг, проверь ящик". Аккаунт, переписка и ключи лежат на островах, а не у Apple с Google. Отвалится пуш-канал, вы потеряете не сеть и не данные, а только мгновенность уведомления, сообщения дойдут при следующем открытии. Мы защищаемся от того, что центр выключат, как это случилось с ICQ, а не строим идеальную децентрализацию каждого байта. Пуши важная, но решаемая в рабочем порядке деталь, а не сердце системы.

gassner
11.06.2026 05:19Ну хотя бы на комментарии с нейронкой не отвечайте.
Статья у вас начинается хорошо и интересно, а потом начинает фонить нейрослоп (и соотношение смысл/количество слов падает)

rcq Автор
11.06.2026 05:19Мир меняется и мы тоже. Думаете такое бы нейронка не сказала в ответ на ваш комментарий? Или мы ответили не по делу, что пуши тут вообще никак не связаны со статьей и сутью проекта?

Shaman_RSHU
11.06.2026 05:19Техническая проблема не в централизации софта, а в монополии транспортного уровня операционной системы её создателями.

Shtoka
11.06.2026 05:19FCM не единственная возможность для пуш нотификаций. Есть открытый Unified Protocol, можно даже поставить свой сервер для максимальной приватности и гонять пуши через него, без увеличения потребления батареи и т.д.
У меня матрикс сервер и schildiChat на андроиде получает пуши через него.

fire64
11.06.2026 05:19Это все несомненно здорово, но всегда есть узкие места.
Я сейчас не говорю про архитектуру проекта, узкие места в другом.
Какие минусы я вижу и это проблемы не конкретного мессенджера, а в целом любой попытки создать новый продукт:
-
Наверное самая большая проблема - вопрос доступности и цензуры. С осени Google водит обязательную верификацию разработчиков. При качественном абьюзе Гугл может отозвать верификацию и приложение скорее всего будет недоступно на Android, хорошо, что на Андроиде это пока ещё лечится. Вопрос сколько времени это можно будет обходить?
Айфоны - вот тут все печально, Apple по жалобам выпилит ваше приложение и тут ничего не сделаешь...
Риск запрета вашего мессенджера - а его запретят, если вдруг он каким-то образом взлетит. Думаю многие слышали о том, что в Санкт-Петербурге проверяют телефоны, правда пока на факт включаемости в метро, но гарантий что не введут санкции на использование запрещённого ПО нет. Плюс опять же вопрос блокировки все равно остаётся актуальным. Тот же Тор в России практически недоступен. Да можно мучиться с мостами и прочим, но по факту из коробки не работает и скачать его без средства из трёх букв тоже давно уже нельзя.
-
Ну это касаемо именно рисков борьбы с ним, но есть и другая наверное самая большая проблема:
Отсутствие аудитории. Помните Jabber? Казалось бы, что проще, есть OpenSource сервера и клиенты под любые системы, пили любую защиту, шифрование и т.д. Но загнулся он по факту от того, что нет аудитории, нет пользователей - нет смысла.
А какая монетизация?

rcq Автор
11.06.2026 05:19Спасибо, вопросы правильные, и большинство из них честнее считать не решёнными, а постоянной борьбой. По пунктам.
Магазины и верификация -согласен, и именно поэтому мы на магазины не опираемся. На Android основная раздача это прямой APK с сайта плюс встроенный апдейтер, не Play. Верификация разработчиков ужесточается, да, но прямую установку и открытый код пережить отзыв из стора проще, чем приложению, которое живёт только в магазине. iOS тут реально слабое место: Apple контролирует раздачу целиком и по жалобе выпилит, крыть нечем. Единственное смягчение, iOS-клиент открыт (AGPL, на GitHub), его можно собрать и поставить мимо App Store, плюс в ЕС появились альтернативные сторы. Идеально это не закрывает (появится нужда - откатимся к эре Jailbreak'а, почему нет?).
Блокировки и запрет -тут работает сама архитектура, а не один обходной костыль. Смысл в том, что инфраструктура размазана по пользователям. Остров это просто почтовый ящик, его поднимает кто угодно у себя, и данные не лежат в одной точке, которую можно изъять. Транспорт это релеи, и их задумано много -дешёвые, одноразовые, поднимаемые самими пользователями, "сегодня здесь, завтра там", как гидра. Рубишь одну голову, остальные живут, единой точки входа, которую гасят одним махом, нет. Поверх этого идёт onion-маршрутизация через несколько релеев, чтобы ни один из них не видел разом и кто ты, и куда идёшь, и чтобы прятался сам факт обращения к конкретному острову.
Честно про статус -часть уже работает (наши релеи, обфускация, подписанный конфиг с ротацией без обновления приложения, self-host островов), а массовый пользовательский рой релеев и onion это то, к чему мы идём по этапам, не всё уже включено. И есть по-настоящему трудный кусок, не решённый ни у кого -первичный бутстрап, когда заблокировано всё известное (та же проблема, что у Tor с мостами, серебряной пули нет). А если само использование объявят вне закона и начнут смотреть телефоны, это уже не инженерная задача -улики убрать можно (нет телефона, сжигаемые аккаунты, decoy-PIN, приложение не кричит "запрещёнка", итд), но закон софтом не отменить.
Аудитория, проблема Jabber -cамый сильный и самый честный пункт, и он сложнее любой криптографии. XMPP технически имел всё и умер на сетевом эффекте и UX. Мы не делаем ставку "построим, и придут". У нас есть клин, которого у джаббера не было -люди под реальной цензурой, которым обход нужен прямо сейчас, это совсем другое давление к адопшену. И есть небольшая, но настоящая аудитория, под тысячу зарегистрированных, пришедшая именно из-за этого, а не вопреки UX. Урок джаббера учли буквально -одно опрятное приложение, а не двадцать клиентов на выбор, шифрование по умолчанию, а не "настройте OMEMO". Победим ли мы проблему аудитории вообще, честно, открытый вопрос, тут можно лечь как все. Но клин реальный, и первая тяга есть.
Монетизация -само приложение бесплатное, и навсегда. Платят не люди, а организации. Логика тут стандартная для open-source -код открыт, остров можно поднять самому бесплатно, но большинству это не нужно или некогда, и за удобство и инфраструктуру платят охотно. Что конкретно -бизнесу (редакции, юристы, фонды, команды, которым нельзя в Telegram или WhatsApp) готовая закрытая сеть островов в их контуре под ключ, с настройкой и поддержкой, плюс управляемый хостинг "свой остров в один клик" для тех, кто не хочет возиться с VPS. Тем, кому защита реально нужна и кто платить не может (журналисты, активисты), всё бесплатно по заявке. На рекламе и данных не зарабатываем принципиально, это убило бы смысл. Что коммерция и бескомпромиссная приватность не противоположности, уже показал SimpleX, мы той же дорогой -продаём удобство и инфраструктуру, а не пользователя.
-

Delnor
11.06.2026 05:19Локальная история как осознанный размен это сильное решение для угрозы изъятия (серверу нечего отдать), но стоит проговорить цену прямо: потеря всех устройств это потеря переписки, и мультидевайс тут становится не удобством, а частью модели надёжности

aax
11.06.2026 05:19Все изобретено до нас.
Например месседжер Jami(а это свободное ПО!) c дежурным аккаунтом на "незасыпающем" микрокомпьютере или сервере расположенном прямо у пользователя дома и включенным просто во внутренню локалку решает задачу "непропуска сообщений". Синхронизации чатов на разных устройствах - в Jami это встроеный по дефолту функционал тоесть когда Вы включаете другое устройство его чат дополняется тем что успел принять "дежурный аккаунт".
Данные аккаунтов(включая чаты) храняться локально. Месседжер Jami поддерживет и как P2P так и маршрутизацию через внешнии TURN(последнее нужно при работе клиентов за симметричным NAT).
Сам по себе TURN-сервер это просто специфический внешний маршрутизатор(точнее один из огромного множества "коллег") который ничего не хранит и изъятие которого просто изменит маршрут трафика.
Авторизация в Jami через DHT-сеть(положить которую изъятием отдельных узлов невозможно).

K0Jlya9
11.06.2026 05:19Jami не работает. И никогда толком не работал.
зы сейчас нет запроса на новые мессенджеры, их уже есть больше чем нужно. есть запрос на впн для обхода блокировок. может быть впн с расширениями, одно приложение внутри которого несколько разных поставщиков для разных приложений и целей

aax
11.06.2026 05:19Это вопрос блокируют ли у Вас UDP медитрафик ровно как например касается и работы Дискорда например. Решения проблемы помощи прохождению общеизвестны. Тема статьи работать без северной централизации, а не о "внезапно самозамедлившемся трафике" и то как ему помочь "размедлится".
К слову как только разобрался у себя с медитрафиком Jami и Дискорда мгновенно ожили. Jami кстати у меня в семье основной канал общения использую каждый день.

Irit_LS
11.06.2026 05:19Решение хорошее, опробовал сегодня и на яблоке, и на андроиде. Везде свои плюсы и минусы, но думаю они решаемые. Вот чего, конечно, не хватает - это федерации. Развернуть локальный сервер нынче имеет смысл, который сложно переоценить, но без возможности общения с другими островами - он по факту бесполезен. Потому что изолированный корп.чат можно сделать сейчас на каком угодно открытом \ коммерческом решении, но почти никто не предлагает федерацию, кроме пожалуй Matrix / Element.

chelovek-vidimka
Вы переизобрели reticulum?
rcq Автор
Нет, это другой уровень. Reticulum это сетевой стек -адресация, маршрутизация и шифрование поверх любой среды, хоть LoRa и радио, вообще без интернета. Мессенджеры (LXMF, Sideband) строят уже поверх него. Мы сеть с нуля не делаем -у нас обычный интернет и модель почтовых ящиков. Остров это тупой ящик с очередью, клиент сам кладёт запечатанный конверт в ящик(и) получателя и сам их опрашивает (читайте статью внимательнее, пожалуйста). По духу это ближе к email или Nostr, чем к Reticulum. Общее есть -идентичность это ключ, центрального авторитета нет, всё шифровано. Ближе всего к миру Reticulum у нас офлайн-режим, радиочат по Bluetooth и Wi-Fi Direct без серверов и интернета, но он намного проще и только локальный, не маршрутизируемый стек. Reticulum отличная штука, просто решает другую задачу.