feat(config,mcps,policy,compose): komodo alerts with hold, vibegram and ha python_tools, vault rw home zones

This commit is contained in:
hh
2026-08-30 18:16:15 +02:00
parent 002230137e
commit 83531e3ef1
11 changed files with 1186 additions and 47 deletions
+44 -17
View File
@@ -55,19 +55,15 @@ services:
- ./policy.py:/config/policy.py:ro
- ./mcps:/config/mcps:ro
- ./config.json:/config/config.json:ro
# §3.7: vault только на чтение, rw - подмонтирования зон агента.
- vault:/vault:ro
- type: volume
source: vault
target: /vault/мета/бобер
volume:
subpath: мета/бобер
- type: volume
source: vault
target: /vault/💬 чаты
volume:
subpath: 💬 чаты
# §3.7: vault - дом диспетчера, rw целиком; границы (`.obsidian`,
# `мета` вне `бобер`, удаление чужого) держит policy.py (2026-08-30).
- vault:/vault
# клон репы комнаты вайбграма (сервис vibegram-repo), только читать
- vibegram:/vibegram:ro
- claude-home:/home/beaver-runner/.claude
extra_hosts:
# Home Assistant и прочее с network_mode: host
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:62990/healthz', timeout=3)"]
interval: 30s
@@ -83,11 +79,10 @@ services:
mkdir -p /home/$$runner/.claude
[ -e /home/$$runner/.claude/.claude.json ] || echo '{}' > /home/$$runner/.claude/.claude.json
chown -R $$runner /home/$$runner
for d in "/vault/мета/бобер" "/vault/💬 чаты"; do
setfacl -R -m "u:$$runner:rwX" -m "d:u:$$runner:rwX" "$$d" \
|| chown -R $$runner "$$d" \
|| echo "warning: cannot grant $$runner write access to $$d"
done
# ACL, не chown: Obsidian Sync переписывает файлы под root, а default-ACL
# на папках даёт runner'у права и на то, что появится позже.
setfacl -R -m "u:$$runner:rwX" -m "d:u:$$runner:rwX" /vault \
|| echo "warning: cannot grant $$runner write access to /vault"
exec python -m beaver_gateway
t3code-mcp:
@@ -105,9 +100,41 @@ services:
- ./t3code.toml:/config/t3code.toml:ro
- t3code-state:/data
vibegram-repo:
container_name: beaver-vibegram-repo
image: alpine/git:latest
profiles: [vibegram]
<<: *restart
env_file: .env
volumes:
- vibegram:/vibegram
# Клон репы комнаты и pull раз в 10 минут. Токен - только заголовком
# через GIT_CONFIG_*, в .git/config он не попадает: том читает модель.
entrypoint:
- /bin/sh
- -c
- |
repo="$${VIBEGRAM_REPO:?VIBEGRAM_REPO=org/repo}"
dir="/vibegram/$${repo##*/}"
if [ -n "$$VIBEGRAM_REPO_TOKEN" ]; then
export GIT_CONFIG_COUNT=1
export GIT_CONFIG_KEY_0="http.https://github.com/.extraheader"
export GIT_CONFIG_VALUE_0="AUTHORIZATION: basic $$(printf 'x-access-token:%s' "$$VIBEGRAM_REPO_TOKEN" | base64 | tr -d '\n')"
fi
while true; do
if [ -d "$$dir/.git" ]; then
git -C "$$dir" pull -q --ff-only || echo "vibegram-repo: pull failed"
else
git clone -q "https://github.com/$$repo.git" "$$dir" || echo "vibegram-repo: clone failed"
fi
chmod -R a+rX "$$dir" 2>/dev/null
sleep "$${VIBEGRAM_PULL_SECONDS:-600}"
done
volumes:
t3code-state:
postgres-data:
vault:
vibegram:
obsidian-config:
claude-home: