import os class Settings: DB_HOST: str = os.getenv("DB_HOST", "postgres") DB_PORT: int = int(os.getenv("DB_PORT", "5432")) DB_USER: str = os.getenv("DB_USER", "aissa") DB_PASSWORD: str = os.getenv("DB_PASSWORD", "Foodlinkk#2026") DB_NAME: str = os.getenv("DB_NAME", "foodlinkk") OLLAMA_URL: str = os.getenv("OLLAMA_URL", "http://10.4.7.19:11434") OLLAMA_MODEL: str = os.getenv("OLLAMA_MODEL", "qwen3:8b") TOOLS_API_URL: str = os.getenv("TOOLS_API_URL", "http://tools-api:8700") HERMAN_ORCHESTRATOR_URL: str = os.getenv("HERMAN_ORCHESTRATOR_URL", "http://10.4.7.19:8090") # OpenRouter (optioneel — key ook via Instellingen → AI / LLM) OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "") OPENROUTER_MODEL: str = os.getenv("OPENROUTER_MODEL", "deepseek/deepseek-v4-flash") OPENROUTER_BASE_URL: str = os.getenv("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1") # orchestrator | router | auto (auto = orchestrator, fallback naar standaard LLM provider) HERMAN_LLM_BACKEND: str = os.getenv("HERMAN_LLM_BACKEND", "auto") # Hermes Agent (OpenAI-compatible) — Herman briefing backend HERMES_API_BASE: str = os.getenv("HERMES_API_BASE", "http://10.4.7.10:8642/v1") HERMES_API_KEY: str = os.getenv("HERMES_API_KEY", "") HERMES_API_MODEL: str = os.getenv("HERMES_API_MODEL", "hermes-agent") WHISPER_API_URL: str = os.getenv("WHISPER_API_URL", "http://10.4.7.19:8877/v1/audio/transcriptions") WHISPER_MODEL: str = os.getenv("WHISPER_MODEL", "Systran/faster-whisper-base") WHISPER_LANGUAGE: str = os.getenv("WHISPER_LANGUAGE", "nl") HERMES_FEED_URL: str = os.getenv("HERMES_FEED_URL", "http://10.4.7.10:8755") # Bind cockpit chat aan Hermes/Telegram memory (chat_id als OpenAI "user") HERMES_CEO_CHAT_ID: str = os.getenv("HERMES_CEO_CHAT_ID", "8859782446") HERMES_CTO_CHAT_ID: str = os.getenv("HERMES_CTO_CHAT_ID", "789036463") HERMES_MEMORY_LIMIT: int = int(os.getenv("HERMES_MEMORY_LIMIT", "24")) HERMES_BUILD_URL: str = os.getenv("HERMES_BUILD_URL", "http://10.4.7.27:8798") CHROMA_HOST: str = os.getenv("CHROMA_HOST", "chroma") CHROMA_PORT: int = int(os.getenv("CHROMA_PORT", "8000")) MINIO_ENDPOINT: str = os.getenv("MINIO_ENDPOINT", "minio:9000") SESSION_SECRET: str = os.getenv("SESSION_SECRET", "foodlinkk-cockpit-session-change-me-2026") SESSION_MAX_AGE: int = int(os.getenv("SESSION_MAX_AGE", str(60 * 60 * 24 * 14))) # 14 days @property def database_dsn(self) -> str: return ( f"host={self.DB_HOST} port={self.DB_PORT} dbname={self.DB_NAME} " f"user={self.DB_USER} password={self.DB_PASSWORD}" ) settings = Settings()