Полный список того, что мониторит приложение, и обоснование технических решений.
NetPulse читает данные с ваших роутеров и показывает их на одном экране. Опрос только для чтения; всё, что пишет, явно и покрыто откатом.
Оценка от 0 до 100, сжимающая задержку, потери, аптайм и температуру. Рядом - живая пропускная способность WAN в сравнении с вашим тарифом, средняя задержка и подключённые устройства.
Семантическая карта, построенная из FDB бриджа и LLDP, когда он доступен. Рисует роутеры, коммутаторы, гипервизоры, вложенные контейнеры, проводных и беспроводных клиентов и туннели WireGuard. А когда вывод не может определить, куда что подключено, закрепите устройство за его точным роутером и портом вручную.
Каждый клиент автоматически классифицируется по паттернам hostname и OUI, с диапазоном, сигналом в dBm, первым появлением и роутером или портом, через который он общается.
Общий вид всех ваших роутеров с CPU, памятью, температурой, аптаймом, подключёнными клиентами и спарклайном нагрузки за 24 ч. Управляемые коммутаторы, опрашиваемые по SNMP, тоже полноценные участники, со своей историей трафика и клиентами.
Агент - нативный пакет OpenWrt (.ipk и .apk, от mips до x86/64) с init procd, конфигом UCI и watchdog. Сервер устанавливает и обновляет весь флот из UI и меняет токены на ходу, без переустановки.
Матрица сигнала между ТД и клиентами, события роуминга, хранящиеся 30 дней, и инструменты для перепривязки sticky-клиентов или их отключения от ТД, чтобы они выбрали лучшую.
Настоящий спектр для каждого радио: каждая сеть нарисована колоколом на оси частот, диапазоны DFS затенены, плюс непрерывная полоса занятости. Ваша сеть так, как её видит эфир.
Вид по портам коммутаторов: согласованная скорость, трафик, ошибки, состояние линка и особые оповещения, такие как призрачный порт, flapping или деградация скорости.
Список пиров, последние рукопожатия, передача по пирам и туннель, нарисованный на карте топологии, где каждый пир подписан своим настоящим именем из конфига UCI.
Статистика DNS-запросов, доля блокировок, топ заблокированных доменов и какие клиенты используют фильтр - всё рядом с остальной сетью.
Шесть категорий со своей срочностью: температура, доступная прошивка, новое устройство, рукопожатие WireGuard, сетевой порт и события роуминга. Лента в колокольчике и уведомления Web Push.
Ежедневные, еженедельные и ежемесячные отчёты о доступности по роутерам и устройствам. В разработке: трафик, активность, сводка оповещений и экспорт.
Одна колонка с закреплённым индексом, который следует за вами при прокрутке: пользователи и роли, язык для каждого пользователя, внешний вид с реальными превью, пороги данных, роутеры, сервисы и интеграции, оркестрация и авто-обновления.
DEMO_MODE=1 поднимает полную образцовую сеть из 67 устройств без реальных роутеров. Полезно, чтобы проверить интерфейс до установки.
luci-app-netpulse встраивает статус агента прямо в веб-интерфейс OpenWrt: procd, UCI, логи, перезапуск и ссылка на основное приложение.
Если у вас нет отдельной машины, сервер может работать на самом роутере OpenWrt, с конфигом UCI, TLS pinning и локальным сопряжением.
Встроенный MCP-сервер на /mcp: ИИ-ассистент запрашивает состояние флота, устройства, оповещения и топологию по HTTP с API-токеном. Инструменты только для чтения по последнему опросу.
Нарисуйте свою стойку 19 дюймов, расставьте роутеры, свитчи и серверы по юнитам, и NetPulse предложит кабельную разводку из обнаруженной топологии, включая аплинки между роутерами. Очень ранняя preview.
NetPulse публикует состояние флота в брокер MQTT, а Home Assistant обнаруживает его сам: создаёт устройства и их сущности, без ручного определения. Всё происходит в вашей локальной сети.
NetPulse - не маркетинговый продукт: это личный инструмент, созданный для решения реальных проблем. Вот решения, которые вызывают больше всего вопросов.
NetPulse родился из домашней сети с четырьмя роутерами: GL.iNet Flint 2 как шлюз и три б/у Xiaomi AX6. OpenWrt позволяет прошивать, инспектировать и контролировать железо. Без этого не было бы способа читать FDB, iwinfo или события iw, питающие приложение.
Единственный статический бинарник с отключённым CGO. Не нужен C-toolchain на целевой машине, обновление атомарной заменой, а пользователи, сессии и временные ряды хранятся в локальной SQLite с WAL. modernc.org/sqlite делает его полностью статическим.
Сервер генерирует свою пару ключей ed25519, и вы авторизуете публичный ключ на каждом роутере. После этого опрос только читает: ubus, /proc, iwinfo, bridge fdb, wg show. Действия с записью (резерв IP, блокировка устройства, оркестрация сервисов, прошивка) всегда явные, запускаются администратором и применяются со снапшотом и автоматическим откатом.
NetPulse мониторит сеть; контейнер для этого не нужен. Изолированный systemd-юнит с простым файлом сервиса, логами в journald и автоматическим перезапуском легче и проще в эксплуатации на небольшом LXC или VM.
Интерфейс - это SPA на React с Vite и Tailwind, устанавливаемая как PWA. Бэкенд передаёт живые события по SSE каждые ~5 с. Без постоянного опроса и WebSocket: SSE односторонний, переподключается сам и хорошо работает за домашними прокси.
Мы начали с DAWN для WiFi-steering, потому что это был самый заметный вариант в сообществе OpenWrt. На реальных сетях мы увидели, что он мог отклонять аутентификации цепочкой, неожиданно отключать клиентов и держать нерешённые баги в peer-to-peer модели. usteer - официальный демон OpenWrt с эквивалентными возможностями и более стабильной моделью. Миграция на usteer идёт и сохраняет ту же видимость роуминга.
Важно честно говорить о границах. NetPulse не претендует быть: