import os from pathlib import Path def csv_env(name: str, default: str): return [x.strip() for x in os.getenv(name, default).split(",") if x.strip()] port = int(os.getenv("PORT", "7860")) model = os.getenv("DEFAULT_MODEL", "chat-model-reasoning") models = csv_env("ALLOWED_MODELS", model) client_keys = csv_env("CLIENT_API_KEYS", os.getenv("PROXY_API_KEY", "sk-change-me")) log_level = os.getenv("LOG_LEVEL", "INFO").upper() timeout = int(os.getenv("REQUEST_TIMEOUT", "180")) config = f"""server: port: {port} host: "0.0.0.0" timeout: {timeout} upstream_retry_attempts: 2 upstream_retry_base_delay: 0.5 upstream_services: - name: "unlimitedai-internal" base_url: "http://127.0.0.1:9000/v1" api_key: "internal-only" description: "Internal UnlimitedAI OpenAI-compatible upstream" is_default: true models: """ for item in models: config += f" - \"{item}\"\n" config += "\nclient_authentication:\n allowed_keys:\n" for key in client_keys: config += f" - \"{key}\"\n" config += f""" features: enable_function_calling: true log_level: "{log_level}" convert_developer_to_system: true key_passthrough: false model_passthrough: false enable_fc_error_retry: true fc_error_retry_max_attempts: 2 """ Path("/app/toolify/config.yaml").write_text(config, encoding="utf-8") print("[OK] wrote /app/toolify/config.yaml") print(f"[INFO] Public Toolify port: {port}") print(f"[INFO] Models: {', '.join(models)}") print(f"[INFO] Client API keys configured: {len(client_keys)}") if client_keys == ["sk-change-me"]: print("[WARN] PROXY_API_KEY/CLIENT_API_KEYS not set. Default API key is sk-change-me. Set a secret before public use.")