The source of drowse.ai: the browser edition of drowse, an interpretability workbench for activation steering and trait monitoring. The site runs the drowse dashboard with inference, steering, probes, SAE features, and the J-lens executing on the device through WebGPU. Prompts, conversations, and fitted artifacts never leave the browser.
| Path | What it holds |
|---|---|
drowse/ |
Submodule pinned to stdlogits/drowse: the shared dashboard source (drowse/webui/src), the Python reference implementation, and the parity goldens (drowse/tests/fixtures/browser) the browser runtime replays. |
webui/ |
The hosted shell (hosted/), site-only UI and runtime (src/), static assets (public-hosted/), build, release, and test scripts (scripts/), Playwright specs (e2e/), and the /api/contact Worker (contact-worker/). |
browser-runtime/ |
The WebGPU runtime: WebLLM/MLC forks and compiler, the Rust/WASM fitting kernel, runtime and distribution locks, and release inputs. |
tests/ |
Python tests for the browser-runtime build and validation tools. |
The hosted Vite config swaps the dashboard's HTTP runtime for the browser one
through the @runtime-* seams; site code imports shared modules by their path in
the submodule. ARCHITECTURE.md describes the runtime;
browser-runtime/README.md covers artifacts, locks,
and release.
Use Node 24.
git clone --recurse-submodules https://github.com/stdlogits/drowse.ai
cd drowse.ai
npm ci # one workspace install at the root
cd webui
npm run dev:hosted # hosted app dev server
npm run check # shared UI policy, landing, metadata, and WebMCP checks
npm run check:hosted # runtime, release-tool, and lock checks
npm run test:hosted # runtime tests and a preview build into dist-hosted/
npm run test:e2e # Playwright, against the dev and preview serversPython tooling and its tests run against the submodule:
pip install -e "./drowse[dev]"
pytestDashboard source shared with drowse serve lives in the drowse repository. Land
the change there, then move the pin here:
git -C drowse fetch origin && git -C drowse checkout <commit-on-main>
git add drowse && git commit -m "bump drowse to <commit>"Dependabot proposes the bump weekly. To try an unmerged drowse branch, check it
out inside drowse/; commit only pins that exist on drowse's main.
This repository builds an isolated Svelte PWA for the on-device WebGPU
edition. The runtime and distribution locks are verified, enabling installation
from the signed catalog after the browser's device checks pass. These release
checks do not guarantee that every GPU remains stable under model load.
The published model files
are available separately; their upload alone does not establish compatibility.
Base-model file links appear on the home page without a beta badge.
Gemma PT still has a matched-weight numerical discrepancy; Qwen 3.5 still needs
matched-quantization validation. Matching core packs and a signed installation
catalog also remain required. J-lens and SAE are optional for base-model setup.
The development fixture is deterministic test data, not real inference.
The device check shows the selected GPU vendor and architecture when the browser exposes them. Its short compute test is not a full model-load stress test. On Windows, an Intel adapter gets conditional guidance for selecting a dedicated GPU through the browser's Windows Graphics settings. Two recorded device losses since the last successful load block further loads on that device profile; changing models or context length does not bypass that block. Software fallback adapters remain unsupported, including in remote sessions without hardware WebGPU.
Windows Chromium on an identified Intel gen-9 adapter is conservatively blocked
before model loading following a reported GPU-process watchdog hang during
initialization. Other Intel generations retain a warning. Chrome on Windows
ignores WebGPU's powerPreference; Drowse cannot enumerate or select a hidden
dedicated GPU. On dual-GPU laptops, copy
chrome://flags/#force-high-performance-gpu into Chrome's address bar, enable it,
restart Chrome, and run the device check again. Confirm that the selected adapter
is the dedicated GPU. This changes GPU routing, not the GPU's memory capacity.
The hosted edition keeps prompts, conversations, activations, and fitted artifacts on the device. WebGPU is mandatory for inference; it does not fall back to cloud inference or CPU-only inference. The Python server and bundled dashboard in stdlogits/drowse remain supported alongside the hosted edition.
The repository builds and verifies static output; Cloudflare credentials, Pages projects, Access policy, DNS, and publication stay outside it. See browser-runtime/README.md and webui/hosted/README.md.
GNU AGPL v3 or later; see LICENSE. Report security issues as described in SECURITY.md.