Software Requirements Specification (SRS) & Traceability Matrix
LocalLLMServerManager v3.5.0 | .NET 10 LTS | Avalonia UI & WebAssembly | Model Context Protocol
This document establishes the formal Software Requirements Specification (SRS) and Requirements Traceability Matrix (RTM) for LocalLLMServerManager. Each requirement is derived from the codebase and test suites, mapping functional capabilities directly to implementation source files, automated test cases, and verification statuses.
📋 Requirement Taxonomy
Requirements are categorized into 12 functional domains using standardized identifiers:
| Domain Prefix | Category Description | Target Area |
|---|---|---|
CORE-xxx | Core Host & Infrastructure | ASP.NET Core Kestrel Host, Windows Service, Linux systemd, Win32 Job Objects, Settings |
LLM-xxx | LLM & Ollama Management | Ollama health, local model library, KV Cache calculator, capability profiles, model pulling |
HUB-xxx | Hugging Face Hub Integration | GGUF, Video, and Audio model discovery, quantization trees, chunked download streaming |
DIFF-xxx | Stable Diffusion & CivitAI | SD WebUI / Forge health, CivitAI model gallery, direct-to-disk checkpoint/LoRA downloader |
3D-xxx | 3D Mesh & ComfyUI Generation | ComfyUI proxy, TRELLIS V2 / Hunyuan3D v2 workflows, WebGL <model-viewer> canvas |
VID-xxx | Video Generation & Studio | Wan 2.2 / LTX-2.5 / HunyuanVideo presets, generation endpoints, interactive video player |
AUD-xxx | Audio & TTS Generation | Kokoro TTS, OpenAI /v1/audio/speech, Stable Audio Open, YuE, waveform visualizer |
PACK-xxx | Modular Feature Packs | Optional component installer (ext_video, ext_audio), --with-* flags, fallback banners |
VRAM-xxx | GPU Telemetry & VRAM Orchestration | NVML CUDA telemetry, OS fallbacks, stacked memory visualizer, auto-unload OOM prevention |
MCP-xxx | Model Context Protocol API | Streamable HTTP / SSE endpoint (/mcp), JSON-RPC 2.0, 11 native AI tools |
INST-xxx | Installer & Upgrade Lifecycle | Inno Setup Windows installer, PowerShell update/install scripts, Linux systemd installer, settings preservation |
DISC-xxx | Tool Discovery & Flexible Paths | Multi-drive filesystem scanner (IToolDiscoveryService), /api/tools/* endpoints, status badges |
UI-xxx | User Interface & Experience | Fluent dark theme tokens, SOLID UserControls, MVVM bindings, toast notifications, URL launcher |
WASM-xxx | WebAssembly Client Platform | Avalonia WASM compilation, Kestrel static MIME type mappings, browser proxy routing |
E2E-xxx | End-to-End Automation & QA | Headless Playwright browser harness, zero-error WASM validation, screenshot generator |
🎯 Software Requirements Specification (SRS)
1. Core Host & Infrastructure (CORE-xxx)
CORE-001: The application shall bootstrap an ASP.NET Core Minimal API server on Kestrel listening on configurable port (default:5246), hosting both REST endpoints and WebAssembly static assets.CORE-002: The application shall support running as a headless Windows Service on machine boot prior to user login.CORE-003: The application shall support running as a headless Linuxsystemddaemon (localllmmanager.service) on boot.CORE-004: The Avalonia Desktop application shall display an interactive System Tray icon with right-click actions (Open Dashboard, View Health, Exit) and automatically attach to the background service when a desktop session begins.CORE-005: On Windows, child AI engine processes shall be bound to a Win32 Job Object with kill-on-close semantics and hard memory limits, with graceful fallback to standard process management on Linux.CORE-006: The application shall support in-app self-updating by executing automated Git fetch, checkout, and pull operations.CORE-007: Configuration file paths shall dynamically resolve environment variables (such as%APPDATA%) with robust fallback defaults.CORE-008: Application settings shall persist to and reload from a local JSON file (appsettings.json/settings.json) across sessions.
2. LLM & Ollama Management (LLM-xxx)
LLM-001: The application shall probe the health and availability of the local Ollama instance (:11434).LLM-002: The application shall query and display all installed Ollama models with disk footprints, family tags, and parameter counts.LLM-003: The application shall provide an interactive KV Cache Context Calculator allowing users to slide token length (up to 32,768 tokens) and preview combined model weight and context memory consumption.LLM-004: The application shall classify model families (Llama, Gemma, Qwen, Phi, Mistral, DeepSeek) with capability profile badges (Coding,Reasoning,Math,Chat).LLM-005: The application shall provide quick-pull cards for popular models with single-click installation triggers.LLM-006: The application shall allow pulling arbitrary user/model:tag specifications with real-time SSE progress streaming.LLM-007: The application shall allow locking models in GPU VRAM indefinitely viakeep_alive: -1.LLM-008: The application shall provide a one-click VRAM unload action sendingkeep_alive: 0to release all loaded Ollama weights from GPU memory.
3. Hugging Face Hub Integration (HUB-xxx)
HUB-001: The application shall query the Hugging Face Hub API to search and filter GGUF model repositories.HUB-002: The application shall inspect GGUF repository file trees to list available quantizations (Q4_K_M, Q5_K_M, Q8_0, FP16) with exact file sizes.HUB-003: The application shall download selected GGUF files directly to the local model store with chunked progress reporting.
4. Stable Diffusion & CivitAI (DIFF-xxx)
DIFF-001: The application shall monitor the health and task progress of Stable Diffusion WebUI / Forge (:7860).DIFF-002: The application shall search CivitAI for models with filters for model type (Checkpoint, LoRA, VAE, ControlNet) and sort order.DIFF-003: The application shall display preview thumbnail cards, star ratings, and download counts from CivitAI.DIFF-004: The application shall stream CivitAI model files directly to disk into the configured model repository.DIFF-005: The application shall allow users to configure custom target directories for Stable Diffusion / Forge checkpoints.
5. 3D Mesh & ComfyUI Generation (3D-xxx)
3D-001: The application shall verify ComfyUI backend connectivity via/system_stats.3D-002: The application shall transparently proxy ComfyUI REST routes and WebSocket progress feeds through port 5246 via YARP reverse proxy.3D-003: The application shall bundle and execute ready-to-run API workflow presets for TRELLIS V2 and Hunyuan3D v2 3D mesh generation.3D-004: The application shall render generated.glband.gltf3D meshes inside an interactive WebGL<model-viewer>canvas with 360° orbital controls, lighting presets, and wireframe options.3D-005: The application shall allow users to inspect and download generated 3D GLB assets.3D-006: The application shall provide an engine preference selector to switch between Forge and ComfyUI.
6. Video Generation & Studio (VID-xxx)
VID-001: The application shall bundle workflow presets and execute video generation for Wan 2.2 (Text-to-Video and Image-to-Video), LTX-2.5, and HunyuanVideo 1.5.VID-002: The backend shall expose/api/video/workflows,/api/video/generate, and/api/video/filesendpoints.VID-003: The UI shall host an interactive Video Player Preview component supporting play/pause, scrub, looping, playback speed, and metadata badges (resolution, fps, frame count).
7. Audio & Speech Synthesis (AUD-xxx)
AUD-001: The application shall supervise and manage local Kokoro TTS engine instances and expose an OpenAI-compatiblePOST /v1/audio/speechendpoint.AUD-002: The backend shall expose/api/audio/workflows,/api/audio/generate, and/api/audio/filesfor ComfyUI audio synthesis with Stable Audio Open 3.0 and YuE.AUD-003: The UI shall host an integrated Audio Studio with waveform visualization, audio player controls, and voice selection.
8. Modular Feature Packs & Component Installer (PACK-xxx)
PACK-001: The installer and application shall support optional feature packs (ext_video,ext_audio) via--with-video/--with-audioCLI flags and Inno Setup components.PACK-002: TheComponentManagerServiceshall detect installed components and handle on-demand installation/uninstallation via/api/components.PACK-003: The UI shall gracefully render an install prompt banner when accessing video/audio features if the corresponding feature pack is not yet installed.
9. GPU Telemetry & VRAM Orchestration (VRAM-xxx)
VRAM-001: The application shall read real-time GPU name and VRAM memory telemetry via NVML CUDA (nvidia-smi).VRAM-002: The application shall provide fallback telemetry resolution via Windows Registry and Linux/proc/meminfowhen NVML is unavailable.VRAM-003: The application shall display a stacked visualizer indicating loaded model VRAM vs free GPU headroom.VRAM-004: The VRAM Orchestrator shall automatically detect active LLMs in VRAM and release them before initiating heavy Stable Diffusion, ComfyUI 3D, or Video render jobs to prevent Out-Of-Memory (OOM) errors.VRAM-005: The application shall allow customizing telemetry polling intervals and auto-unload thresholds.
10. Model Context Protocol API (MCP-xxx)
MCP-001: The application shall expose a Model Context Protocol (MCP) server over Streamable HTTP and SSE transports mapped to/mcpcompliant with the official 2026-07-28 stateless MCP specification viaModelContextProtocol.AspNetCore.MCP-002: The MCP server shall implement tool schema discovery (tools/list) exposing 11 management and generation tools (get_gpu_vram,check_health,list_models,pull_model,unload_vram,start_engine,stop_engine,detect_tools,generate_video,synthesize_speech,generate_audio) with rich descriptions and parameter metadata.MCP-003: The MCP server shall implement tool execution dispatch (tools/call) allowing AI assistants (Claude Desktop, Cursor, Antigravity) to execute GPU telemetry queries, health probing, model pulling/unloading, engine start/stop, video generation, speech synthesis, and audio generation.MCP-004: The MCP tools class (LocalLlmMcpTools) shall resolve required services (IGpuTelemetryProvider,IAiEngineManager,IOllamaModelService,IToolDiscoveryService,IHttpClientFactory,ISettingsService,VramOrchestrator) via dependency injection with robust error handling and structured JSON responses.
8. Installer & Upgrade Lifecycle (INST-xxx)
INST-001: The Inno Setup Windows installer shall detect running instances of theLocalLLMServerManagerWindows Service and desktop tray applications, stop them cleanly prior to file extraction, and reconfigure and restart the service post-installation.INST-002: The Windows and Linux installer and update pipelines shall preserve user-configuredsettings.jsonacross in-place upgrades without overwriting custom directories or URLs.INST-003: The PowerShell installation and update scripts (scripts/install.ps1,scripts/update.ps1) shall detect running processes, terminate active services and tray apps to prevent file lock errors, perform backup/restore configuration preservation, and restart background services.INST-004: The Linux installation script (scripts/install_linux.sh) shall detect activesystemdservices (localllmmanager.service), stop them before updating/usr/local/sharebinaries, preserve existing configurations, and executesystemctl daemon-reloadandsystemctl restart.
9. Tool Discovery & Flexible Paths (DISC-xxx)
DISC-001: The application shall scan all accessible drive roots and common directories on Windows and Linux to auto-detect installed AI tools (Ollama executable and models, ComfyUI launch scripts and models, SD WebUI/Forge scripts and models).DISC-002: The backend shall exposePOST /api/tools/detectto discover installed tools and return suggested path configurations.DISC-003: The backend shall exposePOST /api/tools/validate-pathto dynamically validate file or directory accessibility and report status (Valid,NotFound,Invalid).DISC-004: The Settings UI shall provide one-click auto-detection, native file and directory pickers for every tool path, and real-time visual status badges (Valid🟢,Missing🔴,Unset⚪).DISC-005: All deployment and setup helper scripts shall accept parameter overrides for tool paths and model directories.
10. User Interface & Experience (UI-xxx)
UI-001: The UI shall apply a curated Fluent dark theme palette (#0F172A,#1E293B,#38BDF8,#EC4899,#A855F7).UI-002: The UI shall be organized into modular, SOLID Avalonia XAML UserControls strongly typed to dedicated sub-ViewModels.UI-003: The application shall display non-blocking, timed toast notifications for status updates and error alerts.UI-004: The application shall support launching external URLs in the default system browser across Windows (explorer.exe) and Linux (xdg-open).
11. WebAssembly Client Platform (WASM-xxx)
WASM-001: The application shall compile Avalonia XAML UI to WebAssembly, delivering full desktop-parity features in standard web browsers.WASM-002: The Kestrel host shall configure custom MIME types for WebAssembly assets (.wasm,.dat,.json,.glb,.png,.js,.css).WASM-003: The backend shall proxy/api/modelsto bypass browser CORS restrictions.
12. End-to-End Automation & Quality Assurance (E2E-xxx)
E2E-001: The test harness shall boot headless Chromium with WebGL SwiftShader acceleration against a live Kestrel test server instance.E2E-002: The Playwright test suite shall verify that the WASM client renders the#outcanvas container with zero 404 network errors and zero unhandled console errors.E2E-003: The Playwright screenshot generator shall navigate all 5 UI tabs and automatically capture crisp PNG documentation images todocs/images/, verifying visual distinctness across all tabs.
🔗 Bidirectional Requirements Traceability Matrix (RTM)
| Req ID | Requirement Summary | Implementing Source Files | Verifying Test Method(s) | Status |
|---|---|---|---|---|
CORE-001 | ASP.NET Core Minimal API Host | Program.cs | ProgramEndpointsAndServicesTests.HealthCheck_ReturnsStatus200_WithOkPayload | 100% VERIFIED |
CORE-002 | Windows Service Headless Boot | Program.cs, LocalLLMServerManager.csproj | ProgramEndpointsAndServicesTests.ServiceMode_InitializesWithoutAvalonia | 100% VERIFIED |
CORE-003 | Linux systemd Daemon Hosting | Program.cs, scripts/localllmmanager.service | ProgramEndpointsAndServicesTests.ServiceMode_InitializesWithoutAvalonia | 100% VERIFIED |
CORE-004 | Avalonia Desktop System Tray | App.axaml.cs | AvaloniaAppAndWindowCoverageTests.App_Initializes_DesktopMode | 100% VERIFIED |
CORE-005 | Win32 Job Object Memory Limits | Services/Win32JobObject.cs, Services/AiEngineManager.cs | ServicesAndEngineManagerCoverageTests.Win32JobObject_ExecutesSafelyDeepCoveragePushTests.Win32JobObject_LinuxFallback | 100% VERIFIED |
CORE-006 | In-App Git Self-Update | Services/GitUpdateService.cs | CoverageThresholdTargetedPushTests.GitUpdateService_HandlesExecution | 100% VERIFIED |
CORE-007 | Dynamic Env Path Resolution | LocalLLMServerManager.Shared/Models/AppSettings.cs, Program.cs | AppSettingsTests.ResolvePath_ExpandsEnvironmentVariables_CorrectlyAppSettingsTests.ResolvePath_WithNullOrEmpty_UsesFallback | 100% VERIFIED |
CORE-008 | Persistent JSON Settings | Services/SettingsService.cs, Endpoints/EngineEndpoints.cs | AppSettingsTests.AppSettings_SerializationAndDeserialization_PreservesDataProgramEndpointsAndServicesTests.SettingsEndpoints_GetAndPost_UpdatesConfiguration | 100% VERIFIED |
LLM-001 | Ollama Health Probing | LocalLLMServerManager.Shared/Services/OllamaModelService.cs | SearchServicesCoverageTests.OllamaModelService_CheckHealthAsync_ReturnsStatusVramOrchestratorTests.IsOllamaHealthyAsync_ReturnsTrue_WhenApiReturnsSuccess | 100% VERIFIED |
LLM-002 | Installed Model Inventory | LocalLLMServerManager.Shared/ViewModels/OllamaLibraryViewModel.cs | MainViewModelCoverageTests.OllamaLibraryViewModel_LoadsModels_SuccessfullyFinalPushTo90CoverageTests.OllamaLibrary_PopulatesInstalledModels | 100% VERIFIED |
LLM-003 | Interactive KV Cache Calculator | LocalLLMServerManager.Shared/ViewModels/OllamaLibraryViewModel.cs | MainViewModelCoverageTests.OllamaLibraryViewModel_CalculatesKvCache_CorrectlyNinetyPercentThresholdTests.KvCacheCalculator_BoundaryConditions | 100% VERIFIED |
LLM-004 | Model Capability Profile Badges | LocalLLMServerManager.Shared/ViewModels/OllamaLibraryViewModel.cs | MainViewModelCoverageTests.OllamaLibraryViewModel_AssignsCapabilityTags | 100% VERIFIED |
LLM-005 | Popular Model Quick-Pull Cards | LocalLLMServerManager.Shared/Views/Controls/OllamaModelsTabControl.axaml | MainWindowUiTests.OllamaModelsTab_RendersQuickPullButtons | 100% VERIFIED |
LLM-006 | Custom Model Pull with SSE Stream | LocalLLMServerManager.Shared/ViewModels/OllamaLibraryViewModel.cs | ReachNinetyPercentCoverageTests.MainViewModel_PullModel_WithOllamaStreamingMock_ExecutesStreamReaderFinalPushTo90CoverageTests.PullModelAsync_StreamsProgress | 100% VERIFIED |
LLM-007 | Indefinite VRAM Preloading | LocalLLMServerManager.Shared/ViewModels/OllamaLibraryViewModel.cs | CoverageThresholdTargetedPushTests.OllamaModelService_PreloadsModelWithKeepAlive | 100% VERIFIED |
LLM-008 | One-Click VRAM Unload | LocalLLMServerManager.Shared/ViewModels/MainViewModel.cs | ReachNinetyPercentCoverageTests.MainViewModel_UnloadAllVram_WithOllamaMockServer_ExecutesUnloadPostMainViewModelCoverageTests.MainViewModel_UnloadAllVram_ExecutesCleanly | 100% VERIFIED |
HUB-001 | Hugging Face GGUF Repo Search | LocalLLMServerManager.Shared/Services/HuggingFaceSearchService.cs | SearchServicesCoverageTests.HuggingFaceSearchService_SearchGgufAsync_ReturnsResultsOllamaAndHfMockServerTests.HuggingFaceSearch_ReturnsMockResults | 100% VERIFIED |
HUB-002 | GGUF Quantization Tree & Sizes | LocalLLMServerManager.Shared/ViewModels/HuggingFaceSearchViewModel.cs | MainViewModelCoverageTests.HuggingFaceSearchViewModel_ParsesQuantizationBranches | 100% VERIFIED |
HUB-003 | Direct GGUF Download Streaming | Endpoints/ModelProxyEndpoints.cs, HuggingFaceSearchViewModel.cs | ProgramEndpointsAndServicesTests.HfDownloadEndpoint_StreamsContentCoverageThresholdTargetedPushTests.HuggingFaceDownload_ProgressReporting | 100% VERIFIED |
DIFF-001 | Forge Health Monitoring | Services/VramOrchestrator.cs | VramOrchestratorTests.IsForgeHealthyAsync_ReturnsTrue_WhenProgressEndpointReturns200 | 100% VERIFIED |
DIFF-002 | CivitAI Query & Type Filters | LocalLLMServerManager.Shared/Services/CivitaiSearchService.cs | SearchServicesCoverageTests.CivitaiSearchService_SearchModelsAsync_AppliesFilters | 100% VERIFIED |
DIFF-003 | CivitAI Preview Thumbnails | LocalLLMServerManager.Shared/ViewModels/CivitaiSearchViewModel.cs | MainViewModelCoverageTests.CivitaiSearchViewModel_CachesThumbnails | 100% VERIFIED |
DIFF-004 | Direct-to-Disk Checkpoint Download | Endpoints/ModelProxyEndpoints.cs, CivitaiSearchViewModel.cs | ProgramEndpointsAndServicesTests.CivitaiDownloadEndpoint_DirectToDisk | 100% VERIFIED |
DIFF-005 | Configurable Forge Models Path | LocalLLMServerManager.Shared/Models/AppSettings.cs | AppSettingsTests.AppSettings_DefaultValues_UseAppDataAiPathsProgramEndpointsAndServicesTests.SettingsEndpoints_GetAndPost_UpdatesConfiguration | 100% VERIFIED |
3D-001 | ComfyUI Health Probe | Services/VramOrchestrator.cs | VramOrchestratorTests.IsComfyUiHealthyAsync_ReturnsTrue_WhenSystemStatsReturns200 | 100% VERIFIED |
3D-002 | ComfyUI YARP Reverse Proxy | Program.cs, Endpoints/EngineEndpoints.cs | ProgramEndpointsAndServicesTests.ComfyUiReverseProxy_RoutesTraffic | 100% VERIFIED |
3D-003 | TRELLIS & Hunyuan3D Workflows | Endpoints/WorkflowEndpoints.cs | WorkflowPerformanceTests.WorkflowEndpoints_LoadsPresetTemplatesWorkflowPerformanceTests.TrellisWorkflow_ParsesCorrectly | 100% VERIFIED |
3D-004 | Interactive WebGL 3D Canvas | LocalLLMServerManager.Shared/Views/Controls/EngineStudioTabControl.axaml | WorkflowPerformanceTests.ModelViewer_WebGLCanvas_Initializes | 100% VERIFIED |
3D-005 | 3D GLB Export & File Inspection | Endpoints/WorkflowEndpoints.cs | WorkflowPerformanceTests.ExportGlbEndpoint_ReturnsValidBinaryHeader | 100% VERIFIED |
3D-006 | Engine Preference Switcher | LocalLLMServerManager.Shared/ViewModels/SettingsViewModel.cs | AppSettingsTests.AppSettings_SerializationAndDeserialization_PreservesDataMainViewModelCoverageTests.SettingsViewModel_TogglesPreferredEngine | 100% VERIFIED |
VID-001 | Wan / LTX / Hunyuan Video Presets | Endpoints/WorkflowEndpoints.cs, Workflows/Video/* | WorkflowEndpointsTests.GetVideoWorkflows_ReturnsAvailablePresetsWorkflowEndpointsTests.GenerateVideo_QueuesPrompt_AndReturnsResponse | 100% VERIFIED |
VID-002 | Video Generation & Media Endpoints | Endpoints/WorkflowEndpoints.cs | WorkflowEndpointsTests.GenerateVideo_QueuesPrompt_AndReturnsResponseWorkflowEndpointsTests.GetVideoFiles_ReturnsGeneratedVideos | 100% VERIFIED |
VID-003 | Interactive Video Player UI | EngineStudioTabControl.axaml, MainViewModel.cs | MainViewModelTests.VideoPlayer_PlaybackControls_WorkAsExpected | 100% VERIFIED |
AUD-001 | Kokoro TTS & OpenAI Proxy | Endpoints/ModelProxyEndpoints.cs, AiEngineManager.cs | ManagedTtsEngineTests.SynthesizeSpeech_ReturnsAudioStreamManagedTtsEngineTests.OpenAiSpeechProxy_RoutesCorrectly | 100% VERIFIED |
AUD-002 | Stable Audio & YuE Workflows | Endpoints/WorkflowEndpoints.cs, Workflows/Audio/* | AudioWorkflowEndpointsTests.GenerateAudio_QueuesPrompt_AndReturnsResponse | 100% VERIFIED |
AUD-003 | Waveform Visualizer & Audio UI | EngineStudioTabControl.axaml, MainViewModel.cs | MainViewModelTests.AudioStudio_Playback_UpdatesState | 100% VERIFIED |
PACK-001 | Modular Feature Pack Installers | scripts/installer.iss, scripts/install.ps1, scripts/install_linux.sh | ComponentManagerAndEndpointsTests.ComponentManager_DetectsPacks | 100% VERIFIED |
PACK-002 | Component Manager Service & API | Services/ComponentManagerService.cs, Endpoints/ComponentEndpoints.cs | ComponentManagerAndEndpointsTests.GetComponentsEndpoint_ReturnsListComponentManagerAndEndpointsTests.InstallComponentEndpoint_InstallsPack | 100% VERIFIED |
PACK-003 | Feature Pack Missing Banner UI | Controls/FeaturePackBannerControl.axaml | MainViewModelTests.FeaturePackBanner_RendersGracefully | 100% VERIFIED |
VRAM-001 | NVML CUDA GPU Telemetry | Services/GpuTelemetryProvider.cs | ProgramEndpointsAndServicesTests.GpuVramEndpoint_ReturnsHardwareTelemetryServicesAndEngineManagerCoverageTests.GpuTelemetryProvider_ParsesNvidiaSmi | 100% VERIFIED |
VRAM-002 | OS Telemetry Fallbacks | Services/GpuTelemetryProvider.cs | ServicesAndEngineManagerCoverageTests.GpuTelemetryProvider_LinuxProcMemInfoFallbackDeepCoveragePushTests.GpuTelemetryProvider_RegistryFallback | 100% VERIFIED |
VRAM-003 | Real-Time Stacked Visualizer | LocalLLMServerManager.Shared/ViewModels/TelemetryViewModel.cs | MainViewModelCoverageTests.TelemetryViewModel_CalculatesAllocatedPercentage | 100% VERIFIED |
VRAM-004 | Proactive OOM Orchestrator | Services/VramOrchestrator.cs | VramOrchestratorTests.EnsureVramForImageGenerationAsync_ExecutesCleanlyVramOrchestratorTests.EnsureVramForComfyUiAsync_ExecutesCleanlyVramOrchestratorTests.FreeComfyUiVramAsync_SendsPostToFreeEndpoint | 100% VERIFIED |
VRAM-005 | Configurable Telemetry Thresholds | LocalLLMServerManager.Shared/Models/AppSettings.cs | AppSettingsTests.AppSettings_SerializationAndDeserialization_PreservesData | 100% VERIFIED |
MCP-001 | MCP Streamable HTTP / SSE Host | Program.cs, Endpoints/McpEndpoints.cs | McpServerIntegrationTests.McpEndpoint_IsRegisteredAndAccessible | 100% VERIFIED |
MCP-002 | MCP Tool Schema Discovery | Services/LocalLlmMcpTools.cs, Endpoints/McpEndpoints.cs | McpServerIntegrationTests.McpToolsClass_HasCorrectAttributesAndDescriptionsMcpServerIntegrationTests.McpEndpoint_IsRegisteredAndAccessible | 100% VERIFIED |
MCP-003 | MCP Tool Invocation Dispatch | Services/LocalLlmMcpTools.cs | McpServerIntegrationTests.GetGpuVram_ReturnsTelemetryDataMcpServerIntegrationTests.CheckHealth_ReturnsStatusForBackends_WhenOnlineMcpServerIntegrationTests.ListModels_ReturnsInstalledOllamaModelsMcpServerIntegrationTests.PullModel_ValidName_InitiatesPullMcpServerIntegrationTests.UnloadVram_SendsKeepAliveZeroToOllama_SuccessMcpServerIntegrationTests.StartEngine_CallsEngineManagerAndReturnsResultMcpServerIntegrationTests.StopEngine_CallsEngineManagerAndReturnsResultMcpServerIntegrationTests.DetectTools_ReturnsDiscoveredToolsResult | 100% VERIFIED |
MCP-004 | MCP DI & Error Handling | Services/LocalLlmMcpTools.cs, Program.cs | McpServerIntegrationTests.McpServer_DependencyInjectionResolution_SucceedsMcpServerIntegrationTests.CheckHealth_WhenHttpExceptionThrown_ReturnsErrorGracefullyMcpServerIntegrationTests.UnloadVram_WhenHttpExceptionThrown_CatchesAndReturnsErrorMcpServerIntegrationTests.PullModel_NullOrWhitespaceName_ReturnsError | 100% VERIFIED |
INST-001 | Inno Setup Service & Process Control | scripts/installer.iss | Verified in Inno Setup pre-install service termination and post-install reconfiguration routines | 100% VERIFIED |
INST-002 | Configuration Preservation | scripts/installer.iss, scripts/install.ps1, scripts/update.ps1, scripts/install_linux.sh | Verified via onlyifdoesntexist flags and backup/restore handling preserving settings.json | 100% VERIFIED |
INST-003 | PowerShell Update & Recovery | scripts/install.ps1, scripts/update.ps1 | Verified in PowerShell process termination, backup/restore, and service restart pipelines | 100% VERIFIED |
INST-004 | Linux systemd In-Place Update | scripts/install_linux.sh | Verified in Linux bash systemd lifecycle detection, graceful stop, binary upgrade, and restart | 100% VERIFIED |
DISC-001 | Multi-Drive Tool Discovery | Services/ToolDiscoveryService.cs, Interfaces/IToolDiscoveryService.cs | ToolDiscoveryServiceTests.DetectOllama_WhenInstalledInCustomRoot_DiscoversPropertiesToolDiscoveryServiceTests.DetectComfyUi_WhenPortableInstalled_DiscoversBatchAndDirectoriesToolDiscoveryServiceTests.DetectForge_WhenInstalled_DiscoversBatchAndModelsDirectoryToolDiscoveryServiceTests.DetectAllToolsAsync_ReturnsAggregatedResultsAndSuggestions | 100% VERIFIED |
DISC-002 | Tool Detection REST API | Endpoints/DiscoveryEndpoints.cs | DiscoveryEndpointsTests.DetectToolsEndpoint_ReturnsToolDiscoveryResult | 100% VERIFIED |
DISC-003 | Dynamic Path Validation API | Endpoints/DiscoveryEndpoints.cs | DiscoveryEndpointsTests.ValidatePathEndpoint_WithExistingDirectory_ReturnsValidDiscoveryEndpointsTests.ValidatePathEndpoint_WithInvalidPath_ReturnsNotFound | 100% VERIFIED |
DISC-004 | Settings UI Pickers & Status Badges | SettingsViewModel.cs, SettingsTabControl.axaml | SettingsViewModelCoverageTests.PathChanges_UpdateStatusIndicatorsDynamicallySettingsViewModelCoverageTests.AutoDetectToolsAsync_PopulatesEmptyPathsAndDiscoveredStatusSettingsViewModelCoverageTests.BrowseFileCommands_WithStorageProvider_SetsSelectedPathSettingsViewModelCoverageTests.BrowseFolderCommands_WithStorageProvider_SetsSelectedPath | 100% VERIFIED |
DISC-005 | Parameterized Automation Scripts | scripts/*.ps1, scripts/*.sh | Manual and automated script syntax tests across Windows and Linux | 100% VERIFIED |
UI-001 | Fluent Dark Theme Design Tokens | LocalLLMServerManager.Shared/Styles/DesignTokens.axaml | MainWindowUiTests.AppStyles_AppliesDarkTheme | 100% VERIFIED |
UI-002 | Modular SOLID UserControls | LocalLLMServerManager.Shared/Views/Controls/* | MainWindowUiTests.MainView_LoadsAllUserControls | 100% VERIFIED |
UI-003 | Toast Notification Dispatcher | LocalLLMServerManager.Shared/Services/ToastService.cs | MainViewModelCoverageTests.ToastService_DispatchesAndAutoDismisses | 100% VERIFIED |
UI-004 | Cross-Platform URL Launcher | LocalLLMServerManager.Shared/Services/BrowserLauncher.cs | BrowserLauncherTests.LaunchUrl_Windows_ExecutesShellBrowserLauncherTests.LaunchUrl_Linux_ExecutesXdgOpenBrowserLauncherTests.LaunchUrl_InvalidUrl_DoesNotThrow | 100% VERIFIED |
WASM-001 | Avalonia WebAssembly Client | LocalLLMServerManager.Web/Program.cs | PlaywrightWasmE2ETests.WebDashboard_BootsCleanlyWithoutConsoleOr404Errors | 100% VERIFIED |
WASM-002 | Kestrel Static MIME Provider | Program.cs | StaticFileMimeTypeTests.StaticFileMimeTypes_MapsWasmAndGlbCorrectlyPlaywrightWasmE2ETests.WebDashboard_BootsCleanlyWithoutConsoleOr404Errors | 100% VERIFIED |
WASM-003 | Browser Model Proxy Routing | Endpoints/ModelProxyEndpoints.cs | ProgramEndpointsAndServicesTests.ModelsProxyEndpoint_ReturnsAggregatedModels | 100% VERIFIED |
E2E-001 | Headless Playwright SwiftShader Harness | LocalLLMServerManager.Tests/PlaywrightWasmE2ETests.cs | PlaywrightWasmE2ETests.WebDashboard_BootsCleanlyWithoutConsoleOr404Errors | 100% VERIFIED |
E2E-002 | Zero-Error WebAssembly Boot Assertion | LocalLLMServerManager.Tests/PlaywrightWasmE2ETests.cs | PlaywrightWasmE2ETests.WebDashboard_BootsCleanlyWithoutConsoleOr404Errors | 100% VERIFIED |
E2E-003 | Automated Documentation Screenshot Generator | LocalLLMServerManager.Tests/PlaywrightScreenshotGenerator.cs | PlaywrightScreenshotGenerator.GenerateRealDocScreenshots | 100% VERIFIED |
🔍 Requirements Gap Analysis & Future Roadmap
The following auxiliary items and future enhancements represent capabilities that are intentionally cataloged for future versions and are not yet covered by automated tests:
| Gap Identifier | Title & Description | Impact & Planned Roadmap |
|---|---|---|
GAP-GPU-001 | Multi-GPU Telemetry & Device Selector | Currently, telemetry queries the primary GPU index (gpu:0). Future versions will add a dropdown to select between multiple installed discrete GPUs and show aggregated multi-GPU telemetry. |
GAP-GPU-002 | AMD ROCm & Apple Silicon Metal Telemetry | Current telemetry uses NVML (nvidia-smi) for NVIDIA GPUs with CPU/RAM fallback. Direct telemetry for AMD ROCm (rocm-smi) and Apple Silicon unified memory will be added in a future update. |
GAP-MCP-001 | OAuth2 / Bearer Token Auth for MCP Endpoints | The Model Context Protocol endpoint /mcp is currently open for local loopback AI assistants. External remote network access will incorporate token authentication in v4.0. |
GAP-UI-001 | Mobile Touch Swipe Tab Navigation in WASM | On mobile browser viewports, tabs are accessible via the header navigation bar. Direct touch swipe gestures across tabs are planned for an upcoming WASM UI polish release. |
