v0.1 Beta Offline-first, cross-platform metapackage manager written in Rust. Get started → Офлайн-первый, кроссплатформенный мета-менеджер пакетов на Rust. Начать →

The universal package manager
abstraction layer
Универсальный менеджер пакетов
абстракция над всем

One interface to rule them all. SPM routes your commands to winget, scoop, choco, apt, brew, pacman — without you ever needing to remember which one. Один интерфейс, чтобы править всеми. SPM направляет ваши команды в winget, scoop, choco, apt, brew, pacman — без необходимости помнить, какой где.

Rust-native Offline match engineОфлайн Match Engine SQLite stateсостояние TOML pluginsплагины
$ cargo install spm-cli
$ pip install spm-cli
$ npm install -g spm-meta
$ curl -fsSL https://raw.githubusercontent.com/shell-windon/spm/main/install.sh | bash
SPM Terminal Interface

What is SPM?Что такое SPM?

SPM (Soft Package Manager) is a lightning-fast, universal abstraction layer over your system’s native package managers. Instead of remembering different commands for each one, you use a single, unified interface. SPM (Soft Package Manager) — это молниеносный универсальный слой абстракции над нативными менеджерами пакетов вашей системы. Вместо запоминания разных команд для каждого, вы используете единый интерфейс.

  • *
    Blazing FastМолниеносныйWritten in pure Rust. Zero bloat, zero runtime overhead.Написан на чистом Rust. Никакого блоата, нулевые накладные расходы.
  • *
    Universal BindingУниверсальная привязкаAutomatically detects and uses winget, scoop, apt, brew, pacman, and choco.Автоматически определяет и использует winget, scoop, apt, brew, pacman и choco.
  • *
    Offline Match EngineОфлайн Match EngineResolves common aliases to their true native IDs instantly, without REST APIs.Мгновенно преобразует псевдонимы в настоящие ID без внешних API.
  • *
    Centralized StateЦентрализованное состояниеMaintains an ACID-compliant SQLite database of all your apps.Ведёт ACID-совместимую SQLite-базу данных всех ваших приложений.
  • *
    Data-Driven PluginsПлагины без кодаExtend SPM with 0 lines of code by writing simple TOML templates.Расширяйте SPM без единой строки кода через простые TOML-шаблоны.
View on GitHubСмотреть на GitHub

Built for developers, by developersСделано разработчиками для разработчиков

SPM is designed to solve the fragmented package ecosystem on Windows — combining Winget, Chocolatey, and Scoop into a flawless experience — while also unifying Linux (apt, pacman) and macOS (brew) under one roof. SPM создан для решения фрагментированной экосистемы пакетов на Windows — объединяя Winget, Chocolatey и Scoop в безупречный опыт — а также объединяя Linux (apt, pacman) и macOS (brew) под одной крышей.

30K+
App definitions in the offline match engineОпределений приложений в офлайн Match Engine
6
Supported package managersПоддерживаемых менеджеров пакетов
0
External API calls for package resolutionВнешних API-запросов для разрешения имён

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

SPM is built on a modular, highly decoupled architecture in Rust. Each component handles its part of the package management process. SPM построен на модульной, высоко декомпозированной архитектуре на Rust. Каждый компонент отвечает за свою часть процесса управления пакетами.

01Match Engine

Built-in offline database with 30,000+ definitions. When you type spm install vlc, the Match Engine instantly translates it to target identifiers (e.g., VideoLAN.VLC).Встроенная офлайн-база с 30 000+ определений. Когда вы вводите spm install vlc, Match Engine мгновенно преобразует его в целевые идентификаторы (например, VideoLAN.VLC).

02Planner

Ranks package managers by priority. pacman and winget get highest priority, slower ones fall back gracefully. Generates a transaction sequence before touching the system.Ранжирует менеджеры пакетов по приоритету. pacman и winget получают высший приоритет, более медленные — fallback. Генерирует последовательность транзакций перед тем, как коснуться системы.

03Async Adapters

All wrappers implement the async PackageManager trait. SPM acts as an intelligent orchestrator, streaming native outputs to the terminal. Supports parallel execution.Все обёртки реализуют асинхронный трейт PackageManager. SPM — интеллектуальный оркестратор, транслирующий нативные выводы в терминал. Поддерживает параллельное выполнение.

04SQLite State

Transactions committed to ~/.config/spm/spm.db. Unified lists, instant removal, change history with ACID guarantees.Транзакции фиксируются в ~/.config/spm/spm.db. Единые списки, мгновенное удаление, история изменений с ACID-гарантиями.

CommandsКоманды

SPM uses standard intuitive verbs for all operations. SPM использует стандартные интуитивные глаголы для всех операций.

[-]installAutomatically resolve the best ID and install via the optimal manager.Автоматически подбирает ID и устанавливает через оптимальный менеджер.
$ spm install obsidian
[-]removeRemove applications tracked across any package manager effortlessly.Удаляет приложения, отслеживаемые любым менеджером пакетов.
$ spm remove obsidian
[-]updateUpdate a single app, or trigger a massive, concurrent update across all package managers at once.Обновляет одно приложение или запускает массовое обновление сразу во всех менеджерах.
$ spm update
[-]listDisplay a brilliantly formatted ASCII table of all tracked applications across the OS.Показывает красиво отформатированную ASCII-таблицу всех отслеживаемых приложений.
$ spm list
[-]doctorRun a health check on your active native environments and plugins.Запускает диагностику активных окружений и плагинов.
$ spm doctor
[-]self-updatePull the absolute latest release instantly without re-invoking pip/npm/cargo.Мгновенно загружает последний релиз без повторного вызова pip/npm/cargo.
$ spm self-update
Tip:Совет: Append --dry-run to see the Execution Plan without acting on it.Добавьте --dry-run чтобы увидеть план выполнения без реальных действий.

PluginsПлагины TOML

Data-Driven Plugins — extending functionality without writing code. Just place a TOML file in the plugins directory, and SPM synthesizes a native driver. Data-Driven Plugins — расширение функциональности без единой строки кода. Достаточно поместить TOML-файл в директорию плагинов, и SPM синтезирует нативный драйвер.

A plugin is a TOML file describing commands for managing packages through any CLI tool. SPM reads these files at startup and registers each plugin as a virtual package manager. Плагин — это TOML-файл, описывающий команды для управления пакетами через произвольный CLI-инструмент. SPM читает файлы при запуске и регистрирует каждый плагин как виртуальный менеджер пакетов.

TOML Plugin StructureСтруктура TOML-плагина

name = "cargo"
description = "Rust package manager plugin"

# Availability checkПроверка доступности
is_available_cmd = "cargo --version"

# OperationsОперации
install_cmd = "cargo install {pkg}"
remove_cmd = "cargo uninstall {pkg}"
update_all_cmd = "cargo install-update -a"
update_pkg_cmd = "cargo install {pkg} --force"
list_cmd = "cargo install --list"

# List parsingПарсинг списка
list_regex = "(?P<name>[\\w-]+) v(?P<version>[\\d\\.]+):"

Installing PluginsУстановка плагинов

  1. Create a TOML file in ~/.config/spm/plugins/ (Linux/macOS) or %APPDATA%/spm/plugins/ (Windows)Создайте TOML-файл в ~/.config/spm/plugins/ (Linux/macOS) или %APPDATA%/spm/plugins/ (Windows)
  2. Fill in fields: name, is_available_cmd, operation commandsЗаполните поля: name, is_available_cmd, команды операций
  3. Optionally add list_regex for spm listОпционально добавьте list_regex для spm list
  4. Run spm doctor to verifyЗапустите spm doctor для проверки
Note:Внимание: The {pkg} placeholder in commands is automatically replaced with the package name.Плейсхолдер {pkg} в командах автоматически заменяется на имя пакета.

How to useКак использовать

A quick walkthrough of SPM in action. Краткий обзор SPM в работе.

Click to watch — video URL not yet setНажмите для просмотра — видео пока не добавлено

FAQ

  • SPM (Soft Package Manager) is a universal abstraction layer over your system’s native package managers. Instead of remembering different commands for each one, you use a single interface. SPM (Soft Package Manager) — это универсальный слой абстракции над нативными менеджерами пакетов. Вместо запоминания разных команд для каждого, вы используете единый интерфейс.
  • SPM is heavily optimized for Windows (Winget, Chocolatey, Scoop). It also runs on Linux (apt, pacman) and macOS (brew). Full first-class parity for all platforms is planned. SPM оптимизирован для Windows (Winget, Chocolatey, Scoop). Также работает на Linux (apt, pacman) и macOS (brew). Полная паритетная поддержка всех платформ запланирована.
  • No. SPM has an embedded offline match engine with 30,000+ app definitions. Package resolution happens instantly without external API calls. Only the actual package download requires internet. Нет. SPM имеет встроенный офлайн-движок сопоставления с 30 000+ определений. Разрешение имён пакетов происходит мгновенно без внешних API. Интернет требуется только для загрузки пакетов.
  • Create a TOML file in ~/.config/spm/plugins/ with the package manager commands and a regex for parsing. Run spm doctor and SPM synthesizes a native driver within milliseconds. Создайте TOML-файл в ~/.config/spm/plugins/ с командами менеджера и Regex для парсинга. Запустите spm doctor, и SPM синтезирует драйвер за миллисекунды.
  • SPM is currently in v0.1 Beta. It has been extensively tested on Windows. Linux and macOS support works but is still evolving. Massive updates are planned. SPM находится в стадии v0.1 Beta. Протестирован на Windows. Поддержка Linux и macOS работает, но ещё развивается. Запланированы масштабные обновления.

Stay updated on SPM developmentСледите за развитием SPM

Get notified about new releases, features, and Linux/macOS parity updates. Получайте уведомления о новых релизах, функциях и обновлениях.

GitHub
DocsДокументация
ReleasesРелизы
Crates.io
NPM
© 2026 SPM MIT LicenseЛицензия MIT GitHub