Open source · Apache-2.0 · v1.4.2Открытый код · Apache-2.0 · v1.4.2

Unified Patch Management & Security Hardening CLI.Единая CLI для патчей и усиления систем.

A lightweight agent and a standalone tool for kernel updates, vulnerability review, and rollback of broken packages across mixed server fleets.Лёгкий агент и отдельная утилита для обновления ядра, разбора уязвимостей и отката сбойных пакетов на смешанных серверах.

  • One inventory for APT, DNF, Pacman, Winget, and Homebrew.Один список пакетов для APT, DNF, Pacman, Winget и Homebrew.
  • Live kernel patches when the running kernel supports them.Live-патч ядра, если его публикует дистрибутив.
  • CVE checks that keep working from a local cache.Проверка CVE работает и с локального кэша.
curl -fsSL https://syspatcher.com/install.sh | sh
brew install syspatcher/tap/syspatcher
powershell -c "irm https://syspatcher.com/install.ps1 | iex"

The bootstrap script does not install a binary from this host. Release builds are cut from tagged commits. See the docs.Скрипт установки не скачивает бинарник с этого сайта. Сборки выходят из помеченных тегов. Смотрите документацию.

FeaturesВозможности

Kernel live-patchingLive-патч ядра

Apply a tested kernel fix on Linux without a reboot when the distro publishes a live patch. If the kernel cannot take it, SysPatcher records a reboot window instead of forcing one.Ставит проверенное исправление ядра Linux без перезагрузки, если дистрибутив выпустил live-патч. Если ядро его не принимает, SysPatcher записывает окно перезагрузки и сам машину не перезагружает.

Cross-platform packagesПакеты на разных системах

The same plan talks to APT, DNF, Pacman, Winget, and Homebrew. A blacklist is a package name, not a distro-specific hold file you have to keep in sync by hand.Один план говорит с APT, DNF, Pacman, Winget и Homebrew. Чёрный список — это имя пакета, а не отдельный hold-файл под каждый дистрибутив.

Agentless and daemonБез агента и с демоном

Run syspatcher from cron or SSH. Or leave a small daemon that only wakes for the schedule in the config file. Idle CPU stays at the noise floor.Запускайте syspatcher из cron или по SSH. Или оставьте маленький демон, который просыпается только по расписанию из конфига. В простое процессор почти не занят.

CVE database, offline cacheБаза CVE и офлайн-кэш

Match installed versions against the 2024 and 2025 advisory sets. The last successful snapshot stays on disk, so a check still runs when the host cannot reach the feed.Сверяет установленные версии с наборами рекомендаций 2024 и 2025 года. Последний удачный снимок остаётся на диске, и проверка проходит, даже если лента недоступна.

ArchitectureАрхитектура

Three stages, one binary. Nothing phones home unless you set a webhook.Три шага, один бинарник. Наружу ничего не уходит, пока вы сами не зададите webhook.

  1. InventoryИнвентаризация Read the package database, the running kernel, and the enabled repositories. No extra agent is required for a one-shot check.Читает базу пакетов, текущее ядро и включённые репозитории. Для разовой проверки отдельный агент не нужен.
  2. PlanПлан Diff that inventory against the CVE cache and your blacklist. The plan is a file you can review, diff, and check in.Сравнивает инвентарь с кэшем CVE и вашим чёрным списком. План — это файл: его можно прочитать, сравнить и положить в git.
  3. Apply or roll backПрименить или откатить Apply the plan, or restore the previous package set from the local journal. A failed unit is reported; the rest of the plan is not guessed forward.Применяет план или возвращает предыдущий набор пакетов из локального журнала. Сбойный пакет отмечается, остальные шаги сами не додумываются.

CLI usageКоманды

Switch the example. The output is what a Debian 12 host prints for that command.Переключите пример. Так выглядит вывод на хосте Debian 12.

$ syspatcher check --critical --cve-only
syspatcher 1.4.2  host=edge-03  os=debian 12  arch=x86_64
inventory  ok   412 packages   kernel 6.1.112

CVE            SEV        PKG        INSTALLED    FIXED
CVE-2025-1184  critical   openssl    3.0.11-1     3.0.15-1
CVE-2024-5535  high       openssl    3.0.11-1     3.0.14-1
CVE-2025-0913  critical   sudo       1.9.13p3     1.9.16p2

3 advisories · 2 critical · reboot not required
live patch available for the running kernel
hint: syspatcher apply --cve CVE-2025-1184 --dry-run$ syspatcher check --critical --cve-only
syspatcher 1.4.2  host=edge-03  os=debian 12  arch=x86_64
инвентарь  ok   412 пакетов   ядро 6.1.112

CVE            SEV        PKG        УСТАНОВЛЕНО  ИСПРАВЛЕНО
CVE-2025-1184  critical   openssl    3.0.11-1     3.0.15-1
CVE-2024-5535  high       openssl    3.0.11-1     3.0.14-1
CVE-2025-0913  critical   sudo       1.9.13p3     1.9.16p2

3 замечания · 2 critical · перезагрузка не нужна
для текущего ядра есть live-патч
подсказка: syspatcher apply --cve CVE-2025-1184 --dry-run
$ syspatcher apply --kernel --live --dry-run
plan id 7f3a1c  mode=live  reboot=never
  keep   linux-image-6.1.0-28   blacklisted
  patch  kernel livefix K-2025.09.2
         affects: tcp, io_uring
         reboot: not required
  skip   40 packages below policy severity

dry-run only. pass --confirm to write the journal.$ syspatcher apply --kernel --live --dry-run
план 7f3a1c  режим=live  перезагрузка=never
  оставить  linux-image-6.1.0-28   в чёрном списке
  патч      kernel livefix K-2025.09.2
            затрагивает: tcp, io_uring
            перезагрузка: не нужна
  пропуск   40 пакетов ниже порога политики

только просмотр. чтобы записать журнал, нужен --confirm.
$ syspatcher rollback --last
journal entry 2026-03-02T03:17:04Z  plan 7f3a1c
restoring sudo 1.9.16p2 → 1.9.13p3
openssl left in place (not part of this plan)
status: rolled back 1 package · reboot not required$ syspatcher rollback --last
запись журнала 2026-03-02T03:17:04Z  план 7f3a1c
возврат sudo 1.9.16p2 → 1.9.13p3
openssl без изменений (не входил в этот план)
статус: откатан 1 пакет · перезагрузка не нужна

OS matrixМатрица систем

Versions we run in CI. Older point releases of the same major line usually work. armv7 is intentionally narrow.Версии, которые гоняем в CI. Более старые точечные релизы той же ветки обычно подходят. armv7 оставлен узко.

SystemСистема VersionsВерсии BackendМенеджер ArchitecturesАрхитектуры
Debian11, 12APTx86_64, aarch64
Ubuntu22.04, 24.04APTx86_64, aarch64
RHEL, Rocky, Alma8, 9DNFx86_64, aarch64
Fedora40, 41DNFx86_64, aarch64
Arch LinuxrollingrollingPacmanx86_64
Alpine3.19, 3.20apkx86_64, aarch64, armv7
FreeBSD13, 14pkgx86_64, aarch64
macOS13, 14, 15Homebrewx86_64, aarch64
Windows Server2019, 2022, 2025Wingetx86_64

ConfigurationКонфигурация

One YAML file, usually /etc/syspatcher/config.yaml. The daemon and the cron entry read the same file.Один файл YAML, обычно /etc/syspatcher/config.yaml. Его читают и демон, и cron.

  • schedule is the only clock. There is no hidden retry loop.schedule — единственные часы. Скрытого цикла повторов нет.
  • blacklist accepts exact names and a trailing wildcard.blacklist принимает точное имя и звёздочку в конце.
  • notify.webhook is optional. Leave it out and nothing is sent.notify.webhook необязателен. Если поля нет, ничего не отправляется.

Field reference in the docsОписание полей в документации

schedule:
  cron: "17 3 * * *"
  timezone: UTC
  window: "02:00-05:00"

policy:
  reboot: never
  kernel: live
  severity: critical

blacklist:
  - linux-image-generic
  - docker-ce
  - nvidia-driver-*

notify:
  webhook: https://hooks.example.net/syspatcher
  on:
    - failed
    - reboot-required
    - cve-critical