ovan.io
Projects / Claude Semafor / Инструкция

Claude Semafor

Настольный светофор для сессий Claude Code. Каждая сессия на каждом подключённом компьютере получает свой светодиод и показывает, работает ли Claude, ждёт ли он вас или уже закончил.

photo-front.jpgУстройство спереди, включено: горят несколько светодиодов разных цветов, на экране номер компьютера

1Как это работает

Claude Code умеет вызывать внешние команды в ключевые моменты: вы отправили запрос, Claude запускает инструмент, задаёт вопрос, заканчивает ответ. Небольшой скрипт semafor.py на вашем компьютере ловит эти события и по Wi-Fi сообщает о них семафору. Семафор зажигает светодиод этой сессии нужным цветом.

Claude Code ──hooks──► semafor.py ──Wi-Fi/HTTP──► Claude Semafor
 (ваш компьютер)                              (светодиоды + экран)

Одна сессия — один светодиод

Открыли три окна Claude Code — горят три светодиода. Сессия закрылась — её светодиод гаснет.

До 8 компьютеров

Каждый компьютер сопрягается отдельно. Кнопкой переключаете, чьи сессии сейчас на ленте.

Без облака

Всё работает в вашей локальной сети. Скрипту нужен только Python 3, без сторонних пакетов.

2Устройство и кнопка

Органы управления
photo-controls.jpgКрупный план под углом, чтобы были видны кнопка, разъём USB-C и экран
ЭлементНазначение
Светодиодная лентаПо одному светодиоду на сессию Claude Code активного компьютера
ЭкранНомер и имя активного компьютера, заряд батареи, служебные режимы
КнопкаПереключение компьютеров, сопряжение, выключение, включение
USB-CЗарядка встроенного аккумулятора

Кнопка

ДействиеЧто происходит
Короткое нажатиеПоказать сессии следующего компьютера. В режиме сопряжения — отменить его. При сигнале «лимит» — убрать сигнал.
Удержание 3 сВключается режим сопряжения на 60 секунд. Отпустите кнопку, как только на экране появится PAIRING.
Удержание ещё 5 сОбратный отсчёт 5…1 на экране, лента гаснет красным — устройство выключается. Отпустили раньше — выключение отменено.
Нажатие на выключенномУстройство включается.

3Что значат цвета

Сессии Claude Code

СветодиодСостояниеКогда
Жёлтый, «дышит»Claude работает: обрабатывает запрос, запускает инструменты
Красный, мигаетНужны вы: Claude задал вопрос или ждёт разрешения
ЗелёныйОтвет готов, Claude ждёт следующий запрос
Жёлтый ↔ белыйРаботает субагент (Claude запустил помощника)
Не горитСлот свободен или сессия давно неактивна (через 5 минут зелёный и жёлтый гаснут сами)

Служебные режимы ленты

ЛентаЧто значит
Голубая точка бегает туда-обратно — подключение к Wi-Fi
Янтарная волна от центра — сети нет, поднята точка настройки Wi-Fi (раздел 5)
Красные через один, попеременно — достигнут лимит использования Claude. Короткое нажатие убирает сигнал
Вся лента красная и гаснет — идёт отсчёт до выключения, кнопка удерживается
Лента с разными состояниями
photo-leds.jpgКрупно лента: рядом жёлтый, красный и зелёный светодиоды (в полутёмной комнате, без пересвета)

4Включение и зарядка

Экран зарядки

Нажмите кнопку — устройство включится и начнёт подключаться к Wi-Fi (голубая бегущая точка). Значок батареи в левом верхнем углу экрана показывает заряд. Когда заряда мало, значок мигает.

Заряжайте через USB-C любым зарядным устройством на 5 В. Если подключить кабель к выключенному устройству, оно не включится полностью: загорится только экран с надписью CHARGE, а по окончании — DONE. Лента и Wi-Fi при этом выключены. Чтобы включить устройство, нажмите кнопку.

На работающем устройстве во время зарядки рядом с батареей виден значок молнии, а когда аккумулятор заряжен — надпись DONE.

Если аккумулятор сильно разряжен, устройство покажет LOW BAT и сразу выключится. Поставьте его на зарядку на 15–20 минут и включите снова. Сильно разряженный аккумулятор при включённой ленте и Wi-Fi не заряжается, поэтому устройство само уходит в режим зарядки.

5Подключение к Wi-Fi

При первом включении устройство не знает вашу сеть. Через несколько секунд (до полуминуты, если оно пробует старые сети) оно поднимает собственную точку доступа, а на экране появляется WiFi setup.

  1. Экран настройки Wi-Fi На телефоне или ноутбуке откройте список Wi-Fi сетей и подключитесь к открытой сети Semafor-XXXX. Её имя написано на экране под AP: (на экран помещаются первые 10 символов).
  2. Страница настройки обычно открывается сама. Если нет — откройте в браузере http://4.3.2.1.
  3. Выберите свою сеть в списке, введите пароль и нажмите Save & Connect. Устройство отключит точку доступа и подключится к сети. Когда подключение пройдёт, лента погаснет, а на экране появится noHost: компьютеры ещё не подключены.
Страница настройки Wi-Fi
Страница настройки Wi-Fi: доступные сети с уровнем сигнала, поля для имени сети и пароля, список сохранённых сетей.

Устройство запоминает до 10 сетей. При включении оно по очереди пробует те, что видит, сверху вниз. Если связь пропала, через 30 секунд оно само переключится на другую сохранённую сеть. Список сетей можно менять позже в веб-интерфейсе.

Нужна сеть 2,4 ГГц: сети 5 ГГц устройство не видит.

Если за 5 минут к точке доступа никто не подключился, устройство выключается, чтобы не тратить батарею. Нажмите кнопку, чтобы попробовать снова.

6Установка на компьютер

На компьютер ставится один файл, semafor.py. Он регистрирует обработчики событий (hooks) в Claude Code. Поддерживаются macOS и Linux.

Исходный код, README и обновления лежат в репозитории claude_semafor_host на GitHub.

Что понадобится

  • Claude Code, уже установленный и хотя бы раз запущенный.
  • Python 3. Проверьте в Терминале:
    python3 --version
    Если команда не найдена:
    • macOS: выполните xcode-select --install или brew install python;
    • Ubuntu / Debian: sudo apt install python3.
  • Компьютер и семафор должны быть в одной сети.

Установка

  1. Скачайте скрипт:
    git clone https://github.com/vovan-io/claude_semafor_host.git
    cd claude_semafor_host
  2. Установите его:
    python3 semafor.py install
    Скрипт скопирует себя в ~/.claude/semafor.py и добавит обработчики в ~/.claude/settings.json. Ваши настройки сохранятся, а рядом появится резервная копия settings.json.bak. Команду можно запускать повторно, например после обновления: дубликатов не будет.
  3. Перезапустите Claude Code, если он был открыт: обработчики читаются при старте.

7Сопряжение

Сопряжение выдаёт компьютеру личный ключ (токен). Без него устройство не принимает команды. Это нужно сделать один раз для каждого компьютера.

  1. Экран сопряжения Удерживайте кнопку 3 секунды, пока на экране не появится PAIRING с таймером, и сразу отпустите. Если держать дальше, начнётся отсчёт до выключения.
  2. За 60 секунд выполните на компьютере:
    python3 ~/.claude/semafor.py register
    Ответ при успехе:
    paired as host_id=0 (name=macbook) via 192.168.1.108 (mdns semafor.local), leds=8
    saved -> /Users/you/.claude/semafor.json
  3. Режим сопряжения закроется сам. На экране появится номер компьютера и его имя.

Своё имя на экране: register --name work. Помещаются примерно 4 символа, более длинное имя прокручивается бегущей строкой.

Если semafor.local не находится (в некоторых сетях и на Linux без Avahi), укажите IP-адрес устройства: register --host 192.168.1.108. Адрес можно посмотреть в роутере.

8Проверка

Прогоните первый светодиод через все цвета:

python3 ~/.claude/semafor.py test

Светодиод должен загореться жёлтым, затем красным, зелёным и погаснуть. После этого откройте Claude Code и отправьте любой запрос. Пока Claude работает, светодиод «дышит» жёлтым. Когда ответ готов, он становится зелёным.

Посмотреть состояние всех компьютеров и сессий:

python3 ~/.claude/semafor.py status

9Несколько компьютеров

Повторите установку и сопряжение на каждом компьютере. Подключить можно до 8 компьютеров. Лента показывает сессии одного, активного, компьютера. Его номер и имя крупно видны на экране.

Компьютер 1активный
Компьютер 2«!» — вас ждут на другом
  • Короткое нажатие переключает ленту на следующий компьютер.
  • Если на неактивном компьютере Claude ждёт ответа, в правом верхнем углу экрана появляется !. Нажимайте кнопку, пока не увидите красный светодиод.
  • Переименовать компьютер, сделать его активным или удалить можно в веб-интерфейсе.

10Веб-интерфейс

Откройте в браузере на любом устройстве в той же сети http://semafor.local или IP-адрес семафора.

Компьютеры

Список компьютеров
Подключённые компьютеры. Квадратики справа повторяют светодиоды их сессий. Здесь можно переименовать компьютер (Rename), сделать его активным (Make active) или удалить (Delete). Удалённому компьютеру нужно пройти сопряжение заново.

Настройки устройства

Настройки устройства
LED count — сколько светодиодов на ленте (до 30), LED brightness — яркость ленты, OLED contrast — яркость экрана. Сохраняются кнопкой Save и не сбрасываются при выключении.

Сети Wi-Fi

Сети Wi-Fi
Сохранённые сети в порядке приоритета: ▲/▼ — переместить, ✕ — забыть. Новая сеть добавляется наверх списка (Add to top). Пароли не показываются.

Питание и диагностика

В разделе Power показаны заряд и напряжение батареи. Run self-test в разделе Diagnostics перезагружает устройство в режим проверки железа: по ленте бежит радуга, по экрану — шахматная доска. Выход из проверки — нажатие кнопки.

11Экраны дисплея

ОбычныйБатарея, номер и имя активного компьютера
ЗарядкаМолния — идёт зарядка
noHostНи один компьютер не подключён
PAIRINGСопряжение, секунд осталось
ОтсчётОтпустите кнопку, чтобы не выключать
WiFi setupПодключитесь к точке доступа
LIMITЛимит Claude исчерпан
OTAОбновление, не выключайте
CHARGEЗарядка выключенного устройства
DONEАккумулятор заряжен
LOW BATРазряжен, нужна зарядка

12Сон и энергосбережение

Устройство выключается само, чтобы беречь аккумулятор:

  • через 60 минут без активности Claude Code;
  • через 5 минут в режиме настройки Wi-Fi, если к нему никто не подключился;
  • при критическом разряде батареи;
  • по вашей команде: удержание кнопки 3 + 5 секунд.

Включается коротким нажатием кнопки. Подключённые компьютеры и сети Wi-Fi запоминаются, повторно настраивать ничего не нужно.

13Обновление прошивки

Готовые файлы прошивки выкладываются на странице Releases. Обновлять можно по Wi-Fi, кабель не нужен.

Обновление прошивки
Раздел Firmware update веб-интерфейса.
  1. Скачайте firmware.bin из последнего релиза.
  2. Узнайте токен вашего компьютера:
    python3 -c "import json,os;print(json.load(open(os.path.expanduser('~/.claude/semafor.json')))['token'])"
    Браузер запомнит токен, вводить его нужно один раз.
  3. В веб-интерфейсе вставьте токен в поле Token, выберите файл и нажмите Flash. На экране появится OTA. Через полминуты устройство перезагрузится с новой прошивкой.

Если обновление прервётся, ничего не сломается: новая прошивка пишется во вторую область памяти. Пока она не проверена, устройство продолжает загружаться со старой.

14Если что-то не так

ПроблемаЧто сделать
pair failed при register Окно сопряжения длится 60 секунд. Снова удерживайте кнопку 3 секунды и выполните команду сразу. Если ошибка повторяется, укажите адрес: --host <IP>.
Светодиоды не реагируют на Claude Code Перезапустите Claude Code после install. Проверьте связь командой semafor.py test. Убедитесь, что на экране выбран нужный компьютер: короткое нажатие переключает их.
Голубая точка бегает и не останавливается Устройство не может подключиться к сохранённой сети. Проверьте роутер и что сеть 2,4 ГГц. Если сеть сменилась, подождите: появится точка доступа Semafor-XXXX.
Сменили роутер или пароль Wi-Fi Включите устройство: не найдя сеть, оно само поднимет точку настройки (раздел 5).
semafor.local не открывается Откройте IP-адрес устройства (его видно в роутере или в ~/.claude/semafor.json, поле addr).
Светодиод «застрял» в жёлтом или зелёном Если сессия закрылась аварийно, светодиод погаснет сам через 5 минут.
Горят не все светодиоды или лишние Задайте правильное число в веб-интерфейсе (LED count) и выполните register ещё раз, чтобы компьютер узнал новое число.
Устройство не включается Поставьте на зарядку на 20 минут. Если показывает LOW BAT — аккумулятор сильно разряжен, заряжайте дольше.
Удалить с компьютера semafor.py unpair забывает сопряжение. Обработчики удаляются из ~/.claude/settings.json вручную (строки с semafor.py).

15Справочник команд

Все команды: python3 ~/.claude/semafor.py <команда>. Любую можно направить на конкретный адрес ключом --host 192.168.1.108.

КомандаЧто делает
installКопирует скрипт в ~/.claude и добавляет обработчики
register [--name N]Сопрягает компьютер (устройство в режиме PAIRING)
statusСостояние всех компьютеров и сессий
configПоказать настройки устройства
config --leds 8Число светодиодов
config --bright 128 --contrast 100Яркость ленты и экрана (1–255)
testПрогнать первый светодиод через все цвета
unpairЗабыть сопряжение на этом компьютере

Claude Semafor · прошивка 1.2.0