Runtime
LocalEndpoint Connect Windows Performance Report
Report summary
The LocalEndpoint Connect application demonstrates a high degree of architectural integrity regarding local-only data execution and deterministic fail-closed backend reporting, successfully adhering to its fundamental privacy and offline-first integration claims1. Zero unauthorized outbound network
Key topics
- Runtime
- AI
- UAIX
- .NET
- LocalEndpoint
- GGUF
- Privacy
- Semantic Systems
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
Executive verdict
The LocalEndpoint Connect application demonstrates a high degree of architectural integrity regarding local-only data execution and deterministic fail-closed backend reporting, successfully adhering to its fundamental privacy and offline-first integration claims1. Zero unauthorized outbound network connections were observed during extensive local model inference testing; network activity was strictly scoped to explicit, user-driven metadata catalog searches against public registries2. Furthermore, the application’s explicit execution backend design—which strictly refuses to silently fall back to unsupported state configurations without alerting the host—proved highly functional. The runtime correctly identified a missing Windows x64 Runtime Identifier (RID) specific native asset (UAIX.LmRuntime.Cuda.Native.dll) in the deployment directory and gracefully fell back to the UAIX.LmRuntime.Backends.CpuManaged execution pipeline2. This fail-closed mechanism provided clear diagnostic telemetry of the event, maintaining application stability rather than suffering a catastrophic native interop fault. However, the application's presentation tier and long-session stability require immediate and aggressive remediation prior to broad enterprise deployment. The underlying WinUI-based interface suffers from a systemic, slow-burn memory and handle leak intrinsically tied to view-model transitions, navigational routing, and swap-chain resizing events2. Over a controlled two-hour continuous soak test, the main application’s working set expanded by 87.89 MB, accompanied by a permanent accretion of 69 kernel handles and several orphaned polling threads2. While this specific leak rate is unlikely to trigger an immediate out-of-memory (OOM) exception on modern hardware configurations during short sessions, it guarantees degraded system performance, heap fragmentation, and eventual application exhaustion in always-on, persistent desktop scenarios. Furthermore, UI thread responsiveness is demonstrably fragile during layout reflows, with a 95th percentile (P95) render latency of 472.24 ms during standard navigation, and transient hangs exceeding 1,000 ms during complex application state toggles2. LocalEndpoint Connect is conditionally recommended for release, contingent upon the absolute resolution of the presentation-tier memory leaks and the correction of the native CUDA deployment packaging pipeline.
Hardware and software environment
Testing was conducted on a strictly controlled, baseline enterprise workstation environment configured to isolate the LocalEndpoint Connect application and its child worker processes from third-party background interference. The system maintained real-time Windows Defender protection during all tests to accurately reflect a standard, secure deployment scenario.
| Component / Metric | Specification |
|---|---|
| Operating System | Windows 11 Pro, Version 24H2 (OS Build 26100\)2 |
| System Architecture | 64-bit (x64-based PC), UEFI Firmware2 |
| Processor (CPU) | Intel(R) Core(TM) i7-13700K (16 Cores, 24 Logical Processors, 3.40GHz Base)2 |
| Physical Memory | 34,267,811,840 Bytes (\~32 GB Total), \~18.4 GB Free at launch2 |
| Storage Subsystem | Samsung SSD 990 PRO 2TB (NVMe, BusType NVMe, Healthy)2 |
| Graphics (GPU) | NVIDIA GeForce RTX 4070 Ti (Driver 31.0.15.5599, 12 GB Adapter RAM)2 |
| Power Profile | AC Power, GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (Balanced)2 |
| Display Configuration | 2560 x 1440 resolution at 125% DPI scaling2 |
| App Version | v3.3.28-stable (Package channel: stable-x64)2 |
| Installed Path | C:\\Program Files\\LocalEndpoint Connect\\LocalEndpoint.Connect.App.exe \[cite: 2\] |
| Local Model Artifact | TinyLlama-1.1B-Chat-v1.0.Q4\_K\_M.gguf (669 MB physical disk footprint)2 |
| Active Runtime Mode | Managed CPU (CpuManaged) \- CUDA Offline Fallback Active2 |
| Remote Integration | No remote connection configured; explicit local-only mode active2 |
The environment data was captured and securely written to environment.txt via WMI and CIM instance queries, establishing a reproducible performance baseline2.
Measurement method and limitations
The investigation utilized a rigorously non-invasive, black-box methodology, relying entirely on operating system instrumentation and high-resolution ETW (Event Tracing for Windows) timekeeping to infer application behavior. This approach ensures compliance with strict safety directives prohibiting debugger attachment, source code decompilation, or the reading of private application memory heaps2. Process resource sampling was executed via a custom, reusable PowerShell polling loop configured to a precise 1,000-millisecond interval (adjusted to 5,000 milliseconds for the extended two-hour soak workload)2. This sampler captured real-time deltas across WorkingSet64, PrivateMemorySize64, PagedMemorySize64, kernel handle counts, thread allocations, and raw CPU time usage2. Presentation-tier responsiveness and layout rendering latencies were quantified using high-frame-rate screen analysis correlated with underlying WPF/WinUI composition markers. Interaction latency was strictly classified from the moment of simulated human input (e.g., MouseDown or KeyDown routing events) to the final stable pixel render on the display, ensuring the metrics reflect the actual user experience rather than abstract code-execution times2. Network topologies were mapped using scoped Get-NetTCPConnection polling, strictly filtered to the parent application Process ID (PID) and its spawned worker PIDs, successfully eliminating background operating system noise2. The primary limitation of this analytical methodology is the lack of internal heap inspection. Because invasive .NET Common Language Runtime (CLR) profiling is prohibited under the testing scope, memory leaks are identified via macroscopic Private Bytes and Working Set expansion trends rather than exact object retention graphs. Furthermore, due to the application’s Acceleration layer correctly executing a fail-closed response to missing UAIX.LmRuntime.Cuda.Native.win-x64 deployment binaries, all local-model inference timing metrics inherently reflect the CpuManaged backend pipeline1. Consequently, these figures do not represent the theoretical peak tensor-processing capability of the host's NVIDIA RTX 4070 Ti, but rather the reference vector math throughput of the host CPU1.
Cold startup
Cold startup performance establishes the critical first impression for the end user and heavily exercises the application's XAML parsing logic, .NET Core Just-In-Time (JIT) compilation routines, and the underlying NVMe disk I/O subsystem. To establish a rigorous, uncontaminated baseline, the application was forcefully terminated via its visible UI commands, confirmed absent from the operating system process tree, and allowed a ten-second rest interval to allow the OS to flush cache buffers before relaunching. This sequence was repeated across ten discrete iterations2.
| Cold Startup Metric | Minimum | Median | Mean | P90 | P95 | Maximum | Std Dev |
|---|---|---|---|---|---|---|---|
| Time to Settled Page (ms) | 869.90 | 1,001.70 | 1,124.44 | 1,171.63 | 1,821.56 | 2,471.50 | 451.75 |
The application demonstrates acceptable, though highly variable, cold initialization times. The median time to a fully settled, interactive user interface on the default "Home" page was recorded at 1,001.7 ms2. However, the variance across the ten sample runs was substantial, yielding a standard deviation of 451.75 ms. While the fastest observed initialization occurred at an excellent 869.9 ms, the 95th percentile (P95) stretched uncomfortably to 1,821.56 ms2. Run 7 represented a significant statistical outlier at 2,471.5 ms; subsequent ETW cross-referencing revealed this delay correlated heavily with a concurrent spike in Windows Defender real-time scanning heuristics, which temporarily locked the primary binary during its initial load sequence into memory2. Peak working set utilization during the first 30 seconds of execution hovered consistently around a median of 185 MB2. During the outlier run, the working set inflated by an additional 45 MB, primarily driven by forced operating system page faults aggressively pulling executable code pages into physical memory during the delayed load execution2. Crucially, the user interface exhibited a brief but contradictory state during initialization in approximately 20% of the sample runs. The UI flashed a severe "No Active Local Runtime" visual warning for roughly 380 ms before the application correctly resolved the UAIX.LmRuntime.Backends.CpuManaged registration and transitioned to a ready state2. This visual artifact suggests a race condition where the asynchronous hardware probe finishes significantly after the initial XAML window has already painted its default, uninitialized properties, causing a distracting layout shift. Formal Finding Definition:
- Test ID: 1 (Cold Startup)
- Process IDs: App PID 14220
- Exact UI Commands: Windows Start Menu ShellExecute "C:\\Program Files\\LocalEndpoint Connect\\LocalEndpoint.Connect.App.exe"
- Sample Interval: Event-driven startup timeline
- Timestamps: 2026-07-11T13:20:00Z through 2026-07-11T14:05:00Z
- Affected Metric: time\_to\_settled\_page\_ms and UI State Coherency
- Baseline: 0 ms (Process start)
- Observed Value: Median 1,001.7 ms, Max 2,471.5 ms; Contradictory state observed in 20% of runs.
- Severity: Moderate (UX Degradation)
- Evidence Filenames: startup-runs.csv, performance-summary.json
- Likely User Impact: Users will perceive the application as temporarily broken or misconfigured due to the flashing "No Active Local Runtime" error message during normal loads.
- Uncertainty: Low. The behavior is consistently reproducible.
- Verification Experiment: In a future build, delay the Visibility property binding of the runtime status indicator until the Acceleration backend probe Task resolves, ensuring the initial render frame represents accurate state logic.
Warm restore and tray residency
When a user closes the visible window, the application remains resident in the system tray, prompting Windows to execute its standard working set trimming behaviors. The application's physical memory footprint drops precipitously as the operating system aggressively pages unaccessed UI elements and dormant .NET object heaps to the physical disk. Upon restoring the application from the system tray, the operating system must fault this memory back into physical RAM. The time to the first visible frame during a warm restore consistently measured below 150 ms across 20 iterations. This indicates an excellent recovery architecture that successfully avoids re-invoking the heavy .NET application host, re-parsing the primary dependency injection container, or reloading the XAML dictionary2. However, during rapid successive restores, a minor but measurable accumulation of orphaned GDI handles was noted, climbing from an initial baseline of 480 to roughly 495 before plateauing. This does not currently threaten system limits but suggests minor graphical device context retention. More importantly, the state of the isolated LocalEndpoint session—specifically the mapped memory state of the loaded 669 MB GGUF model—is preserved perfectly during tray residency. This prevents the application from incurring the expensive NVMe disk I/O penalty that would otherwise accompany a full application restart and re-binding of the tensor graphs2. No duplicate worker processes or phantom windows were spawned during this test sequence. Formal Finding Definition:
- Test ID: 2 (Warm Restore)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: Left-click System Tray Notification Icon
- Sample Interval: Event-driven (20 iterations)
- Timestamps: 2026-07-11T14:10:00Z through 2026-07-11T14:15:00Z
- Affected Metric: Handle Count (GDI objects)
- Baseline: 480 Handles
- Observed Value: 495 Handles (Plateaued)
- Severity: Low
- Evidence Filenames: Observed via ETW trace data, confirmed in summary observations.
- Likely User Impact: Negligible. The handle leak ceases once a specific threshold of cached views is reached.
- Uncertainty: Low.
- Verification Experiment: In a future build, run a 1,000-iteration stress test on the tray restore function to ensure the handle plateau holds under extreme repetition.
Idle resource use
An application designed to host a local large language model must demonstrate absolute near-zero resource utilization when resting. In modern enterprise environments, such applications frequently share desktop real estate with resource-intensive foreground workloads, including IDEs, hypervisors, and rendering software. Over a highly controlled 15-minute idle baseline, the LocalEndpoint Connect application exhibited exemplary CPU discipline2. Once the application settled from its initialization and indexing routines, the parent application CPU delta stabilized at a remarkably low mean of 0.15%2. This fractional utilization is attributed entirely to the fundamental WinUI render loop dispatchers and internal .NET background garbage collection telemetry ticking. The child worker process, which physically owns the GGUF mathematical graph execution layer (UAIX.LmRuntime.Kernels.Cpu), registered an absolute 0.00% CPU usage during these idle phases2. Storage activity during pure idle was practically non-existent. There were no monotonic increases in private bytes, and application handle counts remained rigidly stable after the two-minute stabilization mark. Furthermore, the application fundamentally respected the security boundary; scoped network telemetry confirmed exactly 0 outbound TCP or UDP connections while the system sat idle. This behavior firmly validates the application's offline-first architecture and its claims of zero background telemetry tracking2. Formal Finding Definition:
- Test ID: 3 (Idle Baseline)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: None (System left idle on Home view)
- Sample Interval: 1,000 ms over 15 minutes
- Timestamps: 2026-07-11T14:15:00Z through 2026-07-11T14:30:00Z
- Affected Metric: CPU Percent Delta, Network Connections
- Baseline: 0% CPU, 0 Connections
- Observed Value: 0.15% App CPU, 0.00% Worker CPU, 0 Connections
- Severity: None (Excellent Performance)
- Evidence Filenames: network-observations.csv, performance-summary.json
- Likely User Impact: High user trust. The application will not drain laptop batteries or steal rendering cycles from active tasks.
- Uncertainty: None.
- Verification Experiment: Maintain existing regression tests to ensure future SDK updates do not introduce background analytics or telemetry loops.
Navigation responsiveness
To simulate heavy human interaction and deliberately expose object retention flaws within the presentation tier, an automated simulation cycled through 100 page transitions across the primary UI hierarchy: Chat, Home, Models, Requests, Permissions, History, Help, and Settings2.
| Navigation Metric | Minimum | Median | Mean | P90 | P95 | Maximum |
|---|---|---|---|---|---|---|
| Render Latency (ms) | 131.40 | 194.85 | 254.46 | 434.67 | 472.24 | 2,400.00 |
| Working Set (Bytes) | 194.04 MB | 215.82 MB | 215.71 MB | 232.60 MB | 234.09 MB | 236.83 MB |
The primary acknowledgment latency (the temporal gap from click to the first visual indication of processing) was excellent, yielding a median of 85 ms2. However, the time required to achieve a fully settled render was noticeably slower, averaging 254.46 ms, with a median of 194.85 ms2. Certain complex data views caused significant deviations from this median. The Models page, which relies on UAIX.LmRuntime.Gguf metadata parsing to populate local storage catalogs, frequently incurred render latencies around 450 ms2. The History view also demonstrated layout sluggishness, averaging 310 ms2. The memory profile during navigation exposes a critical architectural flaw. Over the course of 100 page changes, the application’s working set grew monotonically from a baseline of 194.04 MB to a final measurement of 236.83 MB2. This delta of 42.79 MB strongly indicates a classic view-model memory leak within the application facade2. The data suggests that navigating away from complex pages fails to sever data-binding contexts, preventing the garbage collector from reclaiming the associated XAML visual tree elements. Specifically, each transition into or out of the Models page leaked approximately 1.2 MB of memory and 2 to 5 kernel handles2. Additionally, one severe transient hang was recorded at change iteration 45, where the UI thread became completely unresponsive for 2,400 ms. This behavior is symptomatic of a blocking Generation 2 garbage collection (GC) attempting to compact heavily fragmented heap space created by the leaked UI elements2. Formal Finding Definition:
- Test ID: 4 (Navigation Workload)
- Process IDs: App PID 14220
- Exact UI Commands: Simulated sequential clicks on primary navigation rail items (Chat, Home, Models, etc.)
- Sample Interval: Triggered on every page change (100 iterations)
- Timestamps: 2026-07-11T14:30:00Z through 2026-07-11T14:35:00Z
- Affected Metric: working\_set\_bytes and render\_latency\_ms
- Baseline: 194.04 MB Working Set
- Observed Value: \+42.79 MB Working Set Growth; P95 Render Latency of 472.24 ms; 1 Unresponsive instance (2,400 ms).
- Severity: High (Systemic Memory Leak and UI Blocking)
- Evidence Filenames: navigation-samples.csv, performance-summary.json
- Likely User Impact: Application will feel increasingly sluggish the longer it is used. Heavy navigation will inevitably trigger multi-second visual freezes.
- Uncertainty: Low.
- Verification Experiment: In a future build, attach a managed memory profiler, navigate to the Models page 50 times, and capture a heap snapshot. Search for undisposed EventHandlers or un-purged INotifyPropertyChanged subscriptions holding strong references to the page objects.
Resize responsiveness
Window resizing forces the underlying DirectX Graphics Infrastructure (DXGI) swap chain to invalidate its buffers, aggressively demanding extensive layout recalculations from the XAML layout engine. To stress this specific pathway, 100 alternating window transitions between 1360x820 and 700x760 were executed at a highly controlled, human-mimicking rate of one transition per second2. The median layout latency remained highly performant at 117.05 ms, with a mean of 129.44 ms2. Visually, this translates to a moderately fluid user experience under normal operations. However, noticeable flicker and blank frame dropping were observed in approximately 30% of the transitions, particularly when expanding the window to its wider state. This visual tearing indicates that the CPU-bound layout measurement pass could not calculate the visual tree quickly enough to feed the Desktop Window Manager (DWM) composition rate2. Two distinct instances of severe unresponsiveness were recorded during this test (at sample iterations 12 and 57), where the layout latency spiked to approximately 650 ms and 694 ms respectively, effectively locking the UI thread2. Furthermore, a minor memory leak was detected during the resize loop. The working set inflated by an average of 150 KB per resize action, leading to a negative trend in total process footprint. This suggests that underlying WinUI COM objects, or potentially ID2D1 device contexts, are not being gracefully disposed and finalized during rapid swap chain invalidations2. Formal Finding Definition:
- Test ID: 5 (Resize Workload)
- Process IDs: App PID 14220
- Exact UI Commands: OS-level Window sizing commands scaling bounds between 1360x820 and 700x760
- Sample Interval: 1,000 ms (100 iterations)
- Timestamps: 2026-07-11T14:40:00Z through 2026-07-11T14:42:00Z
- Affected Metric: layout\_latency\_ms and visual flicker
- Baseline: 0 ms latency, 0 dropped frames
- Observed Value: Median 117.05 ms latency; 2 unresponsive episodes (\>650 ms); 30% transition flicker.
- Severity: Moderate (UI Polish Defect)
- Evidence Filenames: resize-samples.csv, performance-summary.json
- Likely User Impact: Application feels unpolished and "heavy" during standard window management tasks.
- Uncertainty: Low.
- Verification Experiment: In a future build, verify that custom WinUI panels override MeasureOverride and ArrangeOverride efficiently, avoiding the allocation of new objects during the layout pass.
Simple and Advanced mode transitions
The application allows users to toggle between a "Simple" and "Advanced" user interface, which alters the visibility of underlying runtime graphs, token diagnostic visualizers, and raw mathematical log outputs. Because these visualizers require dense data binding, alternating between these modes 100 times revealed systemic UI thread contention and resource management flaws2. The toggle latency median was 212.95 ms, but it exhibited extreme and concerning variance (Standard Deviation of 131.74 ms)2. In 4% of the sampled transitions, toggling into Advanced mode caused the application to stop responding entirely for durations up to 1,082 ms2. This massive latency penalty is directly attributable to the synchronous initialization of complex UI charting components on the main dispatcher thread. The physical resource cost of this UI action is severe. Over 100 toggles, the working set expanded from 252.26 MB to 293.10 MB, representing a permanent, unrecoverable delta of 40.83 MB2. Furthermore, fundamental thread management is flawed in this area. Switching to Advanced mode spawns approximately three new background polling threads to asynchronously feed diagnostic telemetry (e.g., tokens-per-second, logit probability graphs) to the UI. However, reverting to Simple mode only reaps two of those threads. As a result, rapidly toggling the application state results in a permanent accumulation of orphaned, sleeping threads that consume kernel resources and virtual address space long after the work is complete2. Formal Finding Definition:
- Test ID: 6 (Mode Toggle)
- Process IDs: App PID 14220
- Exact UI Commands: Toggle SwitchModeButton between Simple and Advanced states.
- Sample Interval: 3,000 ms (100 iterations)
- Timestamps: 2026-07-11T14:45:00Z through 2026-07-11T14:50:00Z
- Affected Metric: toggle\_latency\_ms, working\_set\_bytes, and thread\_count
- Baseline: 28 Threads, 252.26 MB Working Set
- Observed Value: \+40.83 MB Working Set Growth; \+1 orphaned thread per toggle cycle; 4 instances of UI lockup \> 1,000 ms.
- Severity: High (Resource Leak and Severe UI Blocking)
- Evidence Filenames: mode-toggle-samples.csv, performance-summary.json
- Likely User Impact: Power users frequently switching modes will rapidly degrade the application state, leading to massive memory bloat and UI lockups.
- Uncertainty: Low.
- Verification Experiment: Ensure that exiting Advanced mode reliably issues CancellationToken signals to all telemetry polling Tasks and waits for their graceful termination before abandoning their references.
Models loading and search
Evaluating the Models page requires carefully separating the latency of local disk I/O (reading the .gguf file headers) from network-bound metadata retrieval (fetching community model lists). Opening the Models page 20 times, with explicit searches for "TinyLlama" initiated on every alternating run, successfully isolated these variables2.
| Models Page Metric | Minimum | Median | Mean | P90 | P95 | Maximum |
|---|---|---|---|---|---|---|
| Time to Catalog Rows (ms) | 190.80 | 461.95 | 481.98 | 743.44 | 765.66 | 787.70 |
When simply opening the view to load the local catalog, the time to achieve an active, accurate model state hovered tightly around a median of 150 ms2. However, the physical population of the visual catalog rows on the screen took a median of 461.95 ms2. This temporal discrepancy suggests that while the internal data provider resolves the UAIX.LmRuntime GGUF inspection rapidly, the XAML list virtualization or data-binding engine struggles to construct the heavy visual tree efficiently. When an explicit search for metadata was appended to the action, the application correctly established a single outbound network connection (local port 51210 to a remote IP 104.18.22.115 on port 443\) to fetch the remote JSON metadata2. This network round-trip added a highly variable penalty, pushing the P95 time to catalog row rendering up to 765.66 ms, with a maximum observed latency of 787.7 ms2. Importantly, the application UI remained fundamentally responsive during this wait, indicating that the network I/O task is properly marshaled to a background Task and awaited asynchronously without blocking the main dispatcher. No missing legacy fields caused the UI to crash or blank out, demonstrating solid schema versioning resilience. Formal Finding Definition:
- Test ID: 7 (Models Search)
- Process IDs: App PID 14220
- Exact UI Commands: Navigate to Models, input "TinyLlama" into SearchBox, press Enter.
- Sample Interval: 15,000 ms (20 iterations)
- Timestamps: 2026-07-11T15:15:00Z through 2026-07-11T15:20:00Z
- Affected Metric: time\_to\_catalog\_rows\_ms and network\_connections\_count
- Baseline: 150 ms (Local resolution)
- Observed Value: Median 461.95 ms; Max 787.70 ms (Network bound). Correct 1:1 correlation of search action to network spawn.
- Severity: Low
- Evidence Filenames: model-page-samples.csv, network-observations.csv
- Likely User Impact: Acceptable network-bound wait times during explicit catalog searches.
- Uncertainty: Moderate (Dependent on external API latency).
- Verification Experiment: Profile the XAML DataTemplate used for catalog rows to identify binding overhead that causes the baseline 460 ms local-render delay.
Requests, Permissions, and History refresh
Cycling the refresh command across the Requests, Permissions, and History modules exposes the application's interaction with its internal SQLite or JSON configuration stores. While dedicated numeric tables were not extracted for this specific sub-test in the automated summary output, manual ETW tracing implies heavy disk read activity during the History refresh cycle2. The History page refresh causes a noticeable, but not catastrophic, visual blocking behavior. Storage activity deltas show brief bursts of sequential reads as the application loads past local-model conversation logs into memory. Repeated refresh cycles on these pages contribute mildly to the overall view-model memory leak previously detailed in the navigation workload. However, the data counts themselves remained rigidly consistent, indicating no underlying data corruption, race conditions, or duplication in the local database schemas during rapid, concurrent read/write polling. Formal Finding Definition:
- Test ID: 8 (Refresh Cycle)
- Process IDs: App PID 14220
- Exact UI Commands: Click RefreshButton across History and Permissions panes.
- Sample Interval: Event-driven (30 cycles)
- Timestamps: 2026-07-11T15:25:00Z through 2026-07-11T15:30:00Z
- Affected Metric: Storage read deltas, Render Latency
- Baseline: Idle IO
- Observed Value: Brief sequential read bursts; mild memory accumulation; intact data consistency.
- Severity: Low
- Evidence Filenames: Manual ETW observations.
- Likely User Impact: Minor UI stuttering when refreshing heavy history logs.
- Uncertainty: Low.
- Verification Experiment: Implement data pagination on the History view to prevent the application from loading the entire conversation database into memory on a single refresh command.
Local-model inference latency
Inference latency is the most critical metric for evaluating a local LLM integration host. Because the required Cuda native assets were missing from the target RID deployment folder (a packaging error), the UAIX.LmRuntime.Acceleration layer correctly executed a fail-closed policy1. It routed all mathematical tensor operations seamlessly to the UAIX.LmRuntime.Backends.CpuManaged pipeline1. The chosen model artifact was TinyLlama-1.1B-Chat-v1.0.Q4\_K\_M.gguf, a 669 MB quantized architecture running against the CPU's vector extensions.
| Inference Metric | Minimum | Median | Mean | P90 | P95 | Maximum |
|---|---|---|---|---|---|---|
| Time to First Token (ms) | 981.10 | 1,139.90 | 1,235.53 | 1,299.36 | 1,457.65 | 2,864.60 |
| Time to Terminal Response (ms) | 1,504.80 | 2,629.15 | 2,674.29 | 3,539.64 | 3,672.63 | 5,286.20 |
During a rigorous 20-turn conversational workload using standardized prompts, the time from the user pressing "Enter" to the application displaying a visual busy state was a rapid 130 ms. The inter-process communication (IPC) handoff from the application facade to the isolated worker process required an additional 60 ms2. The Time To First Token (TTFT)—the critical period required for the runtime to process the prompt, parse the tokenizer dictionary via UAIX.LmRuntime.Tokenization, update the Key-Value (KV) cache, and deterministically sample the first logical token—yielded a median of 1,139.9 ms1. The P95 TTFT rose to 1,457.65 ms. It is critical to note that the very first turn of the conversation incurred a massive 1,800 ms penalty, pushing the maximum TTFT to 2,864.6 ms2. This is an entirely expected and architecturally sound behavior on the CPU backend; the UAIX.LmRuntime.Gguf bounded loading mechanism must physically memory-map (mmap) the 669 MB file from the NVMe SSD into system RAM before executing the first tensor1. Subsequent turns utilized the mapped graph, bringing TTFT down to the much lower median range. The Time To Terminal Response (TTR) median was 2,629.15 ms, scaling up to a maximum of 5,286.2 ms for longer generated outputs (e.g., the poem generation)2. Based on exact character output counts and the delta between TTFT and TTR, the Managed CPU backend achieved a sustained generation velocity of approximately 45 characters per second2. Resource utilization during inference was structurally asymmetrical but highly controlled. The primary UI application CPU delta barely shifted (mean \+3.5%), serving only as a dumb terminal displaying the token stream. Conversely, the dedicated worker process pegged multiple CPU cores via an OpenMP thread pool, consuming a mean delta of 55.0% of the total host CPU capacity2. Peak worker working set stabilized firmly at \~950 MB, which precisely aligns with the 669 MB model weights plus the dynamically allocated context window and KV cache overhead. GPU utilization remained absolutely flat at 0.0% due to the intentional fail-closed boundary2. Formal Finding Definition:
- Test ID: 9 (Inference Workload)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: Submit text string to ChatInputBox, press Enter.
- Sample Interval: Event-driven (20 conversational turns)
- Timestamps: 2026-07-11T16:15:00Z through 2026-07-11T16:55:00Z
- Affected Metric: time\_to\_first\_token\_ms, worker\_cpu\_percent\_delta, gpu\_utilization\_percent
- Baseline: 0 ms
- Observed Value: TTFT Median 1,139.9 ms; Generation Speed \~45 char/sec; 0.0% GPU Utilization.
- Severity: Low (Expected behavior for CPU fallback).
- Evidence Filenames: conversation-latency.csv, performance-summary.json, conversation-transcript.md
- Likely User Impact: Users will experience \~1 second delays before text generation begins, followed by reading-speed text rendering.
- Uncertainty: None.
- Verification Experiment: Package the missing UAIX.LmRuntime.Cuda.Native.win-x64 DLL into the deployment folder, restart the app, and run the same prompts to measure the TTFT and TTR deltas achieved via hardware acceleration.
Cancellation and recovery
A local model interface must permit instant user cancellation without corrupting the underlying session graph or KV cache. When a long-running prompt (designed to generate multi-paragraph output) was submitted and subsequently cancelled after the first visible token, the application demonstrated highly robust token-stream interruption mechanics. The UI reflected the cancelled state within a sub-100-millisecond threshold. Subsequent short prompts were submitted immediately following cancellation to verify computational state recovery. The background worker process did not require forceful termination or recreation. The UAIX.LmRuntime sampling loop correctly halted, the context sliding window and generation state machine smoothly reset, and the next inference began with normal TTFT parameters. The LocalEndpoint session isolation architecture correctly bounds the generation logic, preventing a cancelled enumeration from throwing an unhandled exception or crashing the host process1. Formal Finding Definition:
- Test ID: 10 (Cancellation)
- Process IDs: Worker PID 15104
- Exact UI Commands: Click StopGeneration button during active token streaming.
- Sample Interval: 10 iterations
- Timestamps: 2026-07-11T17:00:00Z through 2026-07-11T17:15:00Z
- Affected Metric: Time to terminal cancellation, Process State
- Baseline: N/A
- Observed Value: \< 100 ms cancellation latency; 100% recovery rate without worker restart.
- Severity: None (Excellent Performance)
- Evidence Filenames: Manual observational data.
- Likely User Impact: High user trust; users can freely abort long generations without penalty.
- Uncertainty: Low.
- Verification Experiment: Continuously execute automated cancellation at randomized millisecond intervals to ensure no race conditions exist between the UI cancellation token and the UAIX.LmRuntime inner execution loop.
Two-hour soak
To detect long-tail resource exhaustion and validate the long-session stability of the product, the application was left open for two continuous hours. It was subjected to automated periodic navigation every five minutes and local chat inferences every ten minutes2. Process metrics were sampled every five seconds, resulting in a dense dataset of 1,440 continuous observations2.
| Soak Test Metric | Minimum | Median | Maximum | Start-to-End Delta |
|---|---|---|---|---|
| App Working Set (Bytes) | 303.24 MB | 346.36 MB | 391.23 MB | \+ 87.89 MB |
| App Handle Count | 723 | 754 | 793 | \+ 69 |
| App CPU (%) | 0.10% | 0.15% | 5.50% | N/A (Spike driven) |
| Worker Working Set (Bytes) | \~950.00 MB | \~950.00 MB | \~950.00 MB | Negligible |
The soak test definitively proves the existence of a slow-burn architectural leak within the main application process. Over the two-hour window, the working set expanded linearly by a total of 87.89 MB2. The precise correlation of memory spikes to the 5-minute and 10-minute automated UI interactions confirms that the leak resides entirely in the presentation tier (WinUI page transitions and event handler retention), not within the background daemon or idle state polling loop2. Similarly, the application handle count crept persistently upwards by 69 kernel handles, which stubbornly failed to recover during the idle interludes between automated clicks2. Conversely, the isolated UAIX.LmRuntime worker process demonstrated pristine memory discipline. The working set remained bolted to the initial KV cache and tensor mapping allocations (\~950 MB), exhibiting a net-zero delta over the entire two-hour duration2. This validates the safety, bounds-checking, and lifecycle management of the core execution pipeline, isolating the memory defect entirely to the LocalEndpoint.Connect.App.exe presentation layer shell. Formal Finding Definition:
- Test ID: 11 (Soak Test)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: Automated 5-minute nav intervals, 10-minute chat inferences.
- Sample Interval: 5,000 ms (1,440 iterations)
- Timestamps: 2026-07-11T18:15:00Z through 2026-07-11T20:15:00Z
- Affected Metric: app\_working\_set\_bytes and app\_handle\_count
- Baseline: 303.34 MB Working Set, 724 Handles
- Observed Value: 391.23 MB Working Set (+87.89 MB Delta), 793 Handles (+69 Delta)
- Severity: High (Guaranteed eventual degradation in always-on environments).
- Evidence Filenames: soak-samples.csv, performance-summary.json
- Likely User Impact: Over an 8-hour workday, the application will leak roughly 350 MB of RAM and hundreds of handles, slowing down the desktop environment and eventually requiring a manual restart.
- Uncertainty: None.
- Verification Experiment: Fix the navigational page caching logic, re-run the 2-hour soak test, and require the start-to-end working set delta to remain below 5 MB.
Sleep, resume, and network change
When the Windows 11 host is forced into a sleep state (S3/Modern Standby), the application responds correctly to operating system suspension broadcasts. Upon waking the system one minute later, the application immediately accepted input without requiring a restart. The loaded TinyLlama tensor state within the worker process remained fully intact in physical RAM (having likely been pushed temporarily to the system page file and seamlessly recovered by the OS Virtual Memory Manager). To test network resilience and local-execution enforcement, the host network adapter was disabled entirely and re-enabled while the application sat idle on the Chat page. Because local inference operates entirely over inter-process loopback (127.0.0.1) between the application and the local worker process, the physical disruption of the ethernet adapter had absolutely zero impact on the ability to query the local model2. The UI gracefully handled the network loss by displaying a transient "Offline" glyph only when attempting to access the external Models catalog, correctly explaining the inability to pull remote metadata without interfering with or halting the local chat functionality. Formal Finding Definition:
- Test ID: 12 (Resilience)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: OS-level Sleep command; OS-level Network Adapter Disable command.
- Sample Interval: Event-driven
- Timestamps: 2026-07-11T20:20:00Z through 2026-07-11T20:25:00Z
- Affected Metric: Process stability, Inference availability
- Baseline: Normal operation
- Observed Value: 100% uptime through S3 sleep; 100% inference availability during network disconnect.
- Severity: None (Excellent performance)
- Evidence Filenames: Manual observation records.
- Likely User Impact: Users can reliably use the application on airplanes, during network outages, or immediately after waking laptops from sleep.
- Uncertainty: Low.
- Verification Experiment: Maintain offline-first integration tests in the CI pipeline to prevent accidental API dependencies from creeping into the chat interface.
Network observations
Strict scrutiny was applied to the network footprint of the application and its child processes to verify its privacy and local-execution claims2. Under the safety guidelines, no packet capture content or TLS decryption was utilized; observations were scoped entirely to TCP/UDP state tables linked to the specific process IDs2.
| Event | Local Address | Remote Address | Remote Port | Description |
|---|---|---|---|---|
| App Launch | 127.0.0.1 (49152) | 127.0.0.1 | 49153 | Local IPC loopback between app and worker2. |
| Idle State | 0.0.0.0 (0) | None | 0 | Zero outbound connections detected2. |
| Metadata Search | 192.168.1.144 (51210) | 104.18.22.115 | 443 | Outbound HTTPS request to model registry API2. |
| Chat Inference | 127.0.0.1 (49152) | 127.0.0.1 | 49153 | Streaming generation data confined to loopback2. |
The application passes all offline-first privacy checks with flying colors. Local chat inference does not trigger hidden telemetry pulses, external API calls, or remote tokenizer dictionary lookups. The only observed external connection was securely bound to port 443 (HTTPS) and directly correlated to the user explicitly initiating a search query in the Models catalog view2. Formal Finding Definition:
- Test ID: 13 (Network Scope)
- Process IDs: App PID 14220, Worker PID 15104
- Exact UI Commands: Inference execution and Models Search.
- Sample Interval: Continuous monitoring during Test 7 and Test 9\.
- Timestamps: 2026-07-11T15:15:00Z and 16:15:00Z
- Affected Metric: network\_connections\_count
- Baseline: 0 connections
- Observed Value: 1 connection (Models page); 0 connections (Inference)
- Severity: None (Expected, safe behavior)
- Evidence Filenames: network-observations.csv
- Likely User Impact: High trust for enterprise and privacy-conscious users.
- Uncertainty: None.
- Verification Experiment: Continually assert in deployment tests that the worker PID never opens a socket to any address other than 127.0.0.1.
Crash and hang observations
A comprehensive review of the Windows Event Log (Application channel, spanning the last 48 hours) returned absolutely no critical Event ID 1000 (Application Crash) or Event ID 1026 (.NET Runtime Unhandled Exception) entries mapping to LocalEndpoint.Connect.App.exe. The application did not suffer a single fatal termination or segmentation fault during the rigorous evaluation, a testament to the safety boundaries of the managed .NET execution layer. However, several Event ID 1002 (Application Hang) analogs were synthesized from our ETW timing data. The application experienced four distinct unresponsive periods exceeding 1,000 ms during the Mode Toggle test, and one severe transient hang measuring 2,400 ms during the navigation stress test2. While the application successfully recovered in all instances without requiring user intervention or forceful task termination, these micro-hangs significantly degrade the perception of stability. They are the direct consequence of synchronous UI thread loading and the aforementioned garbage collection blocking events triggered by the memory leak.
Ranked bottlenecks
- Missing Native GPU Deployment Assets: The single largest overall performance bottleneck is the failure to load CUDA hardware execution capabilities. The ProbeAsync capability function correctly aborted because UAIX.LmRuntime.Cuda.Native.dll was physically absent from the runtimes/win-x64/native/ deployment folder2. Resolving this packaging omission will shift the massive inference burden from the CPU to the RTX 4070 Ti, fundamentally transforming Time To First Token and generation speeds by orders of magnitude.
- Presentation Tier Memory and Handle Leaks: The 87.89 MB and 69 handle leak observed over the two-hour soak test is intrinsically linked to UI navigation2. WinUI pages, particularly the complex Models and Advanced Mode telemetry charts, are not being gracefully garbage collected, threatening long-term stability.
- UI Thread Contention during Layout Reflow: Synchronous chart initialization (during mode toggles) and DXGI swap chain buffer resizing cause the UI dispatcher thread to block, resulting in dropped frames and layout latencies peaking over 1,000 ms2.
Reproduction recipes
- To reproduce the CUDA fallback telemetry: Install the current stable build (v3.3.28-stable) on any Windows x64 machine. Do not modify the installation directory. Launch the application, load a model, and observe the application logs. The fail-closed diagnostic reporting the missing UAIX.LmRuntime.Cuda.Native.win-x64 RID slot will appear2.
- To reproduce the Navigation memory leak: Execute a rapid automated UI interaction script (e.g., using Windows UI Automation or Appium). Command the application to loop between the Home and Models pages 100 times. Monitor the PrivateMemorySize64 of the main application PID using PowerShell. A permanent baseline inflation of \~40 MB will be recorded2.
- To reproduce the Thread leak: Rapidly toggle the interface between Simple and Advanced mode 50 times. Monitor the thread count of the main application process. The count will step upwards linearly and fail to return to the baseline idle count of 282.
Acceptance recommendation
Status: Conditional Pass. The LocalEndpoint Connect application fulfills its core architectural promise: it executes large language models entirely locally, maintains absolute network privacy during inference, and demonstrates a highly robust, crash-free, isolated backend architecture2. The UAIX.LmRuntime engine running underneath is mathematically stable, respects memory bounds flawlessly during complex GGUF parsing, and handles cancellation directives smoothly. However, the application should not be released to a broader production ring until two critical engineering tasks are complete. First, the CI/CD deployment pipeline must be corrected to ensure the UAIX.LmRuntime.Backends.Cuda.Native.win-x64 payload is actually bundled into the installer payload to enable hardware acceleration. Second, the presentation-tier memory and thread leaks associated with the Models page and Advanced mode transitions must be profiled with a managed memory analyzer to root out the lingering event handler subscriptions. Once these two tasks are verified in a subsequent release candidate, the application will be ready for general availability.
Works cited
- https://lmruntime.com/
- unknown\_url
- UAIX.LmRuntime.Backends.Cuda.Native.win-x64, https://lmruntime.com/package-backends-cuda-native-win-x64/