Утилита svoim
Один бинарь: анализ зависимостей, сканер security-правил, многопротокольный пакетный прокси, локальный self-hosted hub и LLM-friendly интерфейс. Токен в OS keyring, без телеметрии, кросс-платформа.
Установка
Linux x86_64 / aarch64 — один curl, без зависимостей:
# бинарь → ~/.local/bin/svoim
# если нужно: export PATH=$HOME/.local/bin:$PATH
Прямые ссылки:
macOS — собирается, ETA: cледующий релиз. Пока работает через Rosetta из Linux-сборки или через WSL.
Быстрый старт
$ svoim init
# 2. Посмотреть зависимости проекта (offline)
$ svoim analyze .
364 deps in 3 ecosystems · 12 vulns · 8 frameworks detected
# 3. Быстрый scan security-правил (~30 ms, 41 правило)
$ svoim scout
# 4. Переключить экосистему на svoim.online
$ svoim use docker npm cargo
# 5. Прогреть зависимости проекта в кеш (списывает NC)
$ svoim warm
Для прогрева и скачивания нужен положительный баланс NC. Пополнение — на /pay.
Команды
Аутентификация и состояние
svoim init
Авторизация через браузер в naasson-id (OIDC PKCE). Токен сохраняется в OS keyring под service online.svoim.cli. На диск plain-text никогда не пишется.
svoim logout
Отзывает токен на сервере, удаляет из keyring, откатывает все экосистемы к оригинальным конфигам.
svoim status [--diff]
Показывает что подменено + текущий diff к оригиналу. --check добавляет сетевые проверки доступности svoim.online.
Анализ проекта
svoim analyze [PATH]
Рекурсивный скан проекта. ~30 форматов манифестов (docker-compose, package.json, go.mod, Cargo.toml, requirements.txt, pom.xml, build.gradle, Gemfile, composer.json, mix.exs, Package.swift, pubspec.yaml, csproj, Terraform, Pulumi, Ansible, flake.lock, Conda — и т.д.). 120+ фреймворков.
Флаги: --format json|cyclonedx|markdown|sarif|html, --check-vulns (OSV.dev), --check-versions, --policy svoim-policy.yaml, --baseline old.json (diff), --watch, --fail-on critical.
svoim scout [PATH]
Статический security-сканер: 41 правило в 7 категориях (git hygiene, CI/build, containerization, secrets, IaC, code antipatterns, observability). ~30 ms на средний репо. Флаги: --min-severity critical|high|medium|low, --json.
svoim describe [PATH]
Концентрированный project brief для LLM-агентов: stack, runtime-пины, top-deps, threats, security summary. ~500 токенов. Text или --json.
svoim onboard [PATH]
Генерирует/обновляет файлы для AI-агентов: CLAUDE.md, .cursorrules, .continuerc.json, .windsurfrules. Идемпотентно — обновляет managed-block, оставляя user-edits в файле.
svoim mcp-serve
Model Context Protocol сервер по stdio. Любой MCP-aware клиент (Claude Code, Cursor, Cline) получает 5 typed-инструментов: analyze, describe, check_vulns, list_deps, get_gotchas.
Переключение экосистем и прокси
svoim use <ecosystem...>
Подменяет конфиг экосистемы на svoim.online. Перед изменением — бэкап в ~/.svoim/backup/<ISO-timestamp>. Атомарная запись (tmp + rename).
svoim restore [<ecosystem>]
Откатывает указанную экосистему (или все, если без аргумента) к состоянию до подмены.
svoim daemon [--port 9300]
Прозрачный multi-protocol прокси на localhost. Один процесс обслуживает npm, pypi, go, cargo, maven, rubygems, packagist на разных префиксах. --print-routes выводит готовые сниппеты для pip.conf / .npmrc / GOPROXY / ~/.cargo/config.toml.
svoim server --data ./svoim-data
Self-hosted hub: catalog mirror + multi-protocol package proxy + advisory cache на одном порту. --sync снимает каталог свого на диск (air-gapped после одного sync). --token <X> для LAN-deploy. Это основа $3000 self-hosted-тира.
Прогрев и тестирование
svoim warm
Запускает analyze на текущей папке и отправляет недостающие зависимости в очередь прогрева. Списывает NC по тарифу (~1 NC за пакет). При недостаточном балансе — выводит topup_url на pay.naasson.com.
svoim test <package>
Точечная проверка: реально ли пакет/тег синхронизирован в свого. Пробует разные version-схемы экосистем.
svoim ui
ratatui-эксплорер для svoim-report.json: интерактивный просмотр deps, threat-map, vulnerabilities, рекомендации.
Прогрев через API
Если хочешь интегрировать прогрев в CI или скрипт без CLI — есть эндпоинт POST /api/warm/upload: принимает svoim-report.json, отправляет missing-deps в очередь прогрева, списывает NC.
$ curl -X POST https://svoim.online/api/warm/upload \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
--data-binary @svoim-report.json
При балансе ниже стоимости запроса возвращается 402 с полями required_nc, available_nc, shortfall_nc, topup_url для прямого перехода на пополнение.
Безопасность и приватность
- Без телеметрии. Бинарь стучится только в svoim.online и api.id.naasson.com (для логина). Проверяется через tcpdump или strace.
- Токен только в OS keyring. Keychain (macOS), Credential Manager (Windows), Secret Service / GNOME Keyring (Linux). Plain-text на диск не пишется. Headless Linux без keyring — через SVOIM_TOKEN env.
- Атомарные записи + бэкап. Каждый svoim use сохраняет оригинал в ~/.svoim/backup/<ISO-timestamp> и подменяет файл атомарно (tmp + rename).
- Без root. Все изменения — в пользовательской области (~/.docker, ~/.npmrc, ~/.config/pip/, ~/.cargo/config.toml). Системные конфиги не трогаются.
- Offline по умолчанию. analyze / scout / describe работают полностью офлайн. Сеть — только по явному флагу (--check-vulns, --check-versions) или для warm / init.