Files
ModelForge/node-agent/src/modelforge_node_agent/settings.py
T

34 lines
1.4 KiB
Python

from pathlib import Path
from typing import Literal
from pydantic import Field, SecretStr
from pydantic_settings import BaseSettings, SettingsConfigDict
class AgentSettings(BaseSettings):
model_config = SettingsConfigDict(
env_prefix="MODELFORGE_AGENT_", env_file=".env", extra="ignore"
)
control_plane_url: str = "http://api:8000"
enrollment_token: SecretStr | None = None
identity: str | None = None
identity_mode: str = "auto"
accelerator_mode: Literal["auto", "nvidia", "cpu"] = "auto"
identity_file: Path = Path("/data/state/node-id")
credential_file: Path = Path("/data/state/node-credential")
state_file: Path = Path("/data/state/agent-state.json")
display_name: str | None = None
heartbeat_interval_seconds: int = Field(default=10, ge=1)
inventory_interval_seconds: int = Field(default=300, ge=5)
telemetry_interval_seconds: int = Field(default=30, ge=5)
request_timeout_seconds: float = Field(default=10, gt=0)
max_backoff_seconds: int = Field(default=60, ge=1)
tls_verify: bool = True
model_cache_path: Path = Path("/data/hf-cache")
artifact_path: Path = Path("/data/artifacts")
quarantine_path: Path = Path("/data/quarantine")
hf_token: SecretStr | None = None
artifact_job_poll_interval_seconds: int = Field(default=5, ge=1, le=60)
artifact_download_timeout_seconds: float = Field(default=120, gt=0, le=600)