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}