gwm CLI
Менеджер git worktree на Rust с TUI: создает ветку, копирует файлы, запускает setup и показывает, где работает ИИ-агент
- 150 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Хуки из `.gwm.toml` выполняют команды оболочки; в версиях до 1.6.0 имя ветки с символами `;` или `$` исполнялось как команда (GHSA-fffq-vg6f-gxqm).
- Инструмент создает и удаляет рабочие копии на диске и ходит в GitHub или GitLab через `gh` и `glab`.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/gwmОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Хуки из `.gwm.toml` выполняют команды оболочки; в версиях до 1.6.0 имя ветки с символами `;` или `$` исполнялось как команда (GHSA-fffq-vg6f-gxqm).
- Инструмент создает и удаляет рабочие копии на диске и ходит в GitHub или GitLab через `gh` и `glab`.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
gwm — один бинарник на Rust (CLI и TUI) для работы с git worktree во всех репозиториях сразу. Команда `gwm create feat 42 user-auth` создает ветку, кладет рабочую копию на диск, копирует нужные файлы, выполняет настроенные команды подготовки и связывает рабочую копию с задачей GitHub под номером 42. Без аргументов `gwm` открывает TUI со списком всех worktree, боковой панелью (состояние CI, файлы рабочей копии), встроенными Lazygit и оболочкой. Подготовка описывается в `.gwm.toml`: копирование файлов с запрещающими регулярными выражениями (защита от случайного переноса секретов из `.env`), шесть фаз хуков и готовые пресеты для Laravel, Symfony, Node, Rust, Go и Python. Команды `gwm undo` и `gwm history` возвращают удаленную по ошибке копию без `git reflog`. Для работы с агентами gwm находит сессии Claude Code, Codex, OpenCode и Mistral Vibe по их файлам на диске и показывает в колонке AGENT, в команде `gwm agents` и в строке статуса. Для скриптов есть `--format=json` и демон JSON-RPC с потоком событий, а в репозитории лежит готовый скилл `skills/SKILL.md` для Claude Code.
Для кого. Разработчикам, которые держат по несколько веток параллельно и запускают в них ИИ-агентов, а подготовку каждой копии (зависимости, `.env`, база) делают вручную.
Подходит, если
- Claude Code ведет одну задачу, Codex другую, и нужно видеть, какая сессия в какой ветке.
- Для каждой ветки приходится ставить зависимости и копировать `.env`, а стек типовой: Laravel, Symfony, Node, Rust, Go или Python.
- Просмотр чужого запроса на слияние удобнее в отдельной рабочей копии: `gwm review <номер>`.
- Одну команду, например тесты, требуется прогнать во всех worktree: `gwm exec -- <команда>`.
- Рабочая копия удалена по ошибке, и ее хочется вернуть.
Не подходит, если
- Работа идет в одной ветке без параллельных задач: обычного `git switch` хватает.
- Репозиторий хранится не на GitHub и не на GitLab: привязка задач и запросов на слияние работает через `gh` или `glab`.
- Агент не из списка Claude Code, Codex, OpenCode, Mistral Vibe: другие сессии gwm не определит, их можно только закрепить вручную.
Пример запроса к агенту
Создай worktree для задачи 42 командой gwm, подожди окончания подготовки и покажи отчет о том, какие файлы скопированы и какие команды выполнены.Ограничения
Команда `git` должна быть в `PATH`, привязка задач и запросов на слияние использует `gh` для GitHub или `glab` для GitLab. Пакет на crates.io называется `gwm-cli`, а команда после установки `gwm`. Пакет Nix собирается для x86_64-linux, aarch64-linux и aarch64-darwin; на Intel Mac ставят готовый архив или `cargo install`. Пакет AUR ведет сообщество, и его версия может отставать от релиза. Для быстрого перехода `gcd` нужен вызов `gwm shell-init`.
Как отключить. Удалите бинарник (`cargo uninstall gwm-cli` или `brew uninstall gwm`) и строку `gwm shell-init` из профиля оболочки; файлы `.gwm.toml` в репозиториях можно оставить, git их не читает.
Частые вопросы
Как установить gwm?
Командой `cargo install gwm-cli` или готовым бинарником через `cargo binstall gwm-cli`. Есть Homebrew (`brew tap kbrdn1/tap && brew install gwm`), Scoop, Nix, `aqua`, пакеты `.deb` и `.rpm`.
Откуда gwm знает, какой агент в какой ветке?
Читает файлы сессий на диске, процессы не перебирает. Находит Claude Code, Codex, OpenCode и Mistral Vibe, остальных можно закрепить вручную командой `gwm agents attach`.
Что за хуки в .gwm.toml и безопасны ли они?
Это команды оболочки в шести фазах жизни рабочей копии. Для хуков репозитория действует подтверждение доверия при первом запуске (`gwm trust`), а значения подставляются с экранированием. До версии 1.6.0 имя ветки со спецсимволами выполнялось как команда, поэтому берите свежую версию.
Можно ли получить данные gwm в скрипте?
Да. `gwm list --format=json` и `gwm doctor --format=json` отдают схемы, зафиксированные в `docs/schema/`, а `gwm daemon` слушает JSON-RPC на сокете и рассылает события подписчикам.
Как вернуть удаленный worktree?
Командой `gwm undo`; список удалений показывает `gwm history`. Заметки к worktree хранятся в основной копии и после удаления сохраняются.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыCLI для git worktree с нечетким поиском: отдельная папка на каждую ветку, чтобы несколько агентов работали параллельно без конфликтов
MCP-сервер разбирает конфликты слияния в Git: простые случаи решает сам, а сложные куски оставляет агенту
Окно для Claude Code, Codex, Gemini CLI и OpenCode: терминалы, пул-реквесты, изменения и подтверждения вызовов в одном месте
Граф кода и память проекта в одной программе на Rust: агент получает выдержки из файлов со ссылкой на строки
Рецензирование правок агента до коммита на своей машине: комментарии к строкам читает и отвечает на них сам агент через MCP.
CLI-прокси на Rust, который сжимает вывод git, тестов и других команд, чтобы агент тратил меньше токенов на чтение терминала
Коротко о README
README открывается обещанием «один бинарник, подготовка уже выполнена», затем дает таблицу каналов установки, тридцатисекундный разбор и список возможностей. Подробная документация вынесена в каталог `docs/`, а для контрактов JSON и демона автор заморозил схемы по SemVer.