Sonar: управление сервисами и портами на локальном хосте
Sonar — это CLI инструмент для просмотра и управления сервисами, которые слушают порты на локальном хосте. Он упрощает разработку, позволяя организовать и контролировать все активные процессы и контейнеры, работающие на твоем компьютере.
Sonar группирует порты по проектам и именам сервисов, что упрощает взаимодействие с ними. Например, с помощью команды sonar start ты можешь запустить серверы разработки и наблюдать за их состоянием в виде дерева, а также выполнять команды для их ожидания, ведения логов и остановки одним нажатием. Это делает его полезным как для разработчиков, запускающих приложения и контейнеры, так и для тех, кто хочет получить упорядоченный обзор всех работающих сервисов.
Проект написан на Go и устанавливается через Homebrew или скрипт установки. Учти, что для использования Homebrew нужно доверять стороннему репозиторию. Ограничений вроде необходимости API-ключа или лицензионных ограничений у Sonar нет, однако он может быть менее полезен в сложных облачных окружениях, где службы могут быть распределены по разным хостам.
Sonar — это инструмент, который показывает все процессы, слушающие на localhost, и группирует их по репозиториям или сервисам. Он позволяет запускать, следить за логами и останавливать все твои серверы и контейнеры Docker с помощью одной команды. Кроме того, Sonar автоматически подбирает порты для запуска, так что ты можешь запускать несколько экземпляров одного и того же приложения без конфликтов портов.
Установка
Sonar можно установить несколькими способами:
- Homebrew (macOS / Linux):
Для использования стороннего репозитория нужно сначала доверить его:brew install raskrebs/sonar/sonarbrew trust raskrebs/sonar - Скрипт установки:
Этот скрипт скачивает последний бинарный файл в `~/.local/bin` и добавляет его в PATH. Можно использовать его и на Windows:curl -sfL https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.sh | bashirm https://raw.githubusercontent.com/raskrebs/sonar/main/scripts/install.ps1 | iex - Используя Go:
go install github.com/raskrebs/sonar@latest
Запуск и использование
Для работы с Sonar в корне репозитория нужно создать файл конфигурации `sonar.yaml`, который описывает, как запускаются твои сервисы. Вот пример структуры файла:
name: my-app
services:
- name: db
cmd: docker compose up db
port: 5432
- name: api
cmd: uv run uvicorn app:app --port ${port}
port: auto
depends_on: [db]
- name: frontend
cmd: npm run dev -- --port ${port} --strictPort
port: auto
depends_on: [api]
env:
VITE_API_URL: ${api.url}
После этого можно запустить проект с помощью команды:
sonar start
Sonar автоматически выберет свободные порты для сервисов с параметром `port: auto`. Это позволяет запустить несколько экземпляров рабочего дерева рядом, не сталкиваясь с конфликтами портов.
Если файл `sonar.yaml` отсутствует, можно запустить команду напрямую:
sonar start -- npm run dev
Команды
Некоторые полезные команды для работы с Sonar:
- Список запущенных процессов:
sonar list --tree - Запуск сервисов:
sonar start - Остановка сервисов:
sonar down - Получение информации о сервисе:
sonar info 3000
Ограничения
Sonar работает только на платформах macOS, Linux и Windows, но некоторые функции, такие как desktop-приложение, пока недоступны для Windows. Важно также помнить, что Sonar может не видеть процессы, запущенные от других пользователей. Для их отображения рекомендуется использовать `sudo`.
Кроме того, если порт управляется другой системой (например, через systemd или Docker с параметром `restart: always`), Sonar не сможет его остановить и отключить. И, конечно, необходимо убедиться, что все зависимости, указанные в `sonar.yaml`, корректны, иначе могут возникнуть ошибки при запуске.
Радар проекта: 58 из 100 — рабочий, но с оговорками
- Импульс 0 ≈ 1 звезда в месяц
- Темп разработки 91 179 коммитов за 12 недель
- Зрелость 81 проекту 8 месяцев, 35 релизов
- Сообщество 43 9 участников, 34 форка
- Свежесть 90 последний коммит — 17 дней назад
- Быстрый старт 30 есть: команда установки
- Готовность к продакшену 55 релиз v0.10.0, автосборка
- Безопасность и доверие 40 лицензия MIT
- Документация 97 README 43.9 тыс. знаков, 43 раздела, папка docs
- Экосистема 54 1 подписчик на обновления, 9 тем
Как считаем
Только открытые данные GitHub на 31.10.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: raskrebs/sonar →
RepoRadar