jevosaurus / index.html
shreyask's picture
Phones: GLiNER2.5-Decide mobile build (345 MB, 4-bit embeddings)
df33c97 verified
Raw History Blame Contribute Delete
5.72 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Jevosaurus</title>
<meta name="description" content="Jevosaurus: a decision model plays the Chrome dino game in your browser, one typed question per obstacle, on WebGPU." />
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='3' y='3' width='9' height='10' rx='1' fill='%23222'/%3E%3Crect x='9' y='5' width='2' height='2' fill='white'/%3E%3C/svg%3E" />
<script type="module" crossorigin src="./assets/index-Dz52YwRk.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-Csar6lly.css">
</head>
<body>
<header>
<h1>Jevosaurus</h1>
<p>Meet Jevosaurus, a dino run by a small decision model. It plays the Chrome dino game. Each time an obstacle comes near, the game is described in a few lines of text and the model answers one question: <em>jump, duck or keep running?</em> Everything runs in this tab on WebGPU.</p>
</header>
<main>
<section class="controls">
<label>Player
<select id="player">
<option value="model">A model</option>
<option value="rule">The rule, as code</option>
<option value="you">You</option>
</select>
</label>
<label>Model
<select id="model">
<option value="gliner2-decide">GLiNER2.5-Decide</option>
<option value="onnx-community/GLiNER2.5-Decide-mobile-ONNX">GLiNER2.5-Decide · phone (345 MB)</option>
<option value="kev-0.6b">Kev 0.6B</option>
<option value="open-jev">open-jev</option>
<option value="julia-1">Julia 1</option>
<option value="laya">Laya</option>
<option value="decision2-kai-0.6b">Decision 2.0 Kai</option>
<option value="decision2-eos-0.8b">Decision 2.0 Eos</option>
<option value="strands-decider-2b">Strands Decider 2B</option>
<option value="kev-4b">Kev 4B</option>
</select>
</label>
<label>Timing
<select id="mode">
<option value="realtime">Real time: the game waits for no one</option>
<option value="turns">Turn-based: pause while the model thinks</option>
<option value="obstacle">Per obstacle: two questions each, best on phones</option>
</select>
</label>
<label>Prompt
<select id="style">
<option value="words">Words: "it is very close"</option>
<option value="numbers">Numbers: "it reaches the dino in 0.18 s"</option>
</select>
</label>
<button id="start">Start</button>
</section>
<p id="status" class="muted">Pick a player and press Start (or Space).</p>
<canvas id="game" width="800" height="200" aria-label="Jevosaurus game"></canvas>
<section class="stats">
<div><span class="muted">Score</span><strong id="score">0</strong></div>
<div><span class="muted">Best</span><strong id="best">–</strong></div>
<div><span class="muted">Decisions</span><strong id="decisions">0</strong></div>
<div><span class="muted">Median latency</span><strong id="latency">–</strong></div>
</section>
<section class="panes">
<div>
<h2>What the model reads</h2>
<pre id="state" class="muted">—</pre>
</div>
<div>
<h2>Its answer</h2>
<div id="answer"></div>
</div>
</section>
<section id="index" class="index">
<div class="index-head">
<h2 class="big">Jevosaurus Index</h2>
<p class="muted">Every model plays the same three seeded courses with the word prompt, up to 60 seconds each. <strong>Real time</strong>: the game keeps running while the model thinks, so speed matters. <strong>Turn-based</strong>: every answer lands instantly, so only judgment counts. Scores are averaged over the courses.</p>
<p id="index-meta" class="muted small"></p>
</div>
<div class="race-bar">
<div id="race-seeds" class="chips"></div>
<button id="race-play" class="secondary">Play</button>
<label class="inline">Speed
<select id="race-speed"><option value="1">1×</option><option value="2">2×</option><option value="4">4×</option></select>
</label>
<span id="race-time" class="muted small"></span>
</div>
<canvas id="race" width="800" height="320" aria-label="All models on the same course"></canvas>
<table class="leaderboard">
<thead><tr><th>#</th><th>Player</th><th class="num">Real time</th><th class="num">Turn-based</th><th class="num">Latency</th><th class="num">Size</th></tr></thead>
<tbody id="index-rows"></tbody>
</table>
<div class="race-bar">
<button id="index-run" class="secondary">Run it on your GPU</button>
<span id="index-status" class="muted small">Downloads every model once (about 6 GB) and takes several minutes.</span>
</div>
</section>
<section>
<h2>Best runs in this browser</h2>
<table>
<thead><tr><th>Player</th><th>Score</th><th>Median latency</th></tr></thead>
<tbody id="runs"></tbody>
</table>
</section>
</main>
<footer class="muted">
Models run with <a href="https://github.com/nico-martin/open-jev">open-jev</a> and Transformers.js. The dashed line marks a quarter second ahead of the dino, where the question's descriptions say to act.
</footer>
</body>
</html>