# ============================================================
# ToolBoxV2 - Environment Configuration Template
# ============================================================

# --- Core Application Configuration ---
TB_ENV="development"                        # development | production
SERVER_ID="myserver"                        # Default: hostname
HOSTNAME="localhost"
TOOLBOX_LOGGING_LEVEL="INFO"                # "DEBUG", "INFO", "NOTSET"
GUI_COMMAND="wt new-tab powershell -NoExit -Command"
ICON_FILE="./favicon.ico"

# --- Network & Base URLs ---
TOOLBOXV2_BASE="localhost"
TOOLBOXV2_BASE_PORT=6587
TOOLBOXV2_REMOTE_BASE="https://simplecore.app"
TOOLBOXV2_REMOTE_BASE_PORT=6587
TOOLBOXV2_REMOTE_IP="139.162.136.35"
APP_BASE_URL="http://localhost:8000"        # Dev base URL
APP_BASE_URL_PROD="https://simplecore.app"  # Production base URL

# --- Security & Authentication (General) ---
ADMIN_UI_PASSWORD="admin_pass"
CLUSTER_SECRET=
TB_JWT_SECRET=                              # REQUIRED: JWT signing secret (min 64 chars)
TB_COOKIE_SECRET=                           # REQUIRED: Session cookie signing secret
TOKEN_SECRET="012345678900000987654321asdfghjkl"
TB_R_KEY="root@remote"                      # for your remote server connection

DEV_MODULES="welcome CloudM"

# --- Database & Caching ---
IS_OFFLINE_DB="false"                       # true = nur SQLite, false = full DB
DB_CONNACTION_URI=
DB_MODE_KEY="RR"
DB_MODE_KEY_TEST="LC"
DB_CACHE_TTL="60"

# --- Object Storage (MinIO / Cloud / S3) ---
MINIO_ENDPOINT=
MINIO_ACCESS_KEY=
MINIO_SECRET_KEY=

CLOUD_ENDPOINT=
CLOUD_ACCESS_KEY=
CLOUD_SECRET_KEY=

# Blob API Keys (Dynamic)
# Format: TB_BLOB_API_KEY_<PORT>=<key> oder TB_BLOB_API_KEY_<HOST>_<PORT>=<key>
# TB_BLOB_API_KEY_3001=
# TB_BLOB_API_KEY_3002=

# --- CloudM LiveSync config ---
LIVESYNC_WS_HOST=0.0.0.0   # nur im selben lan oder server ip eingeben
LIVESYNC_WS_PORT=8765
LIVESYNC_WSS=false
LIVESYNC_SSL_CERT=   # /etc/letsencrypt/live/sync.example.com/fullchain.pem
LIVESYNC_SSL_KEY=    # /etc/letsencrypt/live/sync.example.com/privkey.pem

# --- AI & LLM API Keys ---
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=
DEEPSEEK_API_KEY=
GROQ_API_KEY=
OPENROUTER_API_KEY=
HUGGINGFACEHUB_API_TOKEN=
OLLAMA_API_KEY=
ELEVENLABS_API_KEY=
REPLICATE_API_TOKEN=
DEEPGRAM_API_KEY=
PINECONE_API_KEY=
PINECONE_API_ENV=

# --- AI Model Configuration & Defaults ---
MOD_PROVIDER="https://simplecore.app"

VOTING_MODEL="groq/llama-3.1-8b-instant"

FASTMODEL="9rou/fast"#"mm/MiniMax-M2.7"
BLITZMODEL="cerebras/gpt-oss-120b"#"groq/llama-3.1-8b-instant"# "cerebras/qwen-3-235b-a22b-instruct-2507"#

LIGHNIGMODEL="zglm/glm-4.7"

COMPLEXMODEL="9rou/complex"# "mm/MiniMax-M2.7"
SUMMARYMODEL="openrouter/mistralai/ministral-8b"
AUDIOMODEL="groq/whisper-large-v3-turbo"
IMAGEMODEL="openrouter/google/gemini-2.5-flash-image-preview:free"

DEFAULTMODELEMBEDDING="gemini/text-embedding-004"
FALLBACKS_MODELS=

NARRATOR_MAX_INPUT_TPM=10000   # input tokens per minute
NARRATOR_MAX_OUTPUT_TPM=1000   # output tokens per minute

# --- sandbox ---
TB_SANDBOX_LIVE="0"
# TB_SANDBOX_GLOBAL_DIR=
TB_SANDBOX_IMPORT_DIRS=
TB_SANDBOX_EXPORT_DIRS=
TB_SANDBOX_EXPORT_PREFIX="/out"
TB_SANDBOX_ALLOW_SHELL="1"
TB_SANDBOX_ALLOW_CODE="1"
TB_SANDBOX_ALLOW_BROWSER="1"
TB_SANDBOX_ALLOW_NETWORK="1"
TB_SANDBOX_MAX_TRANSFER_MB="1"
ISAA_TASKMAP_PREINJECT="ture"

# --- Python & Runtime Environment ---
TB_RUNTIME_PATH=
SHELL=
PYO3_PYTHON=
UV_BASE_ENV=
HF_HOME="./.data/huggingface"
HUGGINGFACE_HUB_VERBOSITY="info"

# Hardware / Performance
PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True"
OMP_NUM_THREADS=1
NUMEXPR_MAX_THREADS=8
CUDA_LAUNCH_BLOCKING=1
TF_ENABLE_ONEDNN_OPTS=0

# --- Payment (Stripe) ---
STRIPE_SECRET_KEY=
STRIPE_SECRET_KEY_=

# --- OAuth2 Configuration ---
# Discord
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_REDIRECT_URI="http://localhost:8000/auth/discord/callback"
# Google
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI="http://localhost:8000/auth/google/callback"

# --- Passkeys / WebAuthn ---
PASSKEY_RP_ID="localhost"                   # Prod: "simplecore.app"
PASSKEY_RP_NAME="ToolBoxV2"
PASSKEY_ORIGIN="http://localhost:8000"

# --- Tools, Search & Integrations ---
GOOGLE_API_KEY=
GOOGLE_CSE_ID=
GOOGLE_CREDENTIALS_FILE=
WITH_GOOGLE_TOOLS=
GOOGLE_APPLICATION_CREDENTIALS=
GOOGLE_TOKEN_DIR=

BING_SUBSCRIPTION_KEY=
BING_SEARCH_URL=
SERP_API_KEY=
WOLFRAM_ALPHA_APPID=
IFTTTKey=
FIRECRAWL_API_KEY=
NWV2=                                       # https://newsapi.org/v2
GITHUB_TOKEN=
GITHUB_TOKEN_GIST=

# --- Messaging & Social Bots ---
# Email
GMAIL_EMAIL=
GMAIL_PASSWORD=
EMAIL_BG_LIGHT_URL="/web/assets/backgrounds/light-bg.png"
EMAIL_BG_DARK_URL="/web/assets/backgrounds/dark-bg.png"
EMAIL_LOGO_URL="/web/icons/icon.png"

# Discord Bot
DISCORD_BOT_TOKEN=
DISCORD_AID=

# Telegram Bot
TELEGRAM_BOT_TOKEN=
TELEGRAM_AID=

# WhatsApp
WHATSAPP_PHONE_NUMBER_ID=
WHATSAPP_API_TOKEN=
WHATSAPP_VERIFY_TOKEN=
RECIPIENT_PHONE=

# --- Web Server Configuration (Nginx / SSL) ---
NGINX_PATH=
NGINX_CONF_PATH=
NGINX_KEY_PATH=
NGINX_CERT_PATH=
SSL_KEY_PATH=
SSL_CERT_PATH=

# --- Desktop & Build Configuration (Tauri) ---
TAURI_SIGNING_PUBLIC_KEY=
TAURI_SIGNING_PRIVATE_KEY=
TAURI_SIGNING_PRIVATE_KEY_PASSWORD=

# --- Miscellaneous / Legacy / Unsorted ---
VAULTS=
OBSIDIAN_VAULT_PATH=
LOCAL_DOCKER_IMAGE=
EXTERNAL_PATH_RUNNABELS=
EXTERNAL_PATH_RUNNABLE=
LITELLM_LOG="NOTSET"
ANONYMIZED_TELEMETRY="false"

# ============================================================
# Docker Compose Stack Configuration
# ============================================================
# These vars are consumed by compose.yaml services.
# If running without Compose, they are ignored.

# -- Image & Commands -------------------------------------------------------
TB_IMAGE=toolboxv2:latest                   # Image for tb-worker / tb-host
TB_WORKER_CMD="tb workers start"            # Command for tb-worker service
TB_HOST_CMD="tb workers start"              # Command for tb-host service

# -- Compose Ports (external) -----------------------------------------------
NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443
TB_HOST_HTTP_PORT=5000                      # Only used when profile 'host' active
TB_HOST_WS_PORT=6587

# -- Container Manager -------------------------------------------------------
CONTAINER_ADMIN_KEY=                        # Admin key for ContainerManager API

# -- Redis (profile: redis) --------------------------------------------------
REDIS_URL=redis://redis:6379                # Override for external: redis://myhost:6379
REDIS_MAXMEM=256mb

# -- PostgreSQL (profile: postgres) ------------------------------------------
POSTGRES_DB=toolboxv2
POSTGRES_USER=toolbox
POSTGRES_PASSWORD=                          # REQUIRED if using postgres profile

# -- LLM Gateway (profile: llm) ---------------------------------------------
# When using profile 'ollama':  http://ollama:11434
# When Ollama on host:          http://host.docker.internal:11434
OLLAMA_URL=http://ollama:11434

# -- TB Registry (profile: registry) ----------------------------------------
REGISTRY_MINIO_ENDPOINT=minio:9000          # Override if registry uses different MinIO
CLERK_SECRET_KEY=
CLERK_PUBLISHABLE_KEY=

# -- Observability -----------------------------------------------------------
#   OPENOBSERVE_ENDPOINT      = http://localhost:5080
#   OPENOBSERVE_USER          = root@example.com
#   OPENOBSERVE_PASSWORD      = <password>
#   OPENOBSERVE_ORG           = default
#   OPENOBSERVE_DATA_DIR      = ./openobserve-data
#   OPENOBSERVE_PORT          = 5080
#   OPENOBSERVE_DOCKER_IMAGE  = public.ecr.aws/zinclabs/openobserve:latest
#   OPENOBSERVE_CONTAINER     = toolbox-openobserve
#
#   # Storage backend — default: disk. Set these for MinIO-backed:
#   OPENOBSERVE_STORAGE       = disk | s3
#   OPENOBSERVE_S3_ENDPOINT   = http://localhost:9000
#   OPENOBSERVE_S3_ACCESS_KEY = <key>
#   OPENOBSERVE_S3_SECRET_KEY = <secret>
#   OPENOBSERVE_S3_BUCKET     = openobserve-data
#
#   # Historical import:
#   OPENOBSERVE_IMPORT_ENABLED = false | true
#   OPENOBSERVE_IMPORT_BUCKET  = system-audit-logs
#   OPENOBSERVE_IMPORT_PREFIX  =
#   OPENOBSERVE_IMPORT_FROM    =
#   OPENOBSERVE_IMPORT_TO      =
