DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
LocalMind v2.2.0은 브라우저에서 AI 모델을 계정·텔레메트리 없이 실행하고, Hugging Face에서 한 번만 다운로드합니다
Rulează modele AI local în browser, fără cont și fără telemetrie; modelele se descarcă o singură dată de la Hugging Face. Modul Simplu, 8 modele ONNX, 12 preseturi, Pomodoro, soundscape, export Obsidi
생산성HTML · JavaScriptGitHub @chiuta온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기LLM running entirely in the browser (transformers.js) - private chat, no server.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗English · Română · Français · Italiano · Español · Português · Deutsch · Magyar
Version: 2.2.0 · Last updated: 2026-10-27
Versioning note: from 2.0.0 the app uses SemVer. The previous number was v121 (the line 120.x/121.0.0); "previous: v121" is recorded in CHANGELOG.md. Older sections of the history below keep the old numbers.
New in 2.2.0: after you load a model the app shows the size measured in your own download (sum of the file totals reported by transformers.js, kept locally); the list sizes below remain unverified estimates.
Status: functional. The WebGPU/CPU notice and the size notes are new; the download sizes are estimates, "to be verified" (see the table).
Offline: partial. The app and its libraries (vendor/) run locally; a model is downloaded once from huggingface.co and then generation is local. The first load of a model, the ONNX Runtime .wasm and Pyodide (if used) need the network; opened from file:// the models do not load (use a local server).
Interface languages: Română, English, Français, Italiano, Español, Português (PT), Deutsch, Magyar
An AI assistant that runs in the browser (transformers.js + WebGPU), with no account and no API key.
Live app: https://chiuta.github.io/LocalMind/
LocalMind (version in the title and in the footer: 2.1.0) is a chat interface with language models that run locally in the browser, through transformers.js v4.2.0 (WebGPU, with a CPU/WASM fallback where applicable). You choose a model, press "Încarcă Modelul" (Load the Model), and the model is downloaded once from Hugging Face and stays in the browser cache. The interface is in Romanian, and the app displays "FĂRĂ TELEMETRIE" (NO TELEMETRY) and "FĂRĂ CONT" (NO ACCOUNT) badges (in earlier versions: "ZERO TELEMETRY" / "NO ACCOUNT"; reworded to be precise — see "Disclaimer").
{{date}}, {{time}}, {{model}}, {{name}}.Read from the code of index.html (not measured in this review: the Hugging Face servers were not reachable from the review environment, so no size below was verified and all are marked "to be verified").
vendor/), pipeline('text-generation', model, {device, dtype: 'q4f16'}): the quantised weights model_q4f16.onnx of onnx-community repositories are downloaded from huggingface.co the first time a model is loaded, and kept in the browser cache (Cache Storage). The 🗑 button on a model card clears that model's cache. The preselected model is Qwen3 4B (the largest of the four).| Model (Hugging Face id) | Size on the model card | Size in "Discover ONNX models" | Without WebGPU (per the code) |
|---|---|---|---|
Qwen3 0.6B (onnx-community/Qwen3-0.6B-ONNX) | ~550 MB | ~350 MB | runs on CPU/WASM |
LFM2 1.2B (onnx-community/LFM2-1.2B-ONNX) | ~700 MB | ~750 MB | does not run (flagged gpuOnly: needs WebGPU); the app warns before loading |
Qwen3 1.7B (onnx-community/Qwen3-1.7B-ONNX) | ~1.3 GB | ~1.1 GB | runs on CPU/WASM |
Qwen3 4B (onnx-community/Qwen3-4B-ONNX) | ~2.5 GB | ~2.5 GB | listed as "needs GPU" in Discover; may be too large for CPU/WASM |
The two size columns disagree for three models (the card text and the Discover list were written separately): the real size is to be verified; while downloading, the progress bar shows the actual bytes. The Discover list also offers Llama 3.2 1B (~700 MB), Llama 3.2 3B (~2.0 GB), Qwen2.5 1.5B (~900 MB), Qwen2.5 0.5B (~300 MB), with the same caveat.
detectDevice): Chrome on Android is blocked (the app explains that the per-tab memory limit is too low and suggests Samsung Internet or Firefox); other Android browsers are forced to CPU/WASM; iOS below 18 is forced to CPU/WASM; elsewhere WebNN is tried first, then WebGPU (an adapter must be found), otherwise CPU/WASM. If loading fails, the app retries down the chain WebNN → WebGPU → WASM.navigator.gpu, no compatible graphics adapter, insecure context, Android or iOS<18 policy, or the blocked Chrome-on-Android case), that models run on the CPU (slower), that LFM2 1.2B cannot run, that Qwen3 0.6B is the suggested start and that Qwen3 4B may be too large (to be checked on your device). The notice disappears when WebGPU/WebNN is available. The same texts exist in the 8 interface languages (translations not natively verified). The CPU/WASM path is described by the code and was not benchmarked here.node tests/webgpu-note.test.mjs simulates the presence/absence of navigator.gpu and several user agents; no model is loaded.FFF.pii) and shows you what it found; you can mask the ticked items or export unchanged. If it finds nothing, it says explicitly that the detection is heuristic and may miss something.FFF.search) across all the conversations saved on this device, with highlighted snippets, opening a conversation and deleting it. Nothing is sent..fff.json export/import with a password (AES-GCM, PBKDF2) and deleting the app's data.huggingface.co / cdn.jsdelivr.net. Limit: it sees only the requests made through the page's fetch, not all of the browser's traffic; also check in the Network tab.FFF kit. From fff-kit (pasted into index.html, no network) the modules core, label, bundle, pii, search are used: a transparency label (press the version in the footer), .fff.json export/import/deletion with optional AES-GCM + PBKDF2 encryption, local personal data detection and local BM25 search. The CSP policy was not changed from the previous version apart from the sha256 hashes of the inline scripts (the new styles are in <style>, covered by the style-src 'unsafe-inline' already present; no new host was added). The translations of the new texts into fr/it/es/pt/hu/de are automatic and not checked by native speakers. Personal data detection is heuristic: it may miss or wrongly flag; it does not replace your own check.
Enter (Shift+Enter for a new line). Escape stops the generation.Ctrl+Shift+S, Ctrl+Shift+X, Ctrl+Shift+J).? shortcuts window, Alt+M menu, Alt+S Simple mode, Alt+N night mode, Alt+L light theme, Alt+V dictation, Alt+C new conversation, Alt+H history, Alt+D statistics, Ctrl+F search, Ctrl+B jump to bookmark, Alt+1–5 quick model switch.localStorage (keys with the prefix localmind.: preferences, saved conversations, prompt library, memory, budget, benchmarks etc.) and Cache Storage (models downloaded by transformers.js and the verified Pyodide/ONNX Runtime binaries and a small service worker for the app's files). The text of the conversations is not sent anywhere by the app.huggingface.co (and *.huggingface.co, hf.co): downloading ONNX models and searching the catalog, only when you load a model or search for models.cdn.jsdelivr.net: only the Pyodide 0.27.0 binaries (.wasm, python_stdlib.zip, lock file; the two scripts are loaded with SRI) and the ONNX Runtime Web .wasm (pinned npm version), loaded only when needed (running Python code, loading a model). Each file is SHA-256 verified before use and refused otherwise; the CSP in the page allows exactly these URLs.vendor/ folder of the repository (loaded from the same origin; KaTeX and Mermaid with SRI).The answers of small models can be wrong, incomplete or made up ("hallucinations"); verify them. The app does not provide medical, legal or financial advice. The "FĂRĂ TELEMETRIE" / "FĂRĂ CONT" badges (the badge tooltip says the same) mean that the app does not send conversations or usage data to a server of the author; the page does, however, contact huggingface.co (model download, search) and cdn.jsdelivr.net (Pyodide, ONNX Runtime), as described above.
The vendor/ folder contains copies of libraries with their own licenses, different from MIT: pdf.js (Mozilla, Apache-2.0 — the notice is in the file header), transformers.js 4.2.0 (Hugging Face, Apache-2.0 according to the upstream project; the minified file does not contain the notice) and qrcode.min.js (qrcodejs, MIT according to the upstream project; used to generate QR codes). The MIT license applies to the author's code, not to the third-party components. The models downloaded from Hugging Face have their own licenses (e.g. Qwen3 under Apache-2.0, LFM2 under the Liquid AI license). Also in vendor/ (see NOTICE.md): KaTeX 0.16.9 (MIT), Mermaid 11.15.0 (MIT) and the ONNX Runtime Web loaders (MIT). Pyodide 0.27.0 (MPL-2.0) and the ONNX Runtime .wasm files are not in the repository: they are downloaded from pinned URLs and verified by SHA-256.
Download the whole directory (not just index.html, because the transformers.js and pdf.js scripts are in vendor/) and serve it with a local web server (e.g. python3 -m http.server 8080, then http://localhost:8080/). Opening index.html directly from the file system (file://): the interface now starts normally, but loading models is blocked by the browser (ES modules from vendor/, CORS policy); the app displays a clear message with the steps for the local server, instead of an inert interface (verified 2026-10-11). Firefox and Safari may have similar restrictions. Internet is needed the first time each model is used; after that the model is in the cache. KaTeX, Mermaid and Pyodide need internet on first use.
See also: VENDOR-README.md — Vendoring notes (what is bundled locally, how to go fully offline; in Romanian).
MIT — see the LICENSE file. The index.html header used to also say "TRADE-FREE LICENSE v1.0" (on condition that derivatives remain trade-free); it was unified (currently MIT), and the trade-free spirit remains an invitation, not a legal condition. The components in vendor/ remain under their own licenses (see "Third-party components").
2026-10-11 (round 2): license unified in the header (currently MIT); badges reworded; light theme fixed (the variables --sf, --sf2, --tx3 defined for body.light-mode: the suggestion buttons, kbd and the other surfaces no longer stay dark); the "Advanced parameters" panel (CSS left in an unused block) now hides correctly, with a true aria-hidden.
2026-10-10: verified in the browser (0 JS errors on load; no network requests leave on load) and the CSP in the page. Added accessible names, a note on the reliability of the models and the license notes above.
localStorage key (templates, personas, expanders) aborted the whole module at start-up (many functions undefined); persona names/descriptions from storage were inserted as HTML (now text); chat Markdown: $$…$$ display math showed a stray "KD0" placeholder and was mangled inside code blocks, _/* in inline code and URLs became italics, a NUL character in a message made loading a conversation fail; $5 and $10 is no longer treated as math; saved conversations now render KaTeX.localmind.*); existing data is migrated automatically at startup from the old key(s) (lm_*), and older .fff.json backups still import (fff-kit 1.2.0).Layout: the top bar no longer overflows between 769 and 1500 px (the last button was cut off at 1366 px); text fields at least 24 px high; read, star, voice and quick-reply buttons 44 px on coarse pointers. Re-audit at 360 and 1366 px: no target under 24 px and no text under 12 px.
vendor/ (same origin, SRI); the ONNX Runtime Web loaders too. The ONNX Runtime .wasm (23.5 MB, or 12.9 MB on Safari) and Pyodide 0.27.0 (.wasm 10.1 MB, stdlib, lock) stay out of the repository: they are fetched from pinned immutable URLs and SHA-256 verified before use (refused otherwise, then kept in Cache Storage and re-verified on every read); pyodide.js and pyodide.asm.js load with SRI.cdn.jsdelivr.net removed from style-src/font-src; script-src and connect-src list only the exact files. Added about 4 MB to the repository (see NOTICE.md). Models from Hugging Face stay unpinned (data, not code).fff-kit 1.1.4: touch targets and minimum text size. Touch targets/text fixed in the app.
fff-kit 1.1.2: PBKDF2 with 600,000 iterations, anti-clickjacking protection.
sw.js + manifest + icons (offline shell after the first visit) instead of the invalid blob: service worker; on Chrome Android, an experimental “Try anyway with Qwen2.5 0.5B (~300MB)” option instead of a hard block.FFF.pii), search across all conversations (FFF.search), encrypted copy (FFF.bundle), "nothing leaves" indicator, local model quality evaluation with confidence intervals; tests in tests/fff-r8.test.mjs. The major numbering v120 kept.onclick attribute, removed in the switch to the delegated dispatcher); it now uses data-prompt. Reproduced and verified in the browser.'unsafe-eval' remains (JS code execution and ONNX/WASM).onclick=, oninput= etc.; 242 distinct) were replaced with a single delegated dispatcher (data-on-* + a separate classic script, without eval/Function; for dynamically generated markup, the arguments pass through JSON data-args and only a fixed list of functions can be called). The CSP now has script-src by SHA-256 hash (two scripts), without 'unsafe-inline'; 'unsafe-eval' remains necessary for the "Run" function of the JavaScript code blocks and 'wasm-unsafe-eval' for ONNX Runtime.defaultPrevented were compared, before and after: 0 differences._highlightSearch, _seekTimelineDebounced, _checkPromptLength, _updateGhostText, _trackWPM, _checkExpander, _updateTypingTokens, _runGlobSearch) were defined only in the module, so the inline handlers threw ReferenceError (search with highlighting, the position slider in the conversation, global search and the typing checks did not run); they are now exposed on window.file:// the interface is no longer inert (ReferenceError doLoad/setTemp/useChip): transformers.js loads on demand (dynamic import), and "Încarcă Modelul" displays an explanatory message.exportAsHTML() template, is now in <head>/<body>; their functions are no longer inert, and the conversation title field no longer appears as a white rectangle.<h1> for the app title, <header>/<footer> and a label for the model ID field; 0 axe-core violations at 1280 and 360 px.onclick handlers (≈300) and eval/new Function from running code blocks remain (CSP allows 'unsafe-inline'); removing them requires a broader refactoring.Alexio — Alexandru-Ionuț Chiuță, contact: [email protected]
LocalMind is a browser-based chat UI for small language models (Qwen3, LFM2) running via transformers.js and WebGPU, with RAG over local documents, conversation branching, exports and a network audit panel. Models are downloaded once from huggingface.co; Pyodide and the ONNX Runtime .wasm load on demand from pinned cdn.jsdelivr.net URLs and are SHA-256 verified; transformers.js, pdf.js, KaTeX and Mermaid are vendored locally. Settings and chats live in localStorage (lm_ keys). UI is Romanian.