Перейти к содержимому

⚡ Terminal Session Proxy Manager

Управление прокси-профилями терминальной сессии одной командой, на Rust: переключение профилей, замер задержки, диагностика соединения и контроль тех переменных окружения, которые ваши инструменты действительно читают — на macOS и Linux (Zsh / Bash).

  • Профили вместо экспортов. Опишите прокси один раз и переключайтесь одной командой или через интерактивный выбор.
  • Интерактивный TUI-дашборд. Текущий IP, геолокация, график задержки и переключение профилей на одном экране.
  • Автовыбор самого быстрого. Замер всех профилей — каждый проверяется по всем целям одновременно — с выбором лучшего и монитором, который переключает профиль при отказе активного прокси.
  • Диагностика. Замер задержки, проверка сокетов и реальный тест скорости.
  • Экспорт куда угодно. Одна команда для Docker, cURL, Git, .env и JVM-сборок — с корректным экранированием для shell.
  • Два языка. Полностью русский и английский интерфейс.

Интерактивный дашборд


Homebrew (macOS / Linux):

Terminal
brew install LebedevKondakovSergeyVach/tap/tspm

Cargo (требуется Rust 1.88+):

Terminal
cargo install tspm

В ~/.cargo/bin появится команда tspm.

Из исходников:

Terminal
git clone https://github.com/LebedevKondakovSergeyVach/Terminal-Session-Proxy-Manager.git
cd Terminal-Session-Proxy-Manager
cargo install --path .

Программа не может изменить окружение запустившего её shell — этого не может ни один процесс. Эту задачу решает shell-функция proxy, поэтому добавьте скрипт инициализации в конфигурацию вашей оболочки:

Zsh (~/.zshrc):

Terminal
eval "$(tspm init zsh)"

Bash (~/.bashrc):

Terminal
eval "$(tspm init bash)"

Перезапустите терминал или выполните source ~/.zshrc. После этого станут доступны proxy on, proxy off, proxy switch и автодополнение.

Terminal
proxy profile set home --name "Домашний" --host 127.0.0.1 --port 1080
proxy on
proxy status

Активный профиль в config.json задаёт настройки для двух способов применения:

flowchart TD
    accTitle: Где применяются настройки прокси
    accDescr: Обе команды читают активный профиль из config.json. proxy on меняет окружение текущей оболочки и её будущих дочерних команд. proxy run задаёт переменные одной дочерней команде и её дочерним процессам, сохраняя окружение оболочки.
    Profile["Активный профиль в config.json"]
    Profile --> On["proxy on"]
    Profile --> Run["proxy run -- …"]
    On --> Shell["Окружение текущей оболочки"]
    Shell --> Commands["Новые команды наследуют переменные"]
    Run --> Child["Дочерняя команда и её процессы"]

proxy on применяет переменные в текущей оболочке; запускаемые из неё команды наследуют их. proxy run -- <cmd> задаёт их для этой дочерней команды и её дочерних процессов, сохраняя окружение оболочки. Инструменты должны поддерживать эти настройки прокси. Другие терминалы и уже запущенные процессы сохраняют своё окружение. Последовательности экспорта и работы дашборда описаны в руководстве по интеграции с shell.


Всё, что меняет текущую сессию, работает через функцию proxy; остальные команды доступны и по полному имени бинарника.

КомандаОписание
proxy onВключить прокси для текущей сессии
proxy offВыключить
proxy statusСостояние прокси, IPv4, IPv6 и геолокация
proxy status --jsonТо же самое в формате JSON
proxy run -- <cmd>Выполнить одну команду через прокси, не меняя сессию
proxy promptИндикатор для строки приглашения (PS1 / PROMPT)
КомандаОписание
proxy profile listСписок всех профилей
proxy switchИнтерактивный выбор стрелками
proxy use <ключ>Переключиться на профиль по ключу
proxy profile set <ключ> [--name N] [--host H] [--port P] [--protocol P]Добавить или изменить профиль
proxy profile remove <ключ>Удалить профиль
proxy import <источник>Импорт профилей из JSON-файла или URL подписки
КомандаОписание
proxy dashИнтерактивный TUI-дашборд
proxy benchmarkЗадержка и доступность всех профилей
proxy bestЗамерить и переключиться на самый быстрый
proxy ping [--timeout МС]Задержка до эндпоинтов из config.json
proxy speedtestРеальная скорость загрузки
proxy monitorПроверка состояния с автопереключением
proxy diagnoseДиагностика сокетов и эндпоинтов
КомандаОписание
proxy git <on|off|status>Глобальные настройки прокси в Git
proxy export <docker|curl|envfile>Экспорт настроек для других инструментов
proxy env <on|off>Вывести сырые shell-команды (то, что выполняет proxy on)
... init <zsh|bash>Вывести скрипт интеграции с shell
... completions <zsh|bash|fish|powershell>Вывести скрипт автодополнения
КомандаОписание
proxy config pathПуть к активному config.json
proxy config showПоказать текущую конфигурацию
proxy settings pathПуть к settings.json
proxy settings showПоказать глобальные настройки
proxy lang <ru|en>Переключить язык интерфейса
proxy debug <on|off>Отладочный лог shell-интеграции

Доступны для любой подкоманды.

ОпцияПеременная окруженияНазначение
--config-file <ПУТЬ>TSPM_CONFIGИспользовать конкретный config.json
--settings-file <ПУТЬ>TSPM_SETTINGSИспользовать конкретный settings.json
--lang <ru|en>TSPM_LANGЯзык только для этого запуска

Переменная NO_COLOR учитывается. Удобно для разделения нескольких наборов настроек:

Terminal
TSPM_CONFIG=~/work-proxies.json proxy best

Два файла, оба в формате JSON:

  • config.json — профили и эндпоинты для проверок.
  • settings.json — язык интерфейса и необязательный путь к конфигурации.

Оба располагаются в системном каталоге конфигурации (~/Library/Application Support/tspm на macOS, ~/.config/tspm на Linux). Точный путь покажет proxy config path.

Порядок разрешения config.json: --config-file → TSPM_CONFIG → config_path из settings.json → системный каталог конфигурации.

Если файл конфигурации существует, но содержит некорректный JSON, программа сообщит об этом и не тронет файл — он никогда не перезаписывается значениями по умолчанию.

Полная схема — в docs/CONFIGURATION.ru.md, готовый пример — в configs/config.default.json.



GNU AGPLv3

Схема

Перетаскивайте схему. Масштаб — двумя пальцами или колесом. Клавиши: стрелки, +, −, 0.