The WebGPU build of kev-0.6b-browser-use: merged and 4-bit, 348 MB, loads with open-jev and Transformers.js.
A tiny 0.6B Jev-like model, fine-tuned from Kev-0.6B for browser use. It follows the graph layout of onnx-community/kev-0.6b-ONNX.
npm install open-jev @huggingface/transformers
import { OpenJev, choice } from "open-jev";
const kev = await OpenJev.load({ model: "arbazsiddiqui/kev-0.6b-browser-use-ONNX", dtype: "q4f16" });
const state = `Goal: Type "Alan Turing" into the search box
Candidate elements:
[0] <a> role=None "Main page"
[1] <input> role=searchbox "Search Wikipedia"
[2] <button> role=None "Search"`;
const { element, operation } = await kev.decide(state, {
element: choice("Which element should be acted on?", [
'[0] <a> "Main page"',
'[1] <input> "Search Wikipedia"',
'[2] <button> "Search"',
]),
operation: choice("What operation should be performed on the target element?", ["CLICK", "TYPE", "SELECT"]),
});
element.choice; // '[1] <input> "Search Wikipedia"', confidence 0.93
operation.choice; // "TYPE", confidence 0.74
Without open-jev: the graph takes input_ids and attention_mask built with Kev's five delimiter tokens (listed under kev in config.json) and returns one logit per token. Read the logit at each option's closing delimiter and softmax within each question. open-jev's source is the reference encoder.
| file | size |
|---|---|
onnx/model_q4f16.onnx + onnx/model_q4f16.onnx_data | 348 MB |
Qwen/Qwen3-0.6B-Base, LoRA r=16 merged, pointer head dim 256.github.com/jaredpalmer/kev).train/export_kev_onnx.py in
github.com/arbazsiddiqui/kev-browser-use, following the graph layout of
onnx-community/kev-0.6b-ONNX.Apache-2.0 for the adapter and head. The base model is Apache-2.0 (Qwen3).
The WebGPU build of kev-0.6b-browser-use: merged and 4-bit, 348 MB, loads with open-jev and Transformers.js.
A tiny 0.6B Jev-like model, fine-tuned from Kev-0.6B for browser use. It follows the graph layout of onnx-community/kev-0.6b-ONNX.
npm install open-jev @huggingface/transformers
import { OpenJev, choice } from "open-jev";
const kev = await OpenJev.load({ model: "arbazsiddiqui/kev-0.6b-browser-use-ONNX", dtype: "q4f16" });
const state = `Goal: Type "Alan Turing" into the search box
Candidate elements:
[0] <a> role=None "Main page"
[1] <input> role=searchbox "Search Wikipedia"
[2] <button> role=None "Search"`;
const { element, operation } = await kev.decide(state, {
element: choice("Which element should be acted on?", [
'[0] <a> "Main page"',
'[1] <input> "Search Wikipedia"',
'[2] <button> "Search"',
]),
operation: choice("What operation should be performed on the target element?", ["CLICK", "TYPE", "SELECT"]),
});
element.choice; // '[1] <input> "Search Wikipedia"', confidence 0.93
operation.choice; // "TYPE", confidence 0.74
Without open-jev: the graph takes input_ids and attention_mask built with Kev's five delimiter tokens (listed under kev in config.json) and returns one logit per token. Read the logit at each option's closing delimiter and softmax within each question. open-jev's source is the reference encoder.
| file | size |
|---|---|
onnx/model_q4f16.onnx + onnx/model_q4f16.onnx_data | 348 MB |
Qwen/Qwen3-0.6B-Base, LoRA r=16 merged, pointer head dim 256.github.com/jaredpalmer/kev).train/export_kev_onnx.py in
github.com/arbazsiddiqui/kev-browser-use, following the graph layout of
onnx-community/kev-0.6b-ONNX.Apache-2.0 for the adapter and head. The base model is Apache-2.0 (Qwen3).