Агент
Агент это отдельный бинарник на вашей машине. Он сам подключается к облаку по ключу интеграции команды и отдаёт холсту ровно то, что вы выдали в его конфиге: подключения к базам и папки. Входящих портов, туннелей и белых списков не нужно. Внутри нет ни сервера, ни редактора.
Установка
- В кабинете команды выпустите ключ интеграции. Ключ можно отозвать в любой момент, агент отключится сразу.
- Скачайте агента на странице «Агент» под свою систему.
- Положите рядом
agent.jsonи запуститеmyetern-agent agent.json.
{
"key": "mik_…",
"cloud": "https://myetern.com",
"name": "офисный",
"connections": {
"main": {"kind": "mysql", "host": "localhost", "port": 3306,
"user": "reader", "password": "…", "database": "shop"}
},
"mounts": [
{"name": "images", "path": "/srv/images", "mode": "ro"},
{"name": "out", "path": "/srv/out", "mode": "rw"}
],
"allowRemoteConnections": false,
"allowBuild": false
}
Виды подключений: mysql, pgsql, sqlite. Папка с режимом ro никогда не примет запись.
Что видно на холсте
- Агент появляется в списке команды сразу после входа.
- Источник с подключением
agent:офисный/mainвыполняет SQL на вашей машине. - «Файлы агента» в меню: обзор папок, подтягивание файлов во вложения по хэшу, запись результатов генерации деревом в папку
rw. - Проект из файлов: языки разбирают каталог с вашей машины, транслятор остаётся на сервере.
Флаги хозяина
allowRemoteConnections: разрешить облаку добавлять подключения из кабинета. Двойной ключ: флаг ставит хозяин машины, а на облачной стороне это может только распорядитель команды. Такие подключения пишутся в отдельный файл, вашagent.jsonагент никогда не переписывает.allowBuild: собирать и запускать присланные сгенерированные файлы своим компилятором. Облако чужой код нативно не исполняет никогда, поэтому запуск в облаке идёт либо через агента, либо в песочнице wasm.
Команды, HTTP и серверы языков
Три секции agent.json открывают агенту работу с внешними инструментами, каждая под собственным allow-списком хозяина:
"exec": {"allow": ["gh *", "dart *", "bash tools/dist/*", "docker compose *", "claude *"],
"cwd": "/home/me/projects/app", "timeoutSeconds": 120},
"http": {"allow": ["https://tracker.example.com/"],
"headers": {"https://tracker.example.com/": {"Authorization": "Bearer …"}}},
"lsp": {"dart": "dart language-server --protocol=lsp", "php": "intelephense --stdio"}
exec выполняет команды заданий, действий и трекеров, http ходит по адресам трекеров с заголовками, которые не покидают машину, lsp поднимает серверы языков для редактора. Полный пример со всеми секциями лежит в архиве агента как agent.example.json. Подробности в главах «Код на холсте», «Проект» и «Задачи и трекеры».
Self-host: агент встроен
На сервере self-host отдельный агент не нужен. Положите agent.json рядом с сервером или укажите путь в MYETERN_HOME_AGENT: поля key и cloud не требуются, сервер сам выдаёт себе ключ на время работы. Агент называется «дом» или именем из конфига и умеет всё, что описано в конфиге. Другие машины подключаются как обычные агенты: myetern-server agent add ИМЯ печатает ключ один раз, дальше agent list и agent rm. Кто сейчас на связи, показывает «Данные → 🤖 Агенты…».
Права
Чтение файлов и баз через агента, запись и сборка требуют способностей cap.file, cap.sql, cap.shell у того, кто нажимает. Способности выдаёт распорядитель команды.