CLI

Утилита svoim

Один бинарь: анализ зависимостей, сканер security-правил, многопротокольный пакетный прокси, локальный self-hosted hub и LLM-friendly интерфейс. Токен в OS keyring, без телеметрии, кросс-платформа.

Установка

Linux x86_64 / aarch64 — один curl, без зависимостей:

$ curl -fsSL https://svoim.online/cli/install.sh | bash
# бинарь → ~/.local/bin/svoim
# если нужно: export PATH=$HOME/.local/bin:$PATH

Прямые ссылки:

macOS — собирается, ETA: cледующий релиз. Пока работает через Rosetta из Linux-сборки или через WSL.

Быстрый старт

# 1. Один раз — авторизация через браузер, токен в OS keyring
$ 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).

docker npm pip go cargo maven rubygems packagist

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.

$ svoim analyze . --format json -o svoim-report.json
$ 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.