Проект: PySentry  Публичный пост
28 августа 2025  206
PySentry
https://github.com/nyudenkov/pysentry

Шалом алейкум! Это мой первый серьезный вклад в опенсорс (не считая коммитов в игрушку Space Station 13).

PySentry - это CLI тулза написанная на Rust, которая берет твой питонячий проект, анализирует зависимости и говорит "вот эти библиотеки уязвимы, обнови". Основная фишка: он в 15-30 раз быстрее существующих решений типа pip-audit, умеет работать с lock файлами (uv.lock, poetry.lock, pylock.toml, Pipfile.lock), поддерживает несколько баз уязвимостей и имеет систему кеширования.

Как появилась идея? Что вдохновило?

Я активно использую uv и решил подумать, чем я могу помочь проекту. Полистал иссуи на гитхабе и нашел фичреквест на добавление команды для аудита. Подумал че б и нет, и сделал им пулл реквест.

Написал рабочий код, тесты пройдены, но мейнтейнеры в итоге сказали, что не могут взять на себя долгосрочную поддержку этой фичи. Потому что большое. Понять их можно.

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

Что вошло в прототип и сколько времени на него было потрачено?

От идеи до релиза текущей версии - примерно два месяца.

В тот код, что я пульнул в uv, вошло:

  • Парсинг основных форматов: uv.lock и pyproject.toml
  • Интеграция с PyPA Advisory Database
  • Базовый кеш для хранения уязвимостей

Какой технологический стек вы использовали? Почему?

Rust - основной выбор, вдохновленный успехом uv и ruff. У меня есть опыт с растом с 2016 года, периодически писал всяческие пет-проекты на нём.

Почему не Python? Производительность.

Архитектурные решения:

  • Асинхронное получение данных из баз уязвимостей
  • Кеширование уязвимостей и заивисимостей отдельно
  • Потоковая обработка больших наборов данных

Интеграции:

  • Несколько баз данных уязвимостей: PyPA Advisory, OSV.dev, PyPI JSON API
  • Внешние инструменты для разрешения зависимостей: uv и pip-tools для requirements.txt
  • Форматы вывода: JSON, SARIF, Markdown для разных рабочих процессов

Как вы запускались и искали первых пользователей?

Честно? Почти никак специально не искал. Пользователи приходили сами:

  • Часть нашла проект через мой PR в uv и связанный иссуй (мейнтейнеры дали добро оставить ссылочки)
  • Написал пару твитов, которые получились довольно нелепыми (я плохо их пишу и не разбираюсь в твиттере), они не особо взлетели (но, вастрик, спасибо за репост!)
  • Недавно о проекте рассказали в подкасте PythonBytes

Самый значимый фидбек получил от Jonathan'a Dekhtiar'a из NVIDIA (тимлид TensorFlow-RT и WheelNext) - "Let's just say than in one week since the project got its first release, there is not one mention of pip-audit in any of my projects anywhere. Boom nada gone."

С какими самыми неожиданными трудностями пришлось столкнуться?

Отклонение PRа в uv было не очень приятным. Потратил кучу времени, но в итоге "спасибо, но не будем это поддерживать". Это конечно моя ошибка (моей гиперфиксации и импульсивности), что я не посоветовался с ребятами, окей ли вообще будет взять это в работу. Зато вон, теперь своей опенсорс проектик. Кайфёж.

Из технических:

  • Сборка wheels под винду: до сих пор нет колёс под винду из-за сложностей с компиляцией. Юзерам приходится использовать уже скомпиленные бинары из релиза или устанавливать через cargo.
  • Интеграция резолверов: интеграция с uv и pip-tools оказалась сложнее, чем ожидал. Нужно было обеспечить изолированное выполнение, правильную работу кеша.
  • Performance tuning: казалось бы, Rust = быстро, но пришлось много заниматься оптимизацией: асинхронность, кеширование, использование памяти (которое пока что в процессе оптимизации)

Сколько потратили и заработали? Есть идеи как это можно монетизировать? А заодно планы на будущее.

Потратил: в деньгах - ничего. Человекочасов - около двух месяцев интенсивной разработки в свободное время.

Заработал: $0. Проект полностью опенсорсный и бесплатный.

Планы монетизации: у меня есть план по развитию SaaS модели:

  • CLI останется бесплатным
  • SaaS платформа: real-time мониторинг уязвимостей и в будущем думаю развивать статический анализатор кода (скорее всего тоже в опенсорс), привязывая и тренируя к этому всему нейронки для распознавания/подтверждения уязвимостей.

Но сначала нужно добиться релиза 1.0.0 и получить хорошую узнаваемость в сообществе. Без качественной опенсорсной основы SaaS скорее всего не взлетит.

Нужны ли какие-то советы или помощь Клуба?

Дап! Есть вопросики.

Продуктовые моменты:

  • Кто использует сканеры уязвимостей в своих проектах? Какие проблемы с существующими решениями?
  • Что было бы классно видеть в SaaS решении?

Бизнесовые:

  • Как правильно строить freemium (если это можно так назвать) модель в B2B секурности?
  • Продажи энтерпрайзу
  • Стратегии для прайсинга

Сообщество(нные):

  • Как эффективно рассказывать о подобных продуктах?
  • Какой должен быть подход к маркетингу?
  • Поставите звёздочку, если проект нравится?

Какой совет вы бы сами могли дать идущим по вашим стопам?

Пара наблюдений:

Отказ - это не провал: отклоненный PR в uv стал началом более интересного самостоятельного проекта. Иногда "нет" открывает новые возможности.

Реальные отзывы пользователей > показатели: один отзыв от крутого разраба оказался важнее сотни звездочек на гитхабе (но вы оставляйте <3)


Проект активно развивается, всегда рад фидбеку. GitHub: https://github.com/nyudenkov/pysentry, сайт: https://pysentry.com

2 комментария 👇

Кстати, а ещё я ищу работу питонистом-бекендером.
У меня 6+ лет опыта, за спиной самые разные проекты и довольно крутой опыт. Посмотреть мою сивишку можно на гитхабе - тык

А ещё из прикольных решений (мне это предложил как раз тот чувак из нвидии) - автоматические бенчмарки с каждым релизом и создание actions-ботом ПРа для обновления результатов в репе.
https://github.com/nyudenkov/pysentry/tree/main/benchmarks/results

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб