/** * ModelGrid configuration interfaces. */ import type { IModelCatalog, IModelCatalogEntry } from './catalog.ts'; import type { IClusterConfig } from './cluster.ts'; import type { IContainerConfig } from './container.ts'; /** * API server configuration */ export interface IApiConfig { /** Port to listen on (default: 8080) */ port: number; /** Host to bind to (default: '0.0.0.0') */ host: string; /** Valid API keys for authentication */ apiKeys: string[]; /** Rate limit in requests per minute (optional) */ rateLimit?: number; /** Enable CORS (default: false) */ cors?: boolean; /** Allowed origins for CORS */ corsOrigins?: string[]; } /** * Docker/container runtime configuration */ export interface IDockerConfig { /** Docker network name (default: 'modelgrid') */ networkName: string; /** Container runtime to use */ runtime: 'docker' | 'podman'; /** Path to docker/podman socket (optional) */ socketPath?: string; } /** * GPU assignment configuration */ export interface IGpuAssignmentConfig { /** Whether to auto-detect GPUs */ autoDetect: boolean; /** Manual GPU to container assignments (gpuId -> containerId) */ assignments: Record; } /** * Model management configuration */ export interface IModelConfig { /** URL to fetch the public catalog */ registryUrl: string; /** Whether to auto-start a deployment when requested */ autoDeploy: boolean; /** Default engine for new deployments */ defaultEngine: 'vllm'; /** Models to auto-load on startup */ autoLoad: string[]; } /** * Main ModelGrid configuration interface */ export interface IModelGridConfig { /** Configuration format version */ version: string; /** API server configuration */ api: IApiConfig; /** Docker configuration */ docker: IDockerConfig; /** GPU configuration */ gpus: IGpuAssignmentConfig; /** Container configurations */ containers: IContainerConfig[]; /** Model management configuration */ models: IModelConfig; /** Cluster configuration */ cluster: IClusterConfig; /** Health check interval in milliseconds */ checkInterval: number; } export type IRegistryModel = IModelCatalogEntry; export type IRegistryCatalog = IModelCatalog; /** * Update status information */ export interface IUpdateStatus { /** Current installed version */ currentVersion: string; /** Latest available version */ latestVersion: string; /** Whether an update is available */ updateAvailable: boolean; }