docs(env): documented .env.example, token-based claude auth in README

Every variable the compose file, the gateway and config.py read, grouped
and explained, including the ones the Jarvis rework will need
(CLAUDE_CODE_OAUTH_TOKEN, TELEGRAM_*, T3_*, KOMODO_*).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
hh
2026-08-27 23:45:51 +02:00
co-authored by Claude Fable 5
parent a937500d9b
commit 95fc8a4578
2 changed files with 67 additions and 25 deletions
+62 -18
View File
@@ -1,40 +1,84 @@
# Which services to run. Everything is behind a profile: db, gateway, obsidian. # beaver-agent - единственный .env стека.
# Его читают: docker compose (профили, порты, postgres), gateway (env_file)
# и config.py (os.environ). Секреты живут только здесь, в git - этот example.
# Сгенерировать секрет: openssl rand -hex 32
### Compose ###################################################################
# Какие сервисы поднимать: db (postgres), gateway, obsidian (obsidian-headless)
COMPOSE_PROFILES=db,gateway,obsidian COMPOSE_PROFILES=db,gateway,obsidian
# Ветка/тег beaver-gateway, из которого собирается образ шлюза
GATEWAY_REF=main GATEWAY_REF=main
# Uncomment when developing against a sibling ../beaver-gateway checkout. # Dev на маке: gateway собирается из соседнего ../beaver-gateway
# Pure code edits then need only `docker compose restart gateway`
#COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml #COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml
### Postgres ##################################################################
POSTGRES_USER=beaver POSTGRES_USER=beaver
POSTGRES_PASSWORD=CHANGE-ME-strong-random-password POSTGRES_PASSWORD=
POSTGRES_DB=beaver POSTGRES_DB=beaver
# Порт наружу только через docker-compose.override.yml (пример рядом)
#PORT_POSTGRES=5432
# Admin UI login. Used only to mint/revoke tokens. ### Gateway: admin и сессии ###################################################
# Логин в admin UI; токены для клиентов выпускаются там
ADMIN_USER=admin ADMIN_USER=admin
ADMIN_PASS=CHANGE-ME-admin-password ADMIN_PASS=
# Подпись session-cookie admin UI
SESSION_SECRET=
# openssl rand -hex 32 ### Claude ####################################################################
SESSION_SECRET=CHANGE-ME-random-hex
# Sniffed from the Raycast desktop app # OAuth-токен подписки для Claude Agent SDK внутри контейнера.
RAYCAST_DEVICE_ID=CHANGE-ME-32-byte-hex # На маке: `claude setup-token` (живёт год). Тратит лимиты подписки как
RAYCAST_BEARER=rca_CHANGE-ME # обычный Claude Code. Отзыв = перевыпуск; утёк - перевыпусти сразу.
CLAUDE_CODE_OAUTH_TOKEN=
FIREFLY_BASE_URL=https://firefly.example.com ### Telegram (frontend, с S5) #################################################
FIREFLY_PAT=changeme
# example: CALENDAR_MCPS=work=https://calendar-mcp.com/mcp/AAAA,home=https://calendar-mcp.com/mcp/BBBB # @BotFather → токен; там же Bot Settings → Topics → включить в личных чатах
TELEGRAM_BOT_TOKEN=
# Твой numeric id (@userinfobot). Единственный, кому бот отвечает
TELEGRAM_USER_ID=
### Raycast ###################################################################
# 64 hex, один раз: python3 -c 'import secrets;print(secrets.token_hex(32))'
RAYCAST_DEVICE_ID=
# rca_... из десктоп-приложения Raycast (см. raycast-api)
RAYCAST_BEARER=
### MCP, к которым ходят агенты ###############################################
# Firefly III: адрес и Personal Access Token
FIREFLY_BASE_URL=
FIREFLY_PAT=
# Календари: name=url,name=url (пусто - без календарей)
CALENDAR_MCPS= CALENDAR_MCPS=
# MCP beavergram (telegram-history)
BEAVERGRAM_MCP= BEAVERGRAM_MCP=
### t3code (руки диспетчера, с S10) ###########################################
# `t3 serve --tailscale-serve --host <tailnet-ip>` на маке → адрес
T3_URL=
# `t3 auth session issue --token-only`
T3_TOKEN=
### Komodo (python_tool с перечисленными действиями, с S8) ####################
KOMODO_URL=
KOMODO_KEY=
KOMODO_SECRET=
### Порты хоста и внешний адрес ###############################################
PORT_MESSAGES=62990 PORT_MESSAGES=62990
PORT_MCP=62991 PORT_MCP=62991
PORT_ADMIN=62992 PORT_ADMIN=62992
PORT_MARKDOWN=62993 PORT_MARKDOWN=62993
# Публичный URL за reverse proxy (см. ./caddy). Пусто для localhost/dev
# Public URL where the reverse proxy in front (see ./caddy) terminates.
# Leave empty for raw-port localhost / dev setups.
PUBLIC_BASE_URL= PUBLIC_BASE_URL=
+5 -7
View File
@@ -18,7 +18,7 @@ Uses Claude Code and Raycast subscriptions for agents, has some MCPs set up. You
```bash ```bash
cp .env.example .env cp .env.example .env
# fill CHANGE-ME # every empty value is documented inline; secrets: openssl rand -hex 32
nvim .env nvim .env
# build raycast config on your mac (beta by default, consider checking raycast-api for instructions) # build raycast config on your mac (beta by default, consider checking raycast-api for instructions)
@@ -53,12 +53,10 @@ docker restart beaver-obsidian
### 3. Set up claude ### 3. Set up claude
```bash On your mac run `claude setup-token` and put the result into `.env` as
docker exec -it beaver-gateway claude /login `CLAUDE_CODE_OAUTH_TOKEN`. That is the whole auth: no `/login` inside the
docker exec -it beaver-gateway bash -c 'cd /vault && claude --dangerously-skip-permissions --model claude-opus-4-7' container, no dialogs. The token draws from your subscription limits like
``` regular Claude Code; rotate it by running `claude setup-token` again.
Click through every dialog, then `/exit` or Ctrl+C.
### 4. Mint a token ### 4. Mint a token