Бесплатно: макет главного экрана вашего сайта за 1-2 дня - до договора и оплатыБесплатно: макет за 1-2 дняПолучить ↗
Статья03.11.2026 · 6 мин чтения · EFIMOV DEV

Как мы сделали Kordon: от скрипта для друга до программы для Mac, Windows и Linux за неделю

29 октября друг попросил скрипт: чтобы рабочие программы сами останавливались, когда отваливается VPN. Через неделю это Kordon - программа для Mac, Windows и Linux с окном в трее, панелью, расширением для браузера и ботом в Telegram. За первые сутки после выпуска вышло девять версий, её скачали 190 раз и поставили 48 звёзд на GitHub. Рассказываю, как она устроена, что сломалось по дороге и что из этого мы теперь делаем в проектах клиентов.

Зачем это понадобилось

Друг работает с ИИ-агентами только через VPN, и ему важно, чтобы они ни при каких условиях не выходили в сеть напрямую. Так бывает у многих: корпоративный VPN по требованию заказчика, рабочий адрес в другой стране, просто приватность. Днём за этим легко следить. Но ИИ-агенты вроде Claude Code или Cursor работают часами без человека: запустил задачу на ночь, ушёл спать. Если VPN за это время отвалится, агент продолжит ходить в сеть уже с домашнего адреса, и никто этого не заметит до утра.

Обычный kill switch в VPN-клиенте тут не помогает: он отключает интернет целиком или не работает вовсе, если VPN включён в режиме прокси. Нужно было другое: остановить именно рабочие программы и ничего не трогать остальное.

Первая версия была скриптом на 250 строк для macOS: раз в несколько секунд спрашивает свой внешний IP и, если он чужой, закрывает программу. Работало, но грубо: закрытый агент теряет всё, что делал.

Kordon: окно в трее в момент, когда VPN отключился
Kordon: окно в трее в момент, когда VPN отключился

Не закрывать, а замораживать

Главное решение, из которого вырос Kordon: программу не убивать, а ставить на паузу. В системе для этого есть штатные средства - SIGSTOP на macOS и Linux, NtSuspendProcess на Windows. Процесс замирает целиком: не выполняет код, не отправляет запросы, но всё помнит. VPN вернулся - процесс продолжает с того же места, как будто ничего не было.

Если разрешённый адрес не вернулся за 20 секунд, программа закрывается. Это компромисс: короткие обрывы VPN (а их большинство) проходят незаметно, а долгий обрыв не оставляет замороженную программу висеть часами.

Отдельная грабля - дочерние процессы. Claude Code запускает git, curl, MCP-серверы, и каждый из них ходит в сеть сам. Заморозить только главный процесс бесполезно: дочерние продолжат работу. Поэтому Kordon замораживает всё дерево процессов, а размораживает в обратном порядке.

Логика Kordon: пауза сразу, закрытие - только если VPN не вернулся за 20 секунд
Логика Kordon: пауза сразу, закрытие - только если VPN не вернулся за 20 секунд

Как понять, что VPN действительно отвалился

Кажется, что достаточно спросить у сервиса свой IP. На практике одной проверки мало:

  • сервисы проверки IP иногда ошибаются или отвечают старым адресом из кэша - поэтому адрес подтверждают минимум два независимых сервиса;
  • многие VPN заворачивают только IPv4, а IPv6 идёт напрямую - Kordon проверяет его отдельно;
  • опрос раз в несколько секунд - это несколько секунд утечки, поэтому Kordon слушает системные события смены сети и проверяет сразу;
  • DNS-запросы могут идти мимо VPN, даже когда адрес правильный - об этом Kordon предупреждает, а при желании замораживает программы.

Список сложился не из теории: почти каждый пункт - чей-то реальный случай из комментариев к постам про Kordon.

VPN отключился: Claude и Cursor на паузе, через 14 секунд закроются. Можно разрешить этот IP или всю страну
VPN отключился: Claude и Cursor на паузе, через 14 секунд закроются. Можно разрешить этот IP или всю страну

Утечки, которых не видно

Самая неприятная находка - VPN в режиме прокси. Браузер ходит через него, сервис проверки IP в браузере показывает правильную страну, а терминал, git и агенты, которые на системный прокси не смотрят, идут напрямую. Человек уверен, что защищён, а половина его программ светит домашний адрес.

Поэтому в Kordon появилась проверка утечек одной кнопкой: она отдельно спрашивает адрес через прокси и напрямую, проверяет IPv6 и DNS и подсказывает, какой режим включить в VPN-клиенте, чтобы он заворачивал весь трафик.

Проверка утечек в панели Kordon: внешний IP, программы без прокси, IPv6 и DNS (адреса скрыты)
Проверка утечек в панели Kordon: внешний IP, программы без прокси, IPv6 и DNS (адреса скрыты)

Что нашли пользователи

Kordon вышел вечером 2 ноября, и первые сутки ушли в основном на ошибки, которые мы сами не видели. Три самые показательные:

  • Чужой процесс. Kordon запоминал замороженную программу по номеру процесса. Если программу закрыли, а система отдала номер другому процессу, команда «разморозить» или «закрыть» могла уйти не туда. Это нашёл пользователь и прислал разбор. Теперь Kordon запоминает ещё и время запуска процесса и сверяет его перед каждым действием;
  • Обновление на Mac. После обновления из меню старая версия закрывалась, а новая не запускалась: macOS считала, что Kordon ещё работает. Исправили в 1.2.1, через 5 минут после 1.2.0;
  • Пустое окно на Windows. Окно в трее открывалось белым прямоугольником. Причина - встроенный браузер WebView2 в заранее скрытом окне нужно отдельно включать при показе. На Mac такой проблемы нет, поэтому у себя мы её не видели.

Проверка на настоящей Windows перед каждым выпуском

После пустого окна мы сделали правило: перед каждым выпуском Kordon сам запускается на чистой Windows в облаке GitHub, открывает окно в трее и панель и снимает их. Если окно пустое или не открылось - релиз не выходит. На первом же прогоне нашлись ещё две ошибки, которых на нашем компьютере не было.

Вторая история - антивирусы. Сборку 1.2.2 для Windows Kaspersky пометил как опасную: программа, которая замораживает чужие процессы и ходит в интернет, похожа на вредоносную по поведению. Ложное срабатывание, но пользователю от этого не легче. С 1.3.0 каждую сборку до публикации проверяют Kaspersky и VirusTotal, и результат пишется прямо в описание релиза.

Автоматический прогон перед выпуском: Kordon запущен на чистой Windows, окно в трее снято скриншотом
Автоматический прогон перед выпуском: Kordon запущен на чистой Windows, окно в трее снято скриншотом

Цифры первых суток

С 23:49 2 ноября до 17:00 3 ноября вышло девять версий: от 1.0.0 до 1.3.3. Kordon скачали 190 раз: 92 раза для Windows, 70 для macOS, 19 для Linux и ещё 9 раз отдельно расширение для браузера. 48 звёзд на GitHub. Рекламы не было, почти весь трафик пришёл из постов в Threads.

Сейчас в Kordon около 12 000 строк кода на Go - один код для трёх систем, окно в трее, панель, расширение для Chrome и бот в Telegram, который пишет, если VPN упал, и даёт кнопками разрешить адрес с телефона.

Скачивания по версиям за первые сутки, данные GitHub на 3 ноября
Скачивания по версиям за первые сутки, данные GitHub на 3 ноября

Что мы забираем в проекты клиентов

Kordon - наш собственный продукт, и на нём удобно проверять то, что потом делаем заказчикам. Из этой недели в стандарт студии ушло четыре вещи:

  • Обновления в один клик. Программа сама узнаёт о новой версии, показывает, что изменилось, скачивает, сверяет контрольную сумму и перезапускается. Человек видит каждый шаг, а не «нажал и непонятно, зависло или нет»;
  • Проверка на настоящем устройстве до выпуска. Не «у меня работает», а автоматический прогон на той системе, где программой будут пользоваться;
  • Честно про данные. В интерфейсе написано, что программа отправляет и куда, а счётчик пользователей включается только с согласия;
  • Короткая петля обратной связи. Ошибку, найденную пользователем утром, исправляли и выпускали в тот же день.

Если вам нужна своя программа, веб-сервис или Telegram-бот, начнём так же, как всегда: с бесплатного прототипа главного экрана. Сам Kordon бесплатный, скачать его можно на странице программы.

Частые вопросы

Что такое Kordon?

Бесплатная программа для Mac, Windows и Linux, которая ставит выбранные приложения на паузу, когда отваливается VPN или меняется IP, и размораживает их, когда разрешённый адрес вернулся. Если он не вернулся за 20 секунд, программа закрывается.

Сколько времени заняла разработка Kordon?

От первого скрипта 29 октября до версии 1.0.0 2 ноября - четыре дня. Потом за первые сутки после выпуска вышло ещё восемь версий с исправлениями и новыми функциями.

Можно заказать у EFIMOV DEV похожую программу?

Да. Мы делаем десктопные и веб-приложения, сервисы и ботов. Начинаем с бесплатного прототипа главного экрана, чтобы вы увидели результат до оплаты.

Ещё в блоге

Все статьи ↗
01.11.2026Директ с оплатой за конверсии платит не за заявки: 7 ошибок в целях и как их найти за полчасаПочему Директ с оплатой за конверсии списывает деньги за клики, вопросы в чат и ваши же тесты. 7 ошибок в целях Метрики на наших примерах и чек-лист на полчаса.19.10.2026Сайт из нейросетевого конструктора не видит Яндекс: как мы вытащили его в поиск без переписыванияПочему сайт из ИИ-конструктора вроде Lovable поисковик видит пустым, как проверить свой сайт за минуту и как мы сделали пререндер для сайта хоккейного клуба. С граблями.19.10.2026Своя CRM для маленькой студии: звонок клиенту через 15 секунд и ИИ, который разбирает разговорыКак устроена CRM веб-студии на одного-двух продавцов: автоперезвон через 15 секунд после заявки, запись и разбор звонков, ИИ в карточке и передача сделок в Директ. С граблями.

Есть задача? Нарисуем.

Бесплатный макет главного экрана за 1-2 дня - до договора и оплаты. Смета после макета.

Получить бесплатный макет ↗