harnsy MaxС версии 0.9.0
Главная машина может быть за NAT. Никто не открывает порт.
Доступно с версии harnsy 0.9.0; размещённый релей будет в бете.
Ноутбук, домашний компьютер или сервер за NAT может быть главной машиной вашего кластера. Главная машина и каждый участник, который подключается через релей, сами соединяются с ним, а релей только передаёт байты между ними. Участнику за NAT релей не нужен: он присоединяется к доступной главной машине напрямую.
TLS между вашими машинами
Обе стороны соединяются наружу.
Главная машина и участник сами открывают соединение к релею. Ни один порт не пробрасывается, и публичный адрес не нужен ни одной из машин.
Релей только пересылает байты.
Он соединяет поток участника с потоком, который главная машина открывает для него, и дальше копирует байты в обе стороны. Он их не читает, не разбирает и не хранит.
TLS идёт между вашими машинами.
Внутри потока кластер использует собственный TLS насквозь. Участник проверяет сертификат главной машины по пину в своём токене присоединения, поэтому релей не может выдать себя за главную машину. Присоединение через релей без пина отклоняется.
Что видит релей, точно.
Кто (хеш идентификатора главной машины на релее; на нашем релее ещё и хеш идентификатора лицензии), когда и сколько трафика. Оборвать соединение он может; читать и менять то, что внутри, не может. В его журнале одна строка на поток: хешированные идентификаторы, адрес клиента, обрезанный до сети (/24 для IPv4, /48 для IPv6), байты туда и обратно, сколько длился поток и почему закончился. Ни имён, ни сообщений, ни токенов.
Коротко.
На главной машине: сделайте её мастером, включите релей, перезапустите harnsy и выпустите строку присоединения. На другой машине: вставьте строку. Каждый шаг и что вы увидите — в руководстве.
Прямые участники и через релей — вместе.
У одной главной машины могут быть одновременно участники в её сети и участники через релей.
У нас (бета).
harnsy MaxНаш размещённый релей — в бете, он входит в harnsy Max: главная машина каждый день получает от лицензионного сервиса билет — разрешение пользоваться им. Собственный релей со своим ключом запланирован; пока его нет.
Когда нужен релей
Главная машина у вас дома
Это ноутбук или Mac за домашним роутером, без публичного адреса. Ваши серверы и другие машины подключаются к нему через релей, порт вы не открываете, а адрес для участников не меняется, когда ноутбук переезжает в другую сеть.
Релей видит: какая машина (по хешу), когда и сколько. Сообщения, токены и ключи — нет.
Коллега подключается со своим входом
Их машина подключается к вашей главной через релей со своим входом в Claude, Codex или OpenCode. Вход остаётся на их машине, а ключ harnsy Max у них свой или они берут место у вашей главной машины.
Главная машина видит: имена агентов, харнес, статус, папку и сообщения. Входы и ключи — нет.
Сервер без публичного адреса
Если сам сервер — главная машина и до него не дотянуться, участники подключаются через релей. Никто не пробрасывает порт и не поднимает VPN.
Серверу, который только участник, релей не нужен: он присоединяется к доступной главной машине напрямую.
Часть участников в вашей сети, часть нет
Одна главная машина обслуживает тех и других: участники из вашей сети подключаются напрямую, остальные через релей.
В строке каждого участника в «Узлах» указан путь: «через посредника …» или «напрямую, порт 7789».
Шаг за шагом: кластер через релей
Выберите свой случай. В каждом — шаги, что вы увидите после них и как всё отменить. Где в дашборде есть кнопка, она идёт первой, а строка для терминала — запасной путь. Релей нужен главной машине, до которой другие не могут дотянуться, например домашней, за NAT. Участнику за NAT релей не нужен.
Главная — моя домашняя машина
Главная машина — ноутбук или Mac дома, или любая машина без публичного адреса. Ваш сервер и другие машины подключаются к ней через релей.
Сделайте её главной.
На машине, которая станет главной, один раз выполните это в терминале; кнопки в дашборде для этого нет.
home— имя, которое вы выбираете сами. Начните с этого: команда релея ниже работает только на главной машине.harnsy debug cluster init home --masterВключите релей.
Машине нужен ключ harnsy Max (страница «Лицензия»). Команда использует наш размещённый релей, он в бете.
harnsy debug cluster relay onПерезапустите harnsy на этой машине.
Работающая главная машина читает настройку релея только при запуске. Перезапустите harnsy, чтобы она вступила в силу. Linux:
systemctl --user restart harnsy.service. macOS:launchctl kickstart -k gui/$(id -u)/com.github.butschster.harnsy. Windows:schtasks /End /TN harnsy, затемschtasks /Run /TN harnsy.Выпустите строку присоединения для другой машины.
В дашборде откройте «Узлы» и выберите «Добавить в кластер». Выберите «Узел», назовите машину (например
server), задайте права и оставьте «Адрес мастера» пустым, чтобы строка несла адрес релея. Нажмите «Выпустить токен». «manage» — это доступ к shell главной машины: давайте его только своей машине.harnsy debug cluster issue serverВы увидите «Показан один раз. Скопируйте его сейчас.» и «Выполните это на server.», а под ними строка
harnsy debug cluster init server --join harnsy-relay://… --token <token>.Проверьте, что релей подключён.
Откройте «Узлы» на главной машине. Панель релея (в дашборде он называется «посредник») показывает «ждёт», пока нет токена присоединения или лицензия не разрешает другие машины. В терминале команда печатает релей и адрес, по которому подключаются участники.
harnsy debug cluster relayВы увидите «подключён с …», «адрес для участников» (
harnsy-relay://…) и «доступ к посреднику: продлевается сам».Присоединитесь на другой машине.
В дашборде другой машины откройте «Узлы», выберите «Вступить в кластер мастера», вставьте строку и нажмите «Вступить». Или выполните строку в терминале. Вставляйте строку целиком: присоединение через релей без пина отклоняется.
harnsy debug cluster init server --join harnsy-relay://… --token <token>Вы увидите «Узел вступил в … подключается…». На главной машине участник появляется в списке «Узлов», а в его строке — «путь: через посредника …».
Как отменить Чтобы убрать участника, отзовите его (случай 5). Чтобы перестать пользоваться релеем, выполните harnsy debug cluster relay off и перезапустите harnsy; участникам снова понадобится прямой адрес.
Машина коллеги со своим входом
Коллега присоединяется к вашей главной машине со своим входом в Claude, Codex или OpenCode. Вход остаётся на его машине.
Подготовьте главную машину.
Настройте её как в случае 1 или возьмите главную машину, до адреса которой коллега может дотянуться.
Решите, чей harnsy Max будет у коллеги.
Машина со своим ключом harnsy Max не занимает место. Машина без ключа берёт harnsy Max у главной, пока есть свободное место. Число мест задаёт ваш ключ.
Вы увидите В «Лицензии» — панель «Места для подключённых машин»: «Занято: 1 из 3.»
Выпустите токен для коллеги.
В дашборде: «Узлы» → «Добавить в кластер», «Узел», имя их машины, права, «Выпустить токен». Дайте только нужное:
readиsend. «manage» — это доступ к вашему shell.harnsy debug cluster issue anna-laptop --scope read,sendВы увидите Токен появляется один раз: «Показан один раз. Скопируйте его сейчас.»
Передайте им строку, не публично.
В строке секрет — токен. В ней же пин главной машины, поэтому их машина проверяет, что говорит именно с вашей.
Коллега присоединяется.
На их машине: «Узлы» → «Вступить в кластер мастера», вставить строку, «Вступить». Или выполнить строку в терминале.
harnsy debug cluster init anna-laptop --join https://<main machine address>:7789 --token <token>Вы увидите «На связи.» Если у машины нет своего ключа, а у главной нет свободного места: «На связи. Мастер ещё не одолжил harnsy Max: возможно, в его лицензии нет свободного места.»
Проверьте.
На главной машине машина коллеги есть в списке «Узлов». Если она взяла место, «Лицензия» показывает его занятым. Главная машина видит имена их агентов, харнес, статус и папку; вход остаётся на их машине.
Как отменить Отзовите их токен (случай 5). Место освобождается сразу; сама машина сохраняет harnsy Max до 3 дней, пока не кончится последняя выдача.
Сервер без публичного адреса
Что делать, зависит от роли сервера.
Сервер — участник: подключайте напрямую.
Участник всегда соединяется сам и не открывает порт, поэтому сервер за NAT или файрволом присоединяется к доступной главной машине напрямую. Выпустите токен и присоединитесь как в случае 2.
Сервер — главная машина: используйте релей.
Если сам сервер — главная машина и до него не дотянуться, настройте его как в случае 1. Участники подключаются к нему через адрес релея, без открытого порта.
Как отменить Как в случае 1 или случае 5.
Прямые участники и участники через релей на одной главной машине
Часть участников в вашей сети, часть нет. Одна главная машина обслуживает тех и других одновременно.
Настройте релей как в случае 1.
Шаги 1 и 2 из случая 1; перезапуск — дальше.
Откройте порт кластера для прямых участников.
Это нужно только для машин вашей сети: главной машине, у которой только участники через релей, открытый порт не нужен. Запустите установщик ещё раз с адресом кластера. Он перепишет службу и перезапустит harnsy, а это и есть перезапуск, который нужен настройке релея.
0.0.0.0— все адреса этой машины; чтобы открыть порт только в вашей сети, укажите адрес машины в ней, например192.168.1.10:7789. Порт сам отдаёт TLS.harnsy install --cluster-addr 0.0.0.0:7789Выпустите токен для участника через релей.
Оставьте «Адрес мастера» пустым: строка несёт адрес релея.
harnsy debug cluster issue far-laptopВыпустите токен для прямого участника.
Впишите в «Адрес мастера» адрес главной машины в вашей сети.
harnsy debug cluster issue office-pc --url https://<main machine address>:7789Присоедините каждую машину её строкой.
Как в шаге 6 случая 1, каждую на своей машине.
Вы увидите В каждой строке «Узлов» указан путь: «через посредника …» или «напрямую, порт 7789».
Как отменить Отзовите участника (случай 5).
Убрать участника
Машина больше не должна быть в кластере, или её токен мог утечь.
Найдите его токен.
На главной машине: «Узлы» → «отозвать» рядом с токеном участника, и всё. В терминале сначала выведите список токенов.
harnsy debug cluster tokensВ терминале отзовите по номеру.
Номер возьмите из списка.
harnsy debug cluster revoke <id>Вы увидите Соединение участника закрывается сразу, если отозвать в дашборде, и в течение 20 секунд, если из терминала. Всё, что ждало его в очереди, отбрасывается. Место освобождается в этот момент: в «Лицензии» занято на одно меньше. Участник, который брал harnsy Max, сохраняет его, пока не кончится его последняя выдача, до 3 дней.
Как отменить Чтобы присоединиться снова, выпустите на главной машине новый токен; на участнике выберите «Переподключиться» на вкладке «Узлы» или выполните напечатанную команду harnsy debug cluster init … --join … --token … --force.
Включает ключ.
Добавьте ключ harnsy Max на странице «Лицензия» — и функция включится.
Честно об ограничениях
- Пока главной машины нет в сети, участники работают локально и хранят сообщения, пока он не вернётся.
- Релей видит не «ничего»: он знает, кто, когда и сколько, и хранит это в журнале. Оборвать соединение он может; читать и менять содержимое не может.
- Размещённому релею (бета) нужен ключ harnsy Max. Собственный релей запланирован.
Ваша первая команда — в одной фразе.
Установка — одна фраза вашему агенту. Чтобы harnsy сам открывал агентов, он управляет терминалом: tmux на Linux и macOS, собственный терминальный хост на Windows.
Установи harnsy по инструкции: https://harnsy.dev/llms.txt