Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
492 changes: 492 additions & 0 deletions .github/workflows/benchmark.yml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,8 @@ On macOS, update by hand: `git pull` then `make restart`.
- [docs/updating.md](docs/updating.md) — how updates and the weekly timer work.
- [docs/codex.md](docs/codex.md) — using Codex CLI with this server as the model.
- [docs/claude-code.md](docs/claude-code.md) — same for Claude Code, which also gets MCP.
- [docs/benchmarks.md](docs/benchmarks.md) — browser-agent benchmark findings, all in one place.
- [docs/benchmark-action.md](docs/benchmark-action.md) — the manual GitHub Actions job that runs the benchmark on the RTX worker.

## License

Expand Down
405 changes: 405 additions & 0 deletions bench-site/app.js

Large diffs are not rendered by default.

101 changes: 101 additions & 0 deletions bench-site/data/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
{
"schema": 1,
"runs": [
{
"schema": 1,
"run_id": "2026092501",
"created_utc": "2026-09-25T20:01:34+00:00",
"commit": "9f1c2ab",
"model": "qwen3.5-9b-q4_k_m",
"ctx": 32768,
"gpu": "RTX 3070 Ti",
"suites": {
"fixture": {
"passed": 1,
"total": 1,
"pass_rate": 100.0,
"median_seconds": 15.7,
"peak_vram_mib": 6269,
"peak_prompt_tokens": 4874,
"ctx": 32768,
"parallel": 1
},
"live_web": {
"passed": 1,
"total": 2,
"pass_rate": 50.0,
"median_seconds": 49.5,
"peak_vram_mib": 6120,
"peak_prompt_tokens": 11124,
"ctx": 32768,
"parallel": 1
}
},
"sample": true
},
{
"schema": 1,
"run_id": "2026092502",
"created_utc": "2026-09-25T21:10:00+00:00",
"commit": "b2ac901",
"model": "qwen3.5-9b-q4_k_m",
"ctx": 49152,
"gpu": "RTX 3070 Ti",
"suites": {
"concurrency_serial": {
"passed": 3,
"total": 4,
"pass_rate": 75.0,
"median_seconds": 16.3,
"peak_vram_mib": 6823,
"peak_prompt_tokens": 6801,
"ctx": 49152,
"parallel": 2
},
"concurrency_parallel": {
"passed": 2,
"total": 4,
"pass_rate": 50.0,
"median_seconds": 29.7,
"peak_vram_mib": 6823,
"peak_prompt_tokens": 6659,
"ctx": 49152,
"parallel": 2
}
},
"sample": true
},
{
"schema": 1,
"run_id": "2026092503",
"created_utc": "2026-09-26T05:50:24+00:00",
"commit": "c77e410",
"model": "qwen3.5-9b-q4_k_m",
"ctx": 65536,
"gpu": "RTX 3070 Ti",
"suites": {
"long_context": {
"passed": 1,
"total": 1,
"pass_rate": 100.0,
"median_seconds": 26.1,
"peak_vram_mib": 7323,
"peak_prompt_tokens": 59906,
"ctx": 65536,
"parallel": 1
},
"live_web": {
"passed": 2,
"total": 3,
"pass_rate": 66.7,
"median_seconds": 69.5,
"peak_vram_mib": 7100,
"peak_prompt_tokens": 11124,
"ctx": 65536,
"parallel": 1
}
},
"sample": true
}
]
}
38 changes: 38 additions & 0 deletions bench-site/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RTX benchmark dashboard</title>
<meta name="description" content="Manual GitHub Actions benchmark results for the local LLM browser agent, on RTX hardware.">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="page">

<header class="site-header">
<h1>RTX benchmark dashboard</h1>
<p id="header-note">Loading run data&hellip;</p>
</header>

<div id="app" role="main">
<!-- Filled in by app.js. Kept empty here so the page never ships
stale numbers baked into the HTML. -->
</div>

<footer class="site-footer">
Data from <code>data/index.json</code>, written by <code>tests/bench/collect.py</code>
after each manual run of the benchmark workflow.
</footer>

</div>

<noscript>
<p style="padding:16px;">This dashboard needs JavaScript to read
<code>data/index.json</code> and draw the charts. Enable JavaScript, or
open that file directly to see the raw numbers.</p>
</noscript>

<script src="app.js"></script>
</body>
</html>
Loading
Loading