Разработчик сделал коробку передач для переключения моделей Claude Code
Фулстек-разработчик Илья Тузов собрал открытое приложение ituzov-gearbox, которое переключает модели в работающем Claude Code с помощью виртуальной коробки передач. Рычаг двигается в браузере, а команда уходит в терминал через tmux. Код опубликован под лицензией MIT.
Идея появилась после ролика в ленте про приложение Model Shift: оно было платным, с закрытым кодом и только для macOS. Разработчик выяснил, что для переключения модели достаточно запустить Claude Code внутри tmux и отправить в нужную панель команду /model с именем модели, как если бы её набрали руками.
Список доступных моделей коробка читает с экрана: открывает меню /model, снимает текст панели через capture-pane и вытаскивает названия регуляркой, после чего закрывает меню клавишей Escape. Перед чтением проверяется, не отвечает ли Claude в этот момент, иначе Escape прервёт генерацию. Раскладку можно задать и вручную в файле gearbox.config.json.
Сервер проверяет имя модели и формат адреса панели, а tmux запускается через execFile с аргументами в виде массива. Сама команда не знает, что запущено в выбранной панели: если там обычный shell, текст уйдёт туда, поэтому панели с Claude Code помечаются по процессу и заголовку.
Кулиса реализована как граф: горизонтальная рейка нейтрали и вертикальные колонки передач. Ручка движется только по этим линиям, из колонки можно выйти лишь через нейтраль, а при недотяге возвращается в текущую передачу. Щелчок синтезируется через Web Audio, физический движок не используется.
Окно открывается через установленный Chromium с отдельным профилем на сервере по адресу 127.0.0.1, чтобы размер и положение не перехватил уже работающий Chrome. Без WSL на Windows приложение не заработает, поскольку держится на tmux.
Для запуска нужны Node.js 18+, tmux и установленный Claude Code. Разработчик отмечает, что приняла ли панель команду, видно только в терминале, и советует прочитать код, поскольку сервер умеет отправлять ввод в терминал. Автор также планирует добавить сцепление на пробел и ручник для отмены генерации.