No Server WebGPU

Run LLMs directly in the browser,
with no one listening in

Pick a model from Hugging Face, we build you the right link or embed snippet. Everything runs locally in your users' browser – no API keys, no tracking, no backend.

Get started

Privacy first

All inference happens on the user's device. No data ever leaves the browser.

WebGPU accelerated

Leverages the GPU via WebGPU for fast local inference – even on mid-range hardware.

Easy embedding

Copy-paste an iframe or use the dynamic JS snippet – integrate in seconds.

No server required

Host the page anywhere (even on Cloudflare Pages) – no backend, no maintenance.

Build your AI Widget

Configure the model, appearance, and behaviour – then copy the generated link.

Widget Settings

Enter a Hugging Face repo ID and load the available files. The rest is optional.

Live Preview

This is what the widget looks like when embedded with the current settings.

Enter at least a Hugging Face repo and a filename to see the preview here.

How to integrate the widget into your site

You have configured everything above and the generated link works. Now you probably want to embed it somewhere. There are a few ways – pick the one that fits your setup best.

Embed via iframe

This is the easiest way. Take the generated link and put it into an iframe. The widget automatically adapts to the available height and runs completely isolated.

<iframe src="YOUR_LINK_HERE" style="width:100%;height:600px;border:none;border-radius:12px;"></iframe>

Direct link

If you don't need embedding at all, just share the generated link. Anyone opening it gets the full-page widget – no distractions, just the chat interface.

Load dynamically via JavaScript

Create the iframe element dynamically and set the src to the generated link. Useful when the chat should appear after a button click or based on user input.

const iframe = document.createElement('iframe');
iframe.src = 'YOUR_LINK_HERE';
iframe.style.cssText = 'width:100%;height:600px;border:none;border-radius:12px;';
document.getElementById('my-container').appendChild(iframe);

Hosting on Cloudflare Pages

This entire page is a single HTML file. You can drop it directly into a Cloudflare Pages project (Git or direct upload). Cloudflare delivers it fast via CDN – the widget runs entirely client-side via WebGPU.

Performance note: The model is downloaded completely into the browser on first load. Depending on the model size, this can take a few seconds to several minutes. Progress is shown in the widget. After that, the model is cached and loads faster next time. Consider picking a smaller model (1–3B, quantized) if you don't want users to wait too long.

All URL parameters at a glance

If you prefer to build the URL by hand, here are all parameters the widget understands. Only repo and file are truly required.

repo              — Hugging Face Repository, e.g. bartowski/Llama-3.2-1B-Instruct-GGUF
file              — Filename in the repo, e.g. Llama-3.2-1B-Instruct-Q4_K_M.gguf
title             — Title in the widget header
icon              — Emoji in the widget header
placeholder       — Placeholder text in the input field
theme             — dark or light
autoload          — true or false, load model automatically
header            — true or false, show header
greeting          — Greeting text from the AI
system            — System Prompt
ctx               — Context length in tokens (default: 8192)
maxTokens         — Maximum output tokens (default: 2048)
temp              — Temperature (default: 0.7)
topP              — Top P (default: 0.95)
topK              — Top K (default: 40)
repPenalty        — Repetition Penalty (default: 1.1)
settings          — true or false, show settings button
systemChange      — true or false, user can change system prompt
allowModelChange  — false, suggest, or free (user can change model repo)
allowQuantChange  — false, suggest, or free (user can change quantization file)
hideSettings      — Comma-separated: temp,topp,topk,reppenalty,maxtokens,ctx,system