chore: no personal addresses or nicks in the repo - machines by MagicDNS name, vibegram identity only from env
This commit is contained in:
+5
-3
@@ -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=
|
||||||
|
|
||||||
|
|||||||
@@ -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`."""
|
||||||
|
|||||||
@@ -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`).
|
||||||
|
|||||||
@@ -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
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user