# Slack Socket Mode SLACK_DISABLED=false SLACK_APP_TOKEN=xapp-*** SLACK_BOT_TOKEN=xoxb-*** SLACK_API_BASE_URL=https://slack.com/api SLACK_SOCKET_OPEN_URL=apps.connections.open SLACK_INITIAL_THREAD_HISTORY_COUNT=8 SLACK_HISTORY_API_MAX_LIMIT=50 SLACK_ACTIVE_TURN_RECONCILE_INTERVAL_MS=15000 SLACK_PROGRESS_REMINDER_AFTER_MS=120000 SLACK_PROGRESS_REMINDER_REPEAT_MS=120000 # China Feishu Open Platform. Disabled by default; when enabled, Slack and # Feishu run side by side in the same broker process. FEISHU_ENABLED=false # FEISHU_APP_ID=cli_*** # FEISHU_APP_SECRET=*** # Required when FEISHU_ENABLED=true. Set at least one identity from the Feishu # app/bot console so @bot mentions can be matched without logging the value. # FEISHU_BOT_OPEN_ID=ou_*** # FEISHU_BOT_USER_ID=ou_*** # FEISHU_BOT_UNION_ID=on_*** FEISHU_DOMAIN=feishu FEISHU_API_BASE_URL=https://open.feishu.cn/open-apis FEISHU_INITIAL_THREAD_HISTORY_COUNT=8 FEISHU_HISTORY_API_MAX_LIMIT=50 # Prefer "all" with the sensitive im:message.group_msg permission. Use # "at_only" only as an explicit degraded mode if that permission is denied. FEISHU_GROUP_MESSAGE_MODE=all # Set true only after the real non-@ group follow-up smoke passes in all mode. FEISHU_ALL_MESSAGE_DELIVERY_VERIFIED=false # Production should fail fast when Feishu is enabled but unavailable. Set this # to false only for development or limited rollout where Slack may continue # while Feishu is visibly degraded. FEISHU_STARTUP_REQUIRED=true # Service storage PORT=3000 SERVICE_NAME=slack-codex-broker # Optional admin origin used in Slack session trace links. # ADMIN_BASE_URL=https://admin.example.com # Set true to show the "查看会话活动时间线" Slack/Feishu session CTA. SESSION_TIMELINE_LINK_ENABLED=false # Optional: protects /admin/api/* when set. # BROKER_ADMIN_TOKEN=change-me DATA_ROOT=/app/.data SESSIONS_ROOT=/app/.data/sessions REPOS_ROOT=/app/.data/repos LOG_DIR=/app/.data/logs LOG_LEVEL=info LOG_RAW_SLACK_EVENTS=true LOG_RAW_FEISHU_EVENTS=false LOG_RAW_CODEX_RPC=true LOG_RAW_HTTP_REQUESTS=true LOG_RAW_MAX_BYTES=131072 DISK_CLEANUP_ENABLED=true # Safe rollout: leave dry-run enabled for a few days, inspect structured # cleanup candidate logs, then set to false only after the listed paths are # confirmed rebuildable. DISK_CLEANUP_DRY_RUN=true DISK_CLEANUP_CHECK_INTERVAL_MS=300000 DISK_CLEANUP_MIN_FREE_BYTES=10737418240 DISK_CLEANUP_TARGET_FREE_BYTES=21474836480 DISK_CLEANUP_SESSION_CACHE_TTL_MS=604800000 DISK_CLEANUP_INACTIVE_SESSION_MS=86400000 DISK_CLEANUP_JOB_PROTECTION_MS=172800000 DISK_CLEANUP_OLD_LOG_MS=86400000 # Codex app-server CODEX_APP_SERVER_PORT=4590 # Optional: run each chat conversation's Codex app-server under Fin. # Slack channels and Feishu groups become Fin agent names. FIN_ENABLED=false # FIN_SUPERVISOR_PATH=/Users/you/Projects/fin/target/debug/fin-supervisor # FIN_DIR=/Users/you/.fin FIN_DISABLE_SANDBOX=false # Optional: comma-separated MCP servers to remove from the container-specific # Codex config when they are present but not logged in there. # Main Codex runtime disables all built-in MCP servers by default ("*"). # Add names here only if you want the broker logs to show explicit intent. # CODEX_DISABLED_MCP_SERVERS=tempad_dev # Team-level Codex home shared by all auth profiles. Auth profiles still keep # their own auth.json/cache/state, but AGENT.md/config/rules/skills link here. # Existing profile/global memory should be seeded into this directory once by # an operator; the broker runtime does not run historical data migration. # CODEX_TEAM_HOME=/app/.data/team-codex-home # Optional legacy host Codex home mount for non-team-home fallback setups. # Use absolute paths here, not "~/.codex". # CODEX_HOST_HOME_PATH=/Users/you/.codex # CODEX_HOST_HOME_PATH_HOST=/Users/you/.codex # HOST_AGENTS_PATH_HOST=/Users/you/.agents # HOST_AGENTS_CONTAINER_PATH=/Users/you/.agents # Optional: reuse host Gemini CLI OAuth for UI work inside the container. # Only the minimal auth snapshot is copied into the container runtime home. # GEMINI_HOST_HOME_PATH=/host-gemini-home # GEMINI_HOST_HOME_PATH_HOST=/Users/you/.gemini # GEMINI_HTTP_PROXY=http://host.docker.internal:6152 # GEMINI_HTTPS_PROXY=http://host.docker.internal:6152 # GEMINI_ALL_PROXY=socks5://host.docker.internal:6153 # GitHub CLI / API # GH_TOKEN=gho_*** # GITHUB_TOKEN=${GH_TOKEN} # SSH_AUTH_SOCK_HOST=/run/host-services/ssh-auth.sock # SSH_AUTH_SOCK_CONTAINER=/ssh-agent # Auth mode A: OpenAI API key # OPENAI_API_KEY=sk-*** # Auth mode B: reuse a Codex/ChatGPT auth.json mounted into the container # CODEX_AUTH_JSON_PATH=/auth/auth.json # Optional: override docker-side helpers that need to call a host-local service. # When unset, the broker probes common host-local tempad endpoints and picks the first # healthy one (currently 4318 / 4320 on host.docker.internal). # TEMPAD_LINK_SERVICE_URL=http://host.docker.internal:4320