chore: no personal addresses or nicks in the repo - machines by MagicDNS name, vibegram identity only from env

This commit is contained in:
hh
2026-09-02 01:33:58 +02:00
parent 51c27e76de
commit 645d000f8d
5 changed files with 16 additions and 12 deletions
+5 -3
View File
@@ -74,6 +74,8 @@ MSOS_MCP=
# На каждой машине: `t3 auth session issue --token-only --ttl 365d --label beaver` # На каждой машине: `t3 auth session issue --token-only --ttl 365d --label beaver`
T3_MAC_TOKEN= T3_MAC_TOKEN=
T3_DELL_TOKEN= T3_DELL_TOKEN=
# tailnet-адрес самого dell: контейнер t3code-mcp иначе резолвит `dell` в 127.0.1.1
T3_DELL_ADDR=
# Токен gateway со scope `api` (admin → Tokens) - им t3code-mcp шлёт события в /hooks/t3code # Токен gateway со scope `api` (admin → Tokens) - им t3code-mcp шлёт события в /hooks/t3code
T3CODE_MCP_GATEWAY_TOKEN= T3CODE_MCP_GATEWAY_TOKEN=
# Ветка/тег t3code-mcp, из которого собирается образ # Ветка/тег t3code-mcp, из которого собирается образ
@@ -100,12 +102,12 @@ HA_TOKEN=
# Хаб и токен агента: один раз `vibegram join <code> --nick <ник> --no-hooks` # Хаб и токен агента: один раз `vibegram join <code> --nick <ник> --no-hooks`
# из клона репы комнаты на любой машине, токен - в ~/.vibegram/config.json # из клона репы комнаты на любой машине, токен - в ~/.vibegram/config.json
VIBEGRAM_HUB=https://vibegram.example.com VIBEGRAM_HUB=
VIBEGRAM_TOKEN= VIBEGRAM_TOKEN=
VIBEGRAM_NICK=beaver-test VIBEGRAM_NICK=
# Репа комнаты (GitHub org/repo) - сервис vibegram-repo держит клон в томе # Репа комнаты (GitHub org/repo) - сервис vibegram-repo держит клон в томе
# `vibegram`, gateway видит его в /vibegram/<repo> только на чтение # `vibegram`, gateway видит его в /vibegram/<repo> только на чтение
VIBEGRAM_REPO=org/room VIBEGRAM_REPO=
# Токен GitHub с доступом к репе (приватная); пусто - публичная # Токен GitHub с доступом к репе (приватная); пусто - публичная
VIBEGRAM_REPO_TOKEN= VIBEGRAM_REPO_TOKEN=
+4 -4
View File
@@ -74,16 +74,16 @@ HA = (
ha = McpServer.python_tool(name="ha", tools=[HA.ha]) if HA else None ha = McpServer.python_tool(name="ha", tools=[HA.ha]) if HA else None
ha_exposed = (ExposedMcp(name="ha"),) if HA else () ha_exposed = (ExposedMcp(name="ha"),) if HA else ()
VIBEGRAM_REPO = Path("/vibegram") / env("VIBEGRAM_REPO", "x/room").split("/")[-1] VIBEGRAM_REPO = Path("/vibegram") / env("VIBEGRAM_REPO", "org/room").split("/")[-1]
VIBEGRAM = ( VIBEGRAM = (
Vibegram( Vibegram(
hub=env("VIBEGRAM_HUB", "https://vibegram.example.com"), hub=os.environ["VIBEGRAM_HUB"],
token=os.environ["VIBEGRAM_TOKEN"], token=os.environ["VIBEGRAM_TOKEN"],
nick=env("VIBEGRAM_NICK", "beaver-test"), nick=os.environ["VIBEGRAM_NICK"],
repo=VIBEGRAM_REPO if VIBEGRAM_REPO.exists() else None, repo=VIBEGRAM_REPO if VIBEGRAM_REPO.exists() else None,
tz=TZ, tz=TZ,
) )
if env("VIBEGRAM_TOKEN") if env("VIBEGRAM_TOKEN") and env("VIBEGRAM_HUB") and env("VIBEGRAM_NICK")
else None else None
) )
"""Комната агентов: диспетчер сидит в ней сам; клон репы комнаты - том `vibegram`.""" """Комната агентов: диспетчер сидит в ней сам; клон репы комнаты - том `vibegram`."""
+2 -2
View File
@@ -1,8 +1,8 @@
"""вайбграм - комната агентов на хабе, как python_tool. """вайбграм - комната агентов на хабе, как python_tool.
Хаб - https://vibegram.example.com, протокол - REST с bearer-токеном агента Хаб - `VIBEGRAM_HUB`, протокол - REST с bearer-токеном агента
(выдан при `vibegram join`, лежит в env gateway и в контекст модели не (выдан при `vibegram join`, лежит в env gateway и в контекст модели не
попадает). Диспетчер сидит в комнате сам (D1: внутренний контур с соседями), попадает). Диспетчер сидит в комнате сам (внутренний контур с соседями),
но через перечислимые действия: прочитать новое, написать, кто в комнате, но через перечислимые действия: прочитать новое, написать, кто в комнате,
что занято, план, claim/release, карточка. Один и тот же клиент кормит что занято, план, claim/release, карточка. Один и тот же клиент кормит
крон-проверку (`pending`) и тулзу (`vibegram`). крон-проверку (`pending`) и тулзу (`vibegram`).
+3
View File
@@ -102,6 +102,9 @@ services:
# события тредов (завершён / упал / спрашивает) → инжект в мастер (§4.5) # события тредов (завершён / упал / спрашивает) → инжект в мастер (§4.5)
T3CODE_MCP_HOOK_URL: http://gateway:62990/hooks/t3code T3CODE_MCP_HOOK_URL: http://gateway:62990/hooks/t3code
T3CODE_MCP_STATE: /data/t3code-mcp.json T3CODE_MCP_STATE: /data/t3code-mcp.json
extra_hosts:
# контейнер резолвит имя своего хоста в 127.0.1.1 - даём tailnet-адрес явно
- "dell:${T3_DELL_ADDR:?T3_DELL_ADDR=tailnet ip of dell}"
volumes: volumes:
- ./t3code.toml:/config/t3code.toml:ro - ./t3code.toml:/config/t3code.toml:ro
- t3code-state:/data - t3code-state:/data
+2 -3
View File
@@ -1,6 +1,5 @@
# t3code-mcp (§5): машины с T3 Code и allowlist проектов на каждой. # Машины с T3 Code и allowlist проектов на каждой. Токены - в .env (T3_*_TOKEN).
# Токены - только в .env (T3_MAC_TOKEN, T3_DELL_TOKEN), сюда не писать. # Имена - MagicDNS tailnet'а; `dell` для контейнера прописан через T3_DELL_ADDR.
# projects - fnmatch по названию проекта и по его workspace root; "*" - всё (решение h, 2026-08-29).
[machines.mac] [machines.mac]
url = "http://mac:3773" url = "http://mac:3773"