Local inference with WebGPU — your prompt and text never leave this browser.
{#if $deviceInfo} {#if $deviceInfo.webgpuSupported} WebGPU available{$deviceInfo.shaderF16 ? ' + shader-f16' : ''} {#if $deviceInfo.adapterInfo?.vendor} · {$deviceInfo.adapterInfo.vendor}{$deviceInfo.adapterInfo.architecture ? ` / ${$deviceInfo.adapterInfo.architecture}` : ''} {/if} {:else} WebGPU not available — falling back to WASM (CPU, slow) {/if} {/if}
{#if $modelPhase === 'idle' || $modelPhase === 'checking' || $modelPhase === 'error'} {:else if $modelPhase === 'loading'} Loading… {#if $loadProgress} {$loadProgress.file.split('/').pop()} {Math.round($loadProgress.progress)}% ({$loadProgress.loadedMB.toFixed(0)}/{$loadProgress.totalMB.toFixed(0)} MB) {/if} {:else if $modelPhase === 'ready'} Ready · device {$deviceInfo?.device} · dtype {$deviceInfo?.dtype} {#if $initMs}· init {(($initMs ?? 0) / 1000).toFixed(1)}s{/if} {/if}
{#if $modelPhase === 'loading' && $loadProgress} {/if} {#if $modelError}

Model load failed: {$modelError}

{/if}