/** * 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[]; } /** * Browser-based operations console (UI) configuration. * The UI is served on its own port, distinct from the OpenAI API port, * so that the data plane stays clean. */ export interface IUiConfig { /** Whether to start the UI server alongside the API */ enabled: boolean; /** Port to bind the UI server to (default: 8081) */ port: number; /** Host to bind the UI server to (default: '0.0.0.0') */ host: string; /** * Where UI assets come from. * - 'bundle': from the compiled-in `ts_bundled/bundle.ts` (default, required * for `deno compile` single-binary builds) * - 'disk': read on demand from `ts_web/` for the dev loop * Overridden at runtime by the `UI_ASSET_SOURCE` env var. */ assetSource: 'bundle' | 'disk'; } /** * Main ModelGrid configuration interface */ export interface IModelGridConfig { /** Configuration format version */ version: string; /** API server configuration */ api: IApiConfig; /** UI server configuration */ ui: IUiConfig; /** 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; }