--- name: local-slm-edge-ai-expert description: "Expert guide for Local Small Language Models (SLMs) and Edge AI execution — WebLLM, Transformers.js v3, ONNX Runtime Web, WebGPU, and zero-latency local embeddings / Panduan ahli SLM lokal dan AI edge di browser." author: "Roedy Rustam" version: "4.4.2" --- # Local SLM & Edge AI Expert (WebGPU & In-Browser Intelligence) [English](#english) | [Bahasa Indonesia](#bahasa-indonesia) --- ## English ### Orchestration & Integration - **Model Routing & Cost Optimization**: `llm-finops-router`, `adaptive-model-cascade`, `frontier-ai-models-expert` - **Edge Runtimes & Frontend**: `senior-frontend`, `pwa-offline-first-expert`, `wasm-edge-computing-expert` - **Local Vectors & RAG**: `vector-db-rag-expert`, `agentic-memory-architect`, `session-memory-manager` - **Privacy & Safety Guardrails**: `compliance-gdpr-privacy-expert`, `ai-safety-governance-expert`, `zero-trust-secret-vault` - **Lifecycle & Governance**: `zero-to-prod-orchestrator`, `anti-slop` ### Purpose & Overview Production-grade architectural guide for running **Small Language Models (SLMs)** and embedding models directly inside client browsers and edge runtimes. Eliminates cloud API costs, guarantees 100% data privacy (zero cloud data leakage), and enables instant, offline-capable AI features using **WebGPU**, **Transformers.js v3**, **WebLLM**, and **ONNX Runtime Web**. ### Key Capabilities 1. **Client-Side Model Execution**: Running quantized 1B–4B SLMs (Llama 3.2 1B/3B, Gemma 2 2B, Phi-3.5 Mini, Qwen 2.5 1.5B/3B) entirely inside the user's browser via WebGPU. 2. **In-Browser Embeddings**: Fast client-side vector embeddings with models like `all-MiniLM-L6-v2` or `bge-small-en-v1.5` using Transformers.js v3. 3. **Hybrid Edge-Cloud Fallback**: Gracefully falling back to server-side LLMs when client hardware lacks WebGPU or sufficient VRAM. 4. **Zero-Latency PII Masking**: Anonymizing sensitive user data locally on the client before sending queries to external LLMs. --- ### Production Implementation Recipes #### Recipe 1: In-Browser Semantic Embedding Generation with Transformers.js v3 ```typescript import { pipeline, env } from '@huggingface/transformers'; // Configure cache and worker settings env.allowLocalModels = false; env.useBrowserCache = true; let embedder: any = null; export async function getLocalEmbedding(text: string): Promise { if (!embedder) { embedder = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', { dtype: 'fp32', device: 'webgpu', // Accelerate via WebGPU if supported }); } const output = await embedder(text, { pooling: 'mean', normalize: true }); return Array.from(output.data); } ``` #### Recipe 2: WebLLM In-Browser Chat Assistant with WebGPU ```typescript import * as webllm from '@mlc-ai/web-llm'; export async function createLocalChatEngine(onProgress?: (report: webllm.InitProgressReport) => void) { // Check WebGPU compatibility if (!('gpu' in navigator)) { throw new Error('WebGPU is not supported in this browser. Fallback to cloud API.'); } const selectedModel = 'Llama-3.2-1B-Instruct-q4f32_1-MLC'; const engine = await webllm.CreateMLCEngine(selectedModel, { initProgressCallback: onProgress, }); return { generateResponse: async (prompt: string): Promise => { const reply = await engine.chat.completions.create({ messages: [{ role: 'user', content: prompt }], temperature: 0.2, }); return reply.choices[0]?.message.content || ''; }, }; } ``` --- ### Implementation Checklist - [ ] Implement browser feature detection (`'gpu' in navigator`) before initiating WebGPU model loads. - [ ] Provide a transparent download progress bar when fetching model weights on initial visit. - [ ] Cache model shards in IndexedDB or Cache API to ensure instant subsequent launches. - [ ] Provide automatic fallback to lightweight serverless APIs when client device VRAM is constrained. ### Sovereign Execution, Token Efficiency & Invariants | Dimension | Sovereign Mandate & Deterministic Contract | | :--- | :--- | | **Frontier Model Cascade** | Medium / High (`GPT-5.6 Sol Medium`, `Gemini 4 Argon`, `Claude Sonnet 5.5 High`, `Grok 4.7 High Fast`) | | **Availability Fallback** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Zero unhandled missing-model errors) | | **KV-Cache & Token Protocol** | Pin static instructions & schemas at prompt prefix (`kv-cache-prefix-optimizer`); pass surgical `CONTEXT_MAP.md` slices (<250 tokens/call) during Swarm Fan-Out | | **SaaT CLI & MCP Dispatch** | CLI: `vibes skill exec local-slm-edge-ai-expert ` / MCP: `vibes_skill_dispatch`, `vibes_ast_query`, `vibes_compile_cache`, `vibes_optimize_budget`, `vibes_verify_gate` | | **NFR & Anti-Slop Invariants** | P99 API Gateway Latency < 85ms, OpenAPI 3.1 / TypeSpec strict schema parity, RFC 9457 Problem Details error contracts, Idempotency-Key enforcement; 100% complete zero-placeholder output verified via `node scripts/check-anti-slop.js --strict` | --- --- ## Bahasa Indonesia ### Integrasi Orkestrasi - **Perutean Model & Optimasi Biaya**: `llm-finops-router`, `adaptive-model-cascade`, `frontier-ai-models-expert` - **Runtime Edge & Frontend**: `senior-frontend`, `pwa-offline-first-expert`, `wasm-edge-computing-expert` - **Vektor Lokal & RAG**: `vector-db-rag-expert`, `agentic-memory-architect`, `session-memory-manager` - **Privasi & Guardrail Keamanan**: `compliance-gdpr-privacy-expert`, `ai-safety-governance-expert`, `zero-trust-secret-vault` - **Siklus Hidup & Tata Kelola**: `zero-to-prod-orchestrator`, `anti-slop` ### Tujuan & Gambaran Umum Panduan arsitektur tingkat produksi untuk menjalankan **Small Language Models (SLM)** dan model *embedding* langsung di dalam browser pengguna dan runtime edge. Menghilangkan biaya API cloud, menjamin privasi data 100% (tidak ada data yang keluar ke server pihak ketiga), dan mengaktifkan fitur AI instan yang dapat bekerja secara *offline* menggunakan **WebGPU**, **Transformers.js v3**, **WebLLM**, dan **ONNX Runtime Web**. ### Kemampuan Utama 1. **Eksekusi Model di Sisi Klien**: Menjalankan SLM terkuantisasi 1B–4B (Llama 3.2 1B/3B, Gemma 2 2B, Phi-3.5 Mini, Qwen 2.5) sepenuhnya di dalam browser pengguna dengan akselerasi WebGPU. 2. **Embedding Vektor di Browser**: Pembuatan vektor semantik secepat kilat menggunakan Transformers.js v3 (`all-MiniLM-L6-v2` atau `bge-small`). 3. **Fallback Hibrida Klien-Cloud**: Mengalihkan tugas ke server secara otomatis jika perangkat klien tidak mendukung WebGPU atau memiliki VRAM terbatas. 4. **Penyensoran PII Tanpa Latensi**: Mengaburkan data pribadi sensitif secara lokal di perangkat klien sebelum diteruskan ke cloud. --- ### Resep Implementasi Produksi #### Resep 1: Pembuatan Embedding Vektor di Browser dengan Transformers.js v3 ```typescript import { pipeline, env } from '@huggingface/transformers'; env.allowLocalModels = false; env.useBrowserCache = true; let modelEmbedding: any = null; export async function buatEmbeddingLokal(teks: string): Promise { if (!modelEmbedding) { modelEmbedding = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', { dtype: 'fp32', device: 'webgpu', }); } const hasil = await modelEmbedding(teks, { pooling: 'mean', normalize: true }); return Array.from(hasil.data); } ``` #### Resep 2: Asisten AI di Browser dengan WebLLM & WebGPU ```typescript import * as webllm from '@mlc-ai/web-llm'; export async function inisialisasiMesinLokal(laporanProgres?: (laporan: webllm.InitProgressReport) => void) { if (!('gpu' in navigator)) { throw new Error('WebGPU tidak didukung pada browser ini. Alihkan ke API cloud.'); } const modelTerpilih = 'Llama-3.2-1B-Instruct-q4f32_1-MLC'; const mesin = await webllm.CreateMLCEngine(modelTerpilih, { initProgressCallback: laporanProgres, }); return { kirimPesan: async (pertanyaan: string): Promise => { const balasan = await mesin.chat.completions.create({ messages: [{ role: 'user', content: pertanyaan }], temperature: 0.2, }); return balasan.choices[0]?.message.content || ''; }, }; } ``` --- ### Checklist Implementasi - [ ] Deteksi ketersediaan WebGPU (`'gpu' in navigator`) sebelum memuat model. - [ ] Tampilkan indikator progres unduhan bobot model saat pertama kali diakses. - [ ] Simpan bobot model di Cache API atau IndexedDB agar kunjungan berikutnya instan tanpa unduh ulang. - [ ] Siapkan jalur fallback ke API cloud jika memori klien tidak mencukupi. ### Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian | Dimensi | Mandat Berdaulat & Kontrak Deterministik | | :--- | :--- | | **Kaskade Model Frontier** | Medium / High (`GPT-5.6 Sol Medium`, `Gemini 4 Argon`, `Claude Sonnet 5.5 High`, `Grok 4.7 High Fast`) | | **Invarian Fallback Ketersediaan** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Bebas gagal saat model belum tersedia/kuota penuh) | | **Protokol Hemat Token & KV-Cache** | Kunci instruksi & skema statis di prefix awal (`kv-cache-prefix-optimizer`); kirim potongan `CONTEXT_MAP.md` (<250 token/panggilan) saat Fan-Out | | **Eksekusi SaaT CLI & MCP** | CLI: `vibes skill exec local-slm-edge-ai-expert ` / MCP: `vibes_skill_dispatch`, `vibes_ast_query`, `vibes_compile_cache`, `vibes_optimize_budget`, `vibes_verify_gate` | | **Invarian NFR & Anti-Slop** | Latensi P99 API < 85ms, paritas skema ketat OpenAPI 3.1 / TypeSpec, kontrak error RFC 9457 Problem Details, penegakan Idempotency-Key; kode 100% tuntas tanpa placeholder diverifikasi melalui `node scripts/check-anti-slop.js --strict` |