AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
在一個瀏覽器分頁中同時執行七個 LLM 引擎:手寫 WebGPU 核心速度約為 ONNX 的 4 倍,具 DFlash 2 的 27 億參數模型進行推測解碼,另有影像、語音與 OCR 功能。無伺服器,資料不會離開您的裝置。
AI 翻譯
Seven LLM engines in one browser tab: hand-written WebGPU kernels about 4x faster than ONNX, a 27B with DFlash 2 speculative decoding, plus image, voice and OCR. No server, no data leaves your device.
開發工具HTML · JavaScriptGitHub @NakliTechie上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證在一個瀏覽器分頁中同時執行 7 個 LLM 引擎:手寫 WebGPU 核心、具 DFlash 2 的 27 億參數模型,且不需伺服器。
AI 翻譯
7 LLM engines in one browser tab: hand-written WebGPU kernels, a 27B with DFlash 2, no server
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Private AI in your browser tab. Chat, generate images, search the web, and talk to your documents — running entirely on your own device. No server, no API keys, no data leaving your machine.
▶ Try it live · Guided tour
LocalMind is a single web page that runs real AI models on your own device. Open the link, pick a model, and start chatting — the model downloads once, caches in your browser, and works offline after that. Your conversations, files, and memory never leave your machine.檢視完整 README ↗| Where | How |
|---|---|
| Your browser | Open localmind.naklitechie.com in Chrome or Edge 113+, or Firefox 130+ |
| Your own copy | git clone https://github.com/NakliTechie/LocalMind && cd LocalMind && python3 -m http.server 8080 |
On first open LocalMind downloads LFM2.5 230M (~140 MB) once and keeps it in the browser's cache, so the next start skips the download; where Chrome already has Gemini Nano, it starts on that with no download. Tap an example prompt or type. The model picker above the message box lists what is already on this device first; pick a bigger model when you want more. To drive the loaded model from a script, turn on Settings → JavaScript API:
await window.localmind.load('lfm2-230m-webgpu');
const r = await window.localmind.chat.completions.create({ messages: [{ role: 'user', content: 'Hello' }] });
No account, no API key, no config file. Your own copy needs an HTTP server; file:// will not load the workers.
You want help with things you would rather not paste into a website: a contract, your notes, a letter from the doctor. A hosted chatbot sends every word to someone else's server. LocalMind runs the model inside your browser tab instead. Models download once from Hugging Face; what you type, the files you add and the memory it keeps stay on your machine. Web search is the one exception, and it runs only when you turn it on, with your own search key.
In-tab models need WebGPU, so Safari does not work yet. Small models answer in seconds on a laptop. Ternary Bonsai 2 27B is a ~5.9 GB download and needs a GPU with the memory to hold it. For 7B–70B models at full speed, point LocalMind at your own Ollama, LM Studio or llama.cpp server; the browser then only streams the answer.
The sidebar holds Chat, Image, Voice, Models and Library; Compare, Batch, Diffuse, OCR, Vision, Clone and Folder sit under More. Press ⌘K (Ctrl+K on Windows and Linux) for a palette of every action, from switching models to opening a setting. Library searches the full text of every saved chat, with your on-device memory in the tab beside it. Settings → General → Appearance picks light, dark or your system's theme. On a phone the composer gets the full width, with attach and voice stacked beside a taller text box, and everything else moves into the menu.
Type in the picker to find a model; it groups them as on this device, partly downloaded, or to download. They range from LFM2.5 230M on hand-written WebGPU kernels (~1,060 tokens/s on an M4 Pro) to two 27B models, Ternary Bonsai 2 and Underdog Saluki (a 7.9 GB IQ2-mix GGUF tuned for tool calls), plus Chrome's built-in Gemini Nano with no download at all. Ternary Bonsai 2 also comes as 2B (430 MB) and 4B (950 MB) on the same engine, 24 of 24 on the tool test. Qwen3 4B adds FlashMap speculative decoding (same tokens; 2.1× on maths). Five experimental engines stream mixture-of-experts models larger than GPU memory (Qwen3.6 35B-A3B, OpenBMB's MiniCPM-V 4.7 35B-A3B, Gemma 4 26B-A4B, Liquid AI's LFM2.5 24B-A2B and Recursive's 26 GB coding model Flint 40B-A2.5B) from the browser's private storage; MiniCPM-V uses tools (11 of 11 on the test set) and reads images. Twelve engines in all serve 20 models and a memory writer. Their disk tier and engines are also a library, diskformer.js, with a demo at diskformer.naklitechie.com. Settings → Models → Load .gguf from disk… copies in a GGUF you already have instead of downloading it.
Every path is local. A model runs in the tab on WebGPU, or as a GGUF through llama.cpp compiled to WebAssembly (from a
URL or a .gguf file on your disk, on CPU when there is no GPU), or on your own Ollama, LM Studio or llama.cpp server.
Settings → Models adds any Hugging Face ONNX repo or GGUF URL to the picker.
Drop PDFs, Word files, notes or a whole folder into a chat and ask across them, in one language about documents in another. LocalMind remembers between sessions: Memory → Write memories from this chat has the loaded model save new facts about you and update the ones they change, with Mem0's prompts; a tech demo (off by default) gives the job to Tencent's Hy-Memory 30B-A3B instead. OCR turns photos and scanned PDFs into selectable text with GLM-OCR on your GPU. Image mode draws with a 4B diffusion model in the tab or on your own stable-diffusion.cpp server.
Voice mode is hold-to-talk: Moonshine transcribes, the model answers and Kokoro reads the reply aloud. Clone makes any text sound like a 5–10 second voice sample, with Chatterbox. Each model downloads once and runs on your device.
python3 -m http.server 8080 # serve your copy, then open http://localhost:8080
scripts/image-server.sh # a local stable-diffusion.cpp server for Image mode on 127.0.0.1:7860
node scripts/bench-engines.mjs # decode tok/s per engine: drives Chrome, same model and prompt, exact token counts
node scripts/test-inference-worker.mjs # UI and worker contracts (the full gate is below)
node scripts/roll-in.mjs # after editing a module in src/: copy every module into index.html
With Settings → JavaScript API on, window.localmind is an OpenAI-shaped client for the loaded model, and
window.localmind.commands lists and runs every ⌘K palette command (API.md).
for t in rollin download-stall endpoint engine-fetch inference-worker moe-expert-stream token-count render calculate page-proxy; do
node scripts/test-$t.mjs || { echo "FAILED: $t"; break; }
done
These ten suites need Node and nothing else: no install, no model download, no browser. They refuse a page that
loads any script file besides itself (every module in src/ is rolled into index.html), a sidebar or
palette command that maps to no real control, a model without its Settings entry, a load failure that shows no Retry,
a truncated model download that the cache would keep, a token estimate outside its bounds against each model's
own tokenizer, tool-call markup or unrendered math in a chat bubble, and a blocked web page sent to a proxy without your yes. Three more suites drive Chrome with WebGPU: scripts/test-qwen35-kernels.mjs checks the SSD engine's
WGSL kernels against llama.cpp's CPU ops, scripts/test-iq-kernels.mjs checks every llama.cpp block type Saluki uses
against gguf-py's dequantization on real weights, and scripts/test-ple-opfs.mjs checks Gemma 4 gives identical output
with its embedding table on disk. bench-engines.mjs --suite dflash checks DFlash 2 output is byte-identical to plain decoding.
MIT. Built on Transformers.js and the webml-community WebGPU kernels; full credits in ARCHITECTURE.md. Part of the NakliTechie series, built by Chirag Patnaik with Claude Code.
Features · Architecture · API · Roadmap · Guided tour