From 94bae38012f2f7b13087788e649be535e43fc970 Mon Sep 17 00:00:00 2001 From: h Date: Thu, 21 May 2026 00:32:00 +0200 Subject: [PATCH] fix: load env before config --- src/beaver_gateway/cli.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/beaver_gateway/cli.py b/src/beaver_gateway/cli.py index d1cf2e7..f2b1aad 100644 --- a/src/beaver_gateway/cli.py +++ b/src/beaver_gateway/cli.py @@ -27,6 +27,7 @@ from typing import TYPE_CHECKING import uvicorn import uvloop +from dotenv import load_dotenv from raycast_api import Client as RaycastClient from raycast_api.config import Config as RaycastConfig @@ -61,6 +62,14 @@ def main() -> None: async def _async_main() -> None: + # Populate ``os.environ`` from ``.env`` before anything else so the + # user's ``config.py`` can read its own secrets via ``os.environ[...]`` + # (Firefly PAT, third-party MCP creds, etc.). ``Settings`` already + # reads ``.env`` independently via pydantic-settings, but that path + # populates Settings fields, not the process environment. + # ``override=False``: real env vars (Docker, systemd) win over .env. + load_dotenv(override=False) + settings = Settings() # ty: ignore[missing-argument] gateway = config_loader.load(settings.config_path)