ONYX — мой pet-project: self-hosted, анонимный, E2E-шифрованный мессенджер. Клиент — Flutter, есть под Windows/Linux/macOS/Android, аккаунт без телефона и почты.
Вышла v1.7-beta. Список изменений ниже, но текст в основном про одну фичу: WardLink, ради которой стоило катить этот релиз.
Проблема
Даже на self-hosted сервере синхронизация состояния (например, какие чаты в избранном и в каком порядке) между телефоном и ноутбуком обычно всё равно идёт через сервер. Для самих сообщений это нормально. Не нравилось другое: ради локальной задачи («два устройства в одной квартире») трафик гоняется через сервер, который держишь совсем для другого.
WardLink делает это напрямую между устройствами по LAN, без сервера в петле для этой конкретной задачи.
Как это устроено
Пара устройств один раз сопрягается через QR: сканирующая сторона пинит показанное устройство, после чего по LAN уходит nonce-аутентифицированный запрос на сопряжение, и второе устройство тоже начинает доверять первому. Получается взаимное доверие с одного скана.
На каждом устройстве постоянный
X25519identity-ключ в секьюрном хранилище, в отличие от эфемерных ключей, которые ротируются при каждом запуске для обычного LAN-мессенджинга. Сессионный ключ — static-static ECDH + HKDF.Синхронизация pull-based: каждая сторона независимо запрашивает у пира манифест (какие сообщения и чаты есть у него), сравнивает со своим состоянием и подтягивает недостающее. Центрального координатора нет.
Большие медиафайлы передаются стримом, AES-GCM кадрами по 256KB, без base64 и без загрузки файла целиком в память. Это снимает прежнее ограничение в 200MB и поднимает лимит до 512MB–4GB (по умолчанию 2GB).
Синхронизируются только избранные чаты, полностью, всегда.
Честно про ограничения: это LAN, не интернет. Работает, пока оба устройства в одной сети. Для синхронизации через интернет всё ещё нужен сервер. WardLink закрывает другой сценарий: «два моих устройства рядом».
Что ещё в релизе
галерея медиа в каждом чате
поиск по настройкам и поиск чатов по названию или ключевому слову
бэкапы вручную или по расписанию
настраиваемая кнопка прокрутки вниз
markdown во вкладке «что нового», где публикуется тот же список изменений
редизайн плеера, диалоговых окон, настроек, плюс реструктуризация последних
новый движок хранения данных
на ПК папки в избранном остаются разблокированными до конца сессии, а не запираются заново
убрал анимацию появления сообщений при открытии чата: больше тормозила, чем радовала
из багфиксов: критические баги бэкенда, влиявшие на отправку сообщений, баг с анимацией стрелок в настройках, переключатель биометрии больше не показывается там, где биометрия недоступна или выключена
Если обновляетесь с предыдущей версии: в этом релизе локальное хранилище переезжает на новый движок, и миграция данных проходит автоматически при первом запуске. Если истории в чатах много, дайте ей немного времени. По моим собственным замерам, после миграции всё работает примерно на 70-80% быстрее.
Репозиторий и полный список изменений: https://github.com/wardcore-dev/onyx/releases/tag/v1.7-beta
Это бета и один разработчик, так что баги не возможно, а будут. Если найдёте баг, заведите issue в репозитории: сейчас это реально полезно.
Комментарии (4)

Void-Cowboy
19.06.2026 17:16А знаете где еще есть локальная сеть? В
вартан..в Yggdrasil!И при этом Yggdrasil уже по умолчанию "закриптован" потому уровень шифрования можно вынести за скобки
Интересная разработка, такое реально очень хорошо стыкуется со всякими меш-сетями (не только Yggdrasil), единое что нужно сделать фокус на слабом и нестабильном подключении что бы не ложило всю меш-сеть когда кто-то захочет передать другу свои гигабайты нюдсов
lazarus_net
«Есть такая партия» - qtox - клиент и протокол. Единственная проблема убили клиента под IPhone.
P2P мессенджер плюс может работать как в локалке так и через интернет.
alexanderniki
Протокол называется Tox. qTox - это десктопный клиент. В F-Droid базе Tox есть даже довольно прикольные приложеньки вроде p2p шаринга геопозиции. Идея интересная. Однако, последний раз, когда я пробовал его использовать по назначению - как мессенджер - всё было очень печально :(
amartyno
Там же в F-Droid есть ещё Jami, значительно приятнее и стабильнее Tox, но всё равно с проблемами
Без проблем и даже симпатичный - это Keet, он явно вдохновлялся функционалом и внешним видом Telegram, но он пока не полностью с открытым кодом, вроде, читал что через некоторое время обещают полностью открыть: https://github.com/holepunchto/keet-mobile-releases/releases
Keet сделан как демонстрация возможностей децентрализованных библиотек holepunch - там много интересного и это как будто самая хорошая реализация деценирализации во всех основных аспектах, основа чтобы делать множество других p2p приложений.