Переделал инфраструктуру под агентов Сидели с клодом и перебрали всё: где живут…
Переделал инфраструктуру под агентов
Сидели с клодом и перебрали всё: где живут агенты, где лежат данные и как вообще стартует новый проект.
Началось с простого. Агенты крутились прямо на рабочем ноуте, рядом с ключами, куками и доступами. Задачи в одном месте, пароли в другом, сниппеты в третьем, репы на гитхабе. А каждый новый проект я руками обкладывал скиллами и mcp, каждый раз немного по-разному.
Теперь схема такая: отдельная машина под агентов и отдельный сервер под хранилище и общие данные. Между собой они связаны своим тейлнетом.
Тейлнет на headscale, поднят на том же сервере. Облако тейлскейла тут не участвует вообще, весь контроль-сервер мой. Машина логинится в него и получает адрес в сети 100.64.x.x, дальше со всеми сервисами общается по внутренним адресам из любой сети и без белых списков по айпи.
Что крутится на сервере:
— Gitea. Git, issues, CI через actions с раннером. Все репы уехали сюда, наружу публикуется только то, что должно быть публичным
— Vaultwarden. Пароли и ключи, совместим с битварденом
— Kanboard. Задачи, туда же падают голосовухи через мой плагин
— Opengist. Сниппеты, вход только через гитею по oauth
— Readeck. Отложенное чтение
— Caddy. Раздаёт https на поддомены, сертификаты тянет сам
— Морда со статусом, она на скрине
Доступ закрыт по умолчанию. Наружу смотрят только headscale, гитея и морда, и та для чужих под паролем. Остальное открывается либо из тейлнета, либо с двух моих айпи. Админский ssh висит на своем порту, потому что 22 отдан гитее, и тоже только для своих.
Бекапы. Ночью в 03:30 restic снимает данные сервисов и конфиги, базы sqlite перед этим копируются консистентно. Хранение 7 дневных, 4 недельных, 6 месячных, по воскресеньям проверка части данных. Дальше клиентские машины раз в сутки тянут копию репозитория по тейлнету, и делает это отдельный пользователь, который умеет только читать. В итоге полная копия лежит на каждой машине, восстановиться можно с любой.
Вторая половина истории это то, как стартует проект. Написал себе project-init: консольный реестр скиллов и mcp. Он один раз сканирует конфиги клода, кодекса и опенкода, собирает всё найденное в реестр, а дальше в папке нового проекта я запускаю одну команду и отмечаю галочками, что мне тут нужно. Скиллы ставятся из upstream, mcp раскладываются в конфиги, все три агента получают одинаковый набор.
Раньше на это уходило прилично возни и потом ловил удивления, почему в одном проекте агент умеет ходить в базу, а в соседнем нет.
По ощущениям главное, что изменилось: ноут стал просто экраном. Всё, что важно, живёт на сервере и в репах, а агенты работают на отдельной машине, до которой мне не страшно.
Вставить свои 5 копеек: