34 lines
1.4 KiB
Python
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)
|