[2026-10-18] eagle: personal/plans/balda-remote-agent.md personal/plans/workspace-gateway.md personal/projects/balda/balda.md personal/projects/balda/setup.md personal/projects/balda/ssh-seatbelt-2026-10-18.md
This commit is contained in:
1 parent
9838285ff2
commit
5f17b01c4f
5 files changed
+137
-8
No files matched your search
@@ -1,6 +1,8 @@
|
||||
# Balda — удалённый агент по SSH
|
||||
|
||||
Обновлено: **2026-10-18**.
|
||||
Отдельный проект доступа к папкам: [[personal/plans/workspace-gateway|Workspace Gateway]], `/Users/admin/Developer/workspace-gateway`, начальный коммит `2bc6743`.
|
||||
Дополнительная проверка SSH и Seatbelt: [[personal/projects/balda/ssh-seatbelt-2026-10-18]].
|
||||
Исходная задача: Balda работает с оригинальными Prism/Beads по подключённым проектам и запускает штатного агента в другой среде; подключение нового репозитория требует подтверждения владельца.
|
||||
Проверка: [[personal/projects/balda/ssh-acp-verification-2026-10-18]].
|
||||
Рабочая установка: [[personal/projects/balda/setup]].
|
||||
@@ -32,13 +34,22 @@ macOS-окружения предоставляет Virfield через его M
|
||||
|
||||
## Следующие конкретные действия
|
||||
|
||||
1. Я настрою для выбранной среды SSH-профиль с отдельной identity, закреплённым host key и ограниченным пользователем.
|
||||
2. Я предоставлю среде только подтверждённый проект и проверю фактический доступ к его файлам и исходному состоянию Beads; отдельно проверю отказ доступа к соседнему проекту и секретам хоста.
|
||||
3. Я приведу пути workspace к совместимому виду и настрою достижимые из среды адреса выбранных MCP; проверю чтение статуса через `bd` и вызов MCP.
|
||||
4. Я подготовлю в среде штатный ACP-агент, его собственную авторизацию и оригинальные skills/tools, затем добавлю в Balda отдельный `generic_acp` provider с командой SSH.
|
||||
5. Я настрою запросы разрешений у агента и штатный `ask` в Balda, затем проверю реальный рабочий цикл Prism, отказ, отмену и продолжение той же сессии.
|
||||
1. Я реализую и приму Workspace Gateway в отдельном проекте: листинг папок без файлов, подключение после подтверждения владельца, отключение и временный лизинг; сетевая файловая система обеспечит одни и те же исходные файлы Balda и агентам без перезапуска Balda при каждой выдаче.
|
||||
2. Я настрою авторизованный SSH из контейнера в реальные среды, проверку host key, ограниченные credentials и штатный `generic_acp` с командой SSH; доступность порта и проверка протокола уже подтверждены, рабочая авторизация ещё не принята.
|
||||
3. Я настрою запуск агентов и обычных команд на Mac под Seatbelt, начиная со штатных sandbox и готового `anthropics/sandbox-runtime`, и проверю запрет доступа к соседним проектам, секретам и обхода через другой SSH command.
|
||||
4. Я настрою согласованные пути workspace, достижимые MCP, оригинальные skills/tools и единое состояние Beads для Balda и одновременных агентов, затем включу запросы разрешений у агентов и штатный `ask` Balda.
|
||||
5. Я проведу реальную приёмку выбранных Codex/Claude/OpenCode и оригинального Prism: статус проекта, подтверждение и отказ, выполнение, отмена, продолжение сессии и прекращение доступа после отзыва или истечения лизинга.
|
||||
|
||||
Это оставшаяся работа, а не уже выполненный deployment.
|
||||
SSH/Seatbelt/ACP и настройка Beads не расширяют четыре функции Workspace Gateway.
|
||||
|
||||
## Что подтверждено дополнительно
|
||||
|
||||
- Docker работает через Colima, а не Docker Desktop.
|
||||
- Из основного контейнера получены SSH banners Mac и внешнего GitHub на TCP/22; логин и команды при этом не выполнялись.
|
||||
- Seatbelt на Mac 26.7.1 реально заблокировал чтение и запись в контрольную папку, в том числе дочерним shell; это не готовый production профиль.
|
||||
- Документация Beads описывает Dolt server mode для нескольких одновременных записывающих агентов: [первичный источник](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md).
|
||||
- Политика файлов и сети для реальных агентов, native approvals и полная работа Prism остаются открытыми.
|
||||
|
||||
## Права и репозитории
|
||||
|
||||
@@ -54,8 +65,8 @@ macOS-окружения предоставляет Virfield через его M
|
||||
В рабочем конфиге остаётся `permissions.mode: allow_all`; SSH-проверка production-конфиг, историю и авторизацию не меняла.
|
||||
Полный Prism lifecycle с моделью и реальные удалённые Claude/Codex этой проверкой не приняты.
|
||||
|
||||
Новая ветка: `broker-rebuild`, worktree `/Users/admin/.codex/worktrees/broker-rebuild/execution-broker`.
|
||||
Она начата с пустого дерева коммитом `1fd7f57`; сейчас есть только незакоммиченный README, реализации нового брокера нет.
|
||||
Новый сервис создаётся в отдельном проекте `workspace-gateway`; его объём ограничен четырьмя функциями доступа к папкам.
|
||||
Прежняя ветка `broker-rebuild` в `/Users/admin/.codex/worktrees/broker-rebuild/execution-broker` — оставшийся каркас предыдущего обсуждения, а не место реализации Workspace Gateway.
|
||||
Старые `execution-broker`, `execution-prism` и plugin остаются в действующей Balda; очистка новой ветки не удаляла их из deployment.
|
||||
|
||||
Историческая приёмка прежнего брокера: [[personal/plans/balda-callee-prism-plan]].
|
||||
@@ -0,0 +1,53 @@
|
||||
# Workspace Gateway — план
|
||||
|
||||
Обновлено: **2026-10-18**.
|
||||
Проект: `/Users/admin/Developer/workspace-gateway`.
|
||||
Git: `main`, начальный коммит `2bc6743`; создан каркас README/AGENTS/.gitignore, реализации сервиса пока нет.
|
||||
Общий setup Balda: [[personal/plans/balda-remote-agent]].
|
||||
|
||||
## Назначение и четыре функции
|
||||
|
||||
Сервис выдаёт Balda и удалённым агентам доступ к исходным папкам через сетевую файловую систему.
|
||||
Balda и агенты видят одни и те же файлы; копирование Git-репозитория не считается реализацией общего доступа.
|
||||
|
||||
1. **Папки:** листинг папок хоста, включая навигацию по дереву, без выдачи списка файлов и их содержимого.
|
||||
2. **Подключение:** выбранная папка появляется в work dir после подтверждения владельцем точного пути, получателя, режима доступа и срока.
|
||||
3. **Отключение:** фактический отзыв ранее выданного доступа.
|
||||
4. **Лизинг:** статус и срок действия, автоматический отзыв после истечения срока, продление с подтверждением владельца.
|
||||
|
||||
Четыре пользовательские функции — согласованный объём проекта.
|
||||
Обработка ответа владельца, журнал выданных разрешений и таймеры обслуживают эти функции, а не расширяют API прикладными сценариями.
|
||||
|
||||
## Границы
|
||||
|
||||
SSH-запуск, ACP-транспорт, исполнение команд на хосте и Seatbelt относятся к настройке Balda и среды, а не к Workspace Gateway.
|
||||
Prism, Callee, Beads, управление задачами и сессиями используются штатно.
|
||||
Сервис не реализует собственные Story workflows, собственный Prism и дублирующий scheduler.
|
||||
|
||||
Общий каталог Developer и домашний каталог не выдаются агентам.
|
||||
Листинг папок даёт возможность запросить конкретный путь, а не право читать его файлы.
|
||||
Ответ от модели или аргумент `approved=true` не является подтверждением владельца.
|
||||
Отзыв и истечение срока должны прекращать реальный доступ, включая существующие соединения и открытые файловые дескрипторы.
|
||||
|
||||
## Конкретные шаги
|
||||
|
||||
1. Я проверю готовую сетевую файловую систему на текущем Docker/Colima и целевых средах: исходные файлы видны обоим клиентам, добавление разрешённой папки обходится без перезапуска Balda, соседняя папка недоступна, отзыв закрывает уже выданный доступ.
|
||||
2. Я подключу постоянную точку сетевой файловой системы в work dir; это разовая настройка deployment, последующие выдачи и отзывы происходят в рантайме.
|
||||
3. Я реализую листинг папок и запрос подключения, связав подтверждение владельца с точным путём, получателем, правами и сроком; сначала проверю пригодность штатных взаимодействий Balda.
|
||||
4. Я реализую отключение и временный лизинг, сохранение состояния разрешений и обработку истечения срока после перезапуска сервиса; неполученное подтверждение оставляет доступ закрытым.
|
||||
5. Я проведу приёмку с двумя клиентами: общие файлы, RO/RW, запрет соседних путей и обхода через ссылки, отказ владельца, отзыв, истечение, продление и повторный запуск сервиса.
|
||||
|
||||
NFS/SMB или другой backend ещё не выбран: поддержка протокола сама по себе не подтверждает нужные свойства прав и отзыва.
|
||||
До выбора backend сохраняется ровно этот объём; общая копия всех репозиториев и ослабление изоляции не являются заменой выдаче доступа.
|
||||
|
||||
## Что уже проверено и что остаётся
|
||||
|
||||
- [x] Создан отдельный Git-проект с зафиксированной границей четырёх функций.
|
||||
- [x] Проверена независимая возможность штатного ACP Balda поверх SSH: [[personal/projects/balda/ssh-acp-verification-2026-10-18]].
|
||||
- [ ] Выбрана и испытана сетевая файловая система.
|
||||
- [ ] Реализованы четыре функции, подтверждения и фактическое ограничение доступа.
|
||||
- [ ] Настроено общее состояние Beads и принята работа реальных агентов через полученный workspace.
|
||||
|
||||
Доступ к исходникам и доступ к состоянию Beads — связанные, но отдельные пункты общей установки.
|
||||
Для одновременной работы Balda и нескольких агентов Beads описывает server mode Dolt: [официальная архитектура](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md).
|
||||
Сетевой mount сам по себе не считается приёмкой конкурентной работы БД.
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
## Источники текущего состояния
|
||||
|
||||
- [[personal/plans/workspace-gateway|Workspace Gateway — отдельный проект и четыре функции доступа]]
|
||||
- [[personal/projects/balda/ssh-seatbelt-2026-10-18|Проверка исходящего SSH и Seatbelt; оставшиеся пункты setup]]
|
||||
- [[personal/plans/balda-remote-agent|Актуальный план удалённого агента по SSH]]
|
||||
- [[personal/projects/balda/ssh-acp-verification-2026-10-18|Проверка штатного ACP, разрешений и восстановления сессии]]
|
||||
- [[personal/projects/balda/setup|Работающий контейнер, конфигурация, MCP и перезапуск]]
|
||||
@@ -21,7 +23,7 @@ Upstream: [baldaworks/balda](https://github.com/baldaworks/balda). Fork: [mallex
|
||||
|
||||
Действующий конфиг: `/Users/admin/Docker/balda-mm-mac/config/config.yaml`; выбран `balda.provider: pool`. Dev-конфиг в `~/Developer/balda` — отдельный файл. Obsidian MCP — `type: http`, `http://host.docker.internal:3101/mcp`.
|
||||
|
||||
Balda сохраняет штатную оркестрацию, сессии, MCP, skills и подтверждения. Связь с агентом в другой среде — через SSH и штатный ACP; базовый путь уже проверен без нового ACP-брокера. Окружение получает выбранный workspace и ограниченные права; macOS предоставляет Virfield. Исторические функции прежнего Broker и его подключённые MCP описаны отдельно и не задают объём нового брокера.
|
||||
Balda сохраняет штатную оркестрацию, сессии, MCP, skills и подтверждения. Связь с агентом в другой среде — через SSH и штатный ACP; базовый путь уже проверен без нового ACP-брокера. Доступ к исходным папкам выделен в отдельный проект Workspace Gateway; macOS предоставляет Virfield. Рабочая SSH-авторизация, профили Seatbelt, native ask, достижимость MCP и общее состояние Beads ещё требуют настройки и приёмки. Исторические функции прежнего Broker и его подключённые MCP описаны отдельно и не задают объём нового брокера.
|
||||
|
||||
Документация кода: [README](https://github.com/baldaworks/balda/blob/main/README.md), [configuration](https://github.com/baldaworks/balda/blob/main/docs/reference/configuration.md), [plugins](https://github.com/baldaworks/balda/blob/main/docs/reference/plugins.md).
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
## Актуальное обновление — 2026-10-18
|
||||
|
||||
Новый сервис подключения папок: [[personal/plans/workspace-gateway|Workspace Gateway]], `/Users/admin/Developer/workspace-gateway`; создан каркас, реализации пока нет.
|
||||
Проверка исходящего SSH и Seatbelt: [[personal/projects/balda/ssh-seatbelt-2026-10-18]]; сетевой SSH из контейнера доступен, production логин и sandbox launch ещё не приняты.
|
||||
|
||||
План удалённого исполнения: [[personal/plans/balda-remote-agent]].
|
||||
Проверка штатного ACP поверх SSH: [[personal/projects/balda/ssh-acp-verification-2026-10-18]].
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# Balda — SSH и Seatbelt: проверка 2026-10-18
|
||||
|
||||
Общий план: [[personal/plans/balda-remote-agent]].
|
||||
Workspace Gateway: [[personal/plans/workspace-gateway]].
|
||||
|
||||
## Факты текущей установки
|
||||
|
||||
- Docker context: `colima`; Docker daemon сообщает `Ubuntu 24.04.4 LTS`.
|
||||
- На Mac `26.7.1` присутствует `/usr/bin/sandbox-exec`.
|
||||
- Из основного контейнера `balda-mm-mac` открывается SSH TCP/22 до `host.docker.internal`, получен banner `SSH-2.0-OpenSSH_10.3`.
|
||||
- Из того же контейнера доступен внешний `github.com:22`, получен SSH banner.
|
||||
- Эти сетевые пробы не передавали ключи и не выполняли удалённых команд: рабочая авторизация, host key pinning и права пользователя ими не приняты.
|
||||
- В production по-прежнему `permissions.mode: allow_all`; профиль Seatbelt для рабочего запуска из Balda этим тестом не устанавливался.
|
||||
|
||||
## Проверка Seatbelt
|
||||
|
||||
На синтетических файлах выполнены чтение разрешённого пути, запрещённое чтение другого пути и запрещённая запись через дочерний `/bin/sh`.
|
||||
Оба запрещённых действия завершились `Operation not permitted`, исходный файл сохранился.
|
||||
Это проверка работы правила и наследования ограничения, а не готовая политика изоляции агента: тестовый профиль разрешал остальные операции и запрещал только контрольную папку.
|
||||
|
||||
```json
|
||||
{
|
||||
"macos": "26.7.1",
|
||||
"allowed_read": {
|
||||
"exit_code": 0,
|
||||
"stdout": "allowed",
|
||||
"stderr": ""
|
||||
},
|
||||
"blocked_read": {
|
||||
"exit_code": 1,
|
||||
"stdout": "",
|
||||
"stderr": "cat: /private/tmp/workspace-gateway-seatbelt-nh3ciwhu/blocked/probe: Operation not permitted"
|
||||
},
|
||||
"blocked_child_write": {
|
||||
"exit_code": 1,
|
||||
"stdout": "",
|
||||
"stderr": "fixture: /private/tmp/workspace-gateway-seatbelt-nh3ciwhu/blocked/probe: Operation not permitted"
|
||||
},
|
||||
"blocked_file_unchanged": true,
|
||||
"scope": "Synthetic deny-rule/inheritance probe, not an approved production agent profile"
|
||||
}
|
||||
```
|
||||
|
||||
## Готовые средства
|
||||
|
||||
[anthropics/sandbox-runtime](https://github.com/anthropics/sandbox-runtime) уже предоставляет запуск произвольного процесса с ограничениями файлов и сети, на macOS используя Seatbelt.
|
||||
Изучена документация; пакет не устанавливался и рабочие профили этого проекта не принимались.
|
||||
Сначала проверяется готовое средство и штатная sandbox конкретного агента, затем определяется, нужен ли какой-либо дополнительный launcher.
|
||||
|
||||
[Beads](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md) рекомендует Dolt server mode для одновременных записывающих клиентов.
|
||||
Настройка общего серверного доступа из Balda и удалённых сред ещё не выполнена.
|
||||
|
||||
## Открытые проверки
|
||||
|
||||
- Авторизованный SSH из контейнера в реальные среды с проверкой host key и ограниченными credentials.
|
||||
- Запуск настоящих ACP-агентов и обычных команд на Mac внутри принятой sandbox.
|
||||
- Запрет обхода sandbox через альтернативную SSH-команду, дочерний процесс или доступ к секретам.
|
||||
- Права на файлы и сеть, совместимость native sandbox агента с внешней оболочкой.
|
||||
- Запросы разрешений у агента и штатный `ask` Balda.
|
||||
- MCP, общая БД Beads и полный цикл оригинального Prism на реальном подключении.
|
||||
Reference in new issue
Block a user