@wendellresearch-ai/benchwarmers 0.5.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/logo-dark.svg +49 -0
- package/.github/logo.svg +49 -0
- package/BENCHMARKS.md +160 -0
- package/GATEWAY.md +33 -11
- package/PRIVACY.md +20 -6
- package/README.md +46 -11
- package/SECURITY.md +20 -10
- package/USAGE.md +81 -11
- package/VERSION +1 -1
- package/gateway.py +93 -82
- package/metrics/bench_collections.py +27 -3
- package/metrics/catalog.py +52 -4
- package/metrics/client.py +51 -1
- package/metrics/connect.py +225 -0
- package/metrics/decide.py +720 -31
- package/metrics/endpoints.py +9 -7
- package/metrics/guard.py +6 -4
- package/metrics/learn.py +264 -10
- package/metrics/ledger.py +3 -1
- package/metrics/locked.py +102 -1
- package/metrics/offload.py +36 -19
- package/metrics/pacing.py +8 -1
- package/metrics/quotaview.py +19 -5
- package/metrics/route.py +9 -1
- package/metrics/scheduler.py +11 -1
- package/metrics/test_decide.py +299 -7
- package/metrics/wrong.py +21 -9
- package/package.json +3 -1
- package/scripts/auto_retire.py +96 -21
- package/scripts/onboard.py +51 -4
- package/scripts/test_connect.py +152 -3
- package/scripts/test_first_run.py +4 -2
- package/scripts/test_formats.py +39 -0
- package/scripts/test_quota.py +27 -0
- package/scripts/test_serve_edit.py +308 -4
- package/serve.py +1721 -145
- package/suite/README.md +5 -2
- package/suite/run.py +226 -6
- package/suite/test_pick.py +15 -0
- package/suite/test_score.py +82 -1
- package/ui/bench.css +44 -0
- package/ui/bench.js +933 -203
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ with [AGENTS.md](AGENTS.md).
|
|
|
99
99
|
|
|
100
100
|
## Try it
|
|
101
101
|
|
|
102
|
-
**
|
|
102
|
+
**Pre-1.0, early.** It runs with Python 3.11 or later on Windows, macOS and
|
|
103
103
|
Linux, from PyPI, npm, a checkout or Docker. Expect rough edges, and read the
|
|
104
104
|
code where these pages are thin.
|
|
105
105
|
|
|
@@ -145,6 +145,10 @@ dependencies either way: the app is the Python standard library.
|
|
|
145
145
|
its key, which goes to the key file in llm's user folder (`keys.json`,
|
|
146
146
|
shared with the `llm` CLI if you have it, not needed otherwise), never into
|
|
147
147
|
the data folder. `BENCHWARMERS_KEY_<NAME>` in the environment works too.
|
|
148
|
+
To move an install to another machine, Settings → Export and import takes
|
|
149
|
+
the folder as one .zip (settings only, or everything; the endpoints' keys
|
|
150
|
+
only if you tick them) and imports it on the other install, saving what it
|
|
151
|
+
replaces to `backups/` first.
|
|
148
152
|
|
|
149
153
|
3. **Start the dashboard.** With no endpoint yet it opens on adding one: sign
|
|
150
154
|
in with a provider on its own page (OpenRouter, NanoGPT, Hugging Face,
|
|
@@ -153,7 +157,10 @@ dependencies either way: the app is the Python standard library.
|
|
|
153
157
|
LiteLLM included. Anthropic and Gemini keys can also be called through
|
|
154
158
|
those providers' own APIs (the API choice in the same dialog). Only providers that publish a sign-in for other apps are
|
|
155
159
|
offered; adding one is an entry in `metrics/connect.py` (its docstring says
|
|
156
|
-
how).
|
|
160
|
+
how). A model server already running on this machine, at its usual port or
|
|
161
|
+
any other its process is listening on (Ollama, LM Studio, Jan, llama.cpp,
|
|
162
|
+
LocalAI, vLLM, LiteLLM, CLI Proxy API, OmniRoute), is offered under "Found
|
|
163
|
+
on this machine", its address and kind filled in.
|
|
157
164
|
|
|
158
165
|
python serve.py # http://localhost:8122
|
|
159
166
|
|
|
@@ -195,6 +202,18 @@ dependencies either way: the app is the Python standard library.
|
|
|
195
202
|
that is only out of quota until a stated reset is not counted against. The
|
|
196
203
|
built-in scheduler runs all of this once Settings switches it on; a fresh
|
|
197
204
|
install spends no calls until then.
|
|
205
|
+
- **Benchmarks.** One page of reports: bugs found against false alarms, who
|
|
206
|
+
is confidently wrong, real work that helped, each model against its own
|
|
207
|
+
earlier scores (Trend), whether each provider was there when the bench
|
|
208
|
+
called it (Uptime: busy, unreachable and timed out count as down; your own
|
|
209
|
+
quota and pacing are left out), and speed. Each report shares as an image or
|
|
210
|
+
its table. [BENCHMARKS.md](BENCHMARKS.md) says how to read them.
|
|
211
|
+
- **Decision models.** A model that answers typed questions with a
|
|
212
|
+
probability (Mercury Decide, say) labels a request's shape, picks a
|
|
213
|
+
collection for a request that names none (when it is sure, and the reply
|
|
214
|
+
says so), and classes an error no rule knows. Each is measured daily on
|
|
215
|
+
questions the bench's own data answers, and each use asks the one that does
|
|
216
|
+
best.
|
|
198
217
|
- **Rate limits and usage.** Limits come from providers' rate-limit headers
|
|
199
218
|
and error messages, and from what you set per connection or model
|
|
200
219
|
(requests a minute, day or month; tokens a minute or day). They are kept per
|
|
@@ -394,6 +413,13 @@ points at it with `ANTHROPIC_BASE_URL=http://127.0.0.1:8122` and
|
|
|
394
413
|
OpenAI-, Responses- or Ollama-speaking agents with the same base URL.
|
|
395
414
|
[GATEWAY.md](GATEWAY.md), "Route mode", has the set-up and the limits.
|
|
396
415
|
|
|
416
|
+
**Ready set-ups.** The dashboard's **Clients** page (Gateway) gives each
|
|
417
|
+
popular app's configuration, filled in from your install's address,
|
|
418
|
+
collections and MCP server, with a Copy button: opencode, VS Code chat, Codex
|
|
419
|
+
CLI, Zed, Continue, Cline and Kilo Code, Claude Code, goose, and chat apps
|
|
420
|
+
(LobeHub, AnythingLLM, Cherry Studio, Chatbox, LibreChat). Where keys are
|
|
421
|
+
asked for, it makes one and fills it in, never into a file that may sync.
|
|
422
|
+
|
|
397
423
|
<!-- The MCP Registry's proof that the PyPI package is this server (server.json):
|
|
398
424
|
mcp-name: io.github.WendellResearch-AI/benchwarmers -->
|
|
399
425
|
|
|
@@ -446,8 +472,10 @@ reaches Wendell Research. What it sends, and where:
|
|
|
446
472
|
|
|
447
473
|
- **Your prompts**, only to the endpoints you add: a provider, an aggregator,
|
|
448
474
|
a hub such as Open WebUI, or a local runtime. That includes the probes, the
|
|
449
|
-
suite and onboarding, which spend calls on your keys
|
|
450
|
-
|
|
475
|
+
suite and onboarding, which spend calls on your keys, and the decision
|
|
476
|
+
models' daily benchmark, which puts past requests, judged answers and
|
|
477
|
+
redacted error text to them again. Add only endpoints you are content to
|
|
478
|
+
send that work to.
|
|
451
479
|
- **Catalog reads**, no key and nothing of yours: FreeLLMAPI (its feed and
|
|
452
480
|
its site's sitemap) and models.dev once a day, and OpenRouter's public
|
|
453
481
|
model list. With an NVIDIA connection, the public file of rate limits
|
|
@@ -462,12 +490,18 @@ reaches Wendell Research. What it sends, and where:
|
|
|
462
490
|
API asks each sign-in's own provider for its quota.
|
|
463
491
|
- **Charts**: the dashboard's browser page loads Observable Plot from jsDelivr
|
|
464
492
|
at a pinned version.
|
|
493
|
+
- **Posts**, only when you click Post on X, Bluesky, LinkedIn or Reddit in a
|
|
494
|
+
report's Share menu: that site opens in your browser with the report's name
|
|
495
|
+
and the project's link. The image goes only to your clipboard, a file, or
|
|
496
|
+
the app you pick in your system's share sheet.
|
|
465
497
|
- **Seeding real-bug tasks**, only when you run `suite/rebench.py`: the
|
|
466
498
|
SWE-rebench-V2 rows from Hugging Face and the files from GitHub.
|
|
467
499
|
|
|
468
500
|
Keys stay in the environment or llm's key file (`keys.json` in its user
|
|
469
|
-
folder),
|
|
470
|
-
|
|
501
|
+
folder), not in the data folder. An export (Settings, Export and import)
|
|
502
|
+
carries them only if you tick them, and an import that carries keys first
|
|
503
|
+
backs up the ones it replaces, in the data folder's `backups/`.
|
|
504
|
+
[PRIVACY.md](PRIVACY.md) and [SECURITY.md](SECURITY.md) have the detail.
|
|
471
505
|
|
|
472
506
|
## Limits
|
|
473
507
|
|
|
@@ -475,8 +509,8 @@ detail.
|
|
|
475
509
|
with tools is refused there, not trimmed. Route mode passes turns only to
|
|
476
510
|
members on chat-completions endpoints, keeps its sticky conversations in
|
|
477
511
|
memory (a restart starts each on a fresh pick), and has been run end to end
|
|
478
|
-
with Claude Code; the
|
|
479
|
-
|
|
512
|
+
with Claude Code; the other set-ups on the Clients page are written from
|
|
513
|
+
each app's docs, not run. Shadow seats (other members answering an agent's turn for
|
|
480
514
|
evaluation) are planned, not built.
|
|
481
515
|
- **Some parts are checked against fakes only.** The native Anthropic and
|
|
482
516
|
Gemini endpoints, and the LiteLLM and CLI Proxy API hub adapters, are built
|
|
@@ -486,9 +520,10 @@ detail.
|
|
|
486
520
|
seats before it stream as they finish.
|
|
487
521
|
- **Pacing and the ledger cover the built-in client.** Calls made through the
|
|
488
522
|
`llm` CLI, when you choose it, are neither paced nor counted.
|
|
489
|
-
- **Calls cost.** Probes, onboarding
|
|
490
|
-
tiers. Onboarding runs one model at a time for
|
|
491
|
-
the suite over the scheduled passes); a suite
|
|
523
|
+
- **Calls cost.** Probes, onboarding, the suite and the decision benchmark
|
|
524
|
+
run on your keys and free tiers. Onboarding runs one model at a time for
|
|
525
|
+
that reason (Quick spreads the suite over the scheduled passes); a suite
|
|
526
|
+
pass is paced, not burst.
|
|
492
527
|
- **The scheduler lives in the server.** Its jobs run while the dashboard (or
|
|
493
528
|
the container, or the service) is up; a missed run is made up once, within
|
|
494
529
|
seven days, when it comes back.
|
package/SECURITY.md
CHANGED
|
@@ -24,8 +24,9 @@ reproduce, and what an attacker gains.
|
|
|
24
24
|
**On this machine by default.** The dashboard (`serve.py`, port 8122) and the
|
|
25
25
|
gateway (on the same port at `/v1`, or alone with `gateway.py` on 8123) listen
|
|
26
26
|
on 127.0.0.1. Every request is checked for the server's own host name (against
|
|
27
|
-
DNS rebinding), and every write must be a same-origin
|
|
28
|
-
|
|
27
|
+
DNS rebinding), and every write must be a same-origin request with a JSON
|
|
28
|
+
body (a zip, for an import), a type no plain form can send, so a web page
|
|
29
|
+
open in your browser cannot drive either server. With no admin token
|
|
29
30
|
there is no login and the gateway asks for no key.
|
|
30
31
|
|
|
31
32
|
**Anywhere else, only with a login.** To listen beyond this machine
|
|
@@ -60,15 +61,24 @@ open itself to anyone.
|
|
|
60
61
|
- **Keys.** Endpoint keys come from `BENCHWARMERS_KEY_<NAME>` (the key name
|
|
61
62
|
upper-cased, `-` as `_`) first, then from llm's key file (`keys.json` in
|
|
62
63
|
its user folder, used whether or not the `llm` CLI is installed). They are
|
|
63
|
-
never
|
|
64
|
-
|
|
64
|
+
never shown back and never put in a log. Sign-ins through a provider's page
|
|
65
|
+
store their token the same way.
|
|
66
|
+
- **Exports.** Settings, Export and import, puts the endpoints' stored keys
|
|
67
|
+
(key, admin key, refresh token; never one from the environment) in an
|
|
68
|
+
export only when you tick them, in plain text in its `keys.json`: keep that
|
|
69
|
+
file like a password and delete it once imported. Importing one puts its
|
|
70
|
+
keys in the key store, and first backs up this install's own, with its files,
|
|
71
|
+
to the data folder's `backups/before-import-<time>.zip`. An import is
|
|
72
|
+
refused whole if any file in it would land outside its scope's folders.
|
|
65
73
|
- **The network.** Your prompts go only to the endpoints you add; the probes,
|
|
66
|
-
the suite and
|
|
67
|
-
reads (models.dev, FreeLLMAPI, OpenRouter's model
|
|
68
|
-
connection's model list (through Open WebUI, with its
|
|
69
|
-
sign-in page when you choose one, Observable Plot from
|
|
70
|
-
dashboard's page,
|
|
71
|
-
|
|
74
|
+
the suite, onboarding and the decision benchmark spend calls there too.
|
|
75
|
+
Otherwise: public catalog reads (models.dev, FreeLLMAPI, OpenRouter's model
|
|
76
|
+
list), each Open WebUI connection's model list (through Open WebUI, with its
|
|
77
|
+
key), a provider's sign-in page when you choose one, Observable Plot from
|
|
78
|
+
jsDelivr in the dashboard's page, the site a report's Share menu posts to
|
|
79
|
+
when you choose one (opened with the report's name and the project's link
|
|
80
|
+
only), and Hugging Face and GitHub only when you run `suite/rebench.py`.
|
|
81
|
+
[PRIVACY.md](PRIVACY.md) lists them.
|
|
72
82
|
- **Files.** It writes inside its data folder (`BENCHWARMERS_HOME`, or the
|
|
73
83
|
folder `.benchwarmers-home` names) and, in llm's user folder, the key file
|
|
74
84
|
(when you paste a key or sign in) and the model list (when it registers a
|
package/USAGE.md
CHANGED
|
@@ -13,6 +13,7 @@ coding agent doing it with you); the gateway's whole contract is in
|
|
|
13
13
|
- [Collections](#collections)
|
|
14
14
|
- [Connecting an app](#connecting-an-app)
|
|
15
15
|
- [Recording verdicts](#recording-verdicts)
|
|
16
|
+
- [Benchmarks, and sharing a report](#benchmarks-and-sharing-a-report)
|
|
16
17
|
- [Discover: finding models to add](#discover-finding-models-to-add)
|
|
17
18
|
- [Quota management](#quota-management)
|
|
18
19
|
- [The scheduler](#the-scheduler)
|
|
@@ -24,17 +25,24 @@ coding agent doing it with you); the gateway's whole contract is in
|
|
|
24
25
|
|
|
25
26
|
| Group | Page | What it is for |
|
|
26
27
|
| --- | --- | --- |
|
|
27
|
-
| Observe | **At a glance** | Every model on the bench: whether it works right now, its role, and its connection. Click a name for its popup: role, alias, facts, options, retire. |
|
|
28
|
+
| Observe | **At a glance** | Every model on the bench: whether it works right now, its uptime over 7 days, its role, and its connection. Click a name for its popup: role, alias, facts, options, retire. |
|
|
28
29
|
| | **Action needed** | What will not fix itself, by the connection it comes from, with Retry and Retire on each model. |
|
|
29
|
-
| | **Benchmarks** | How models do on the suite and on real work: bugs found against false alarms, who is confidently wrong, and
|
|
30
|
+
| | **Benchmarks** | How models do on the suite and on real work: bugs found against false alarms, who is confidently wrong, each model against its own earlier scores, uptime, speed, and the decision models. Each report shares as an image or its table. |
|
|
30
31
|
| | **Quota management** | A tile per provider: what is left, when it resets, and which of its models are resting. Then the week's resets, and what the bench sent. |
|
|
31
32
|
| | **Logs** | Gateway calls (who sat and how it went, never the prompt), changes made from the dashboard, the scheduler, and onboarding runs. |
|
|
32
|
-
| Gateway | **Endpoints** | Where models are served from. Add an endpoint (a provider's sign-in, or any OpenAI-compatible API key), change a key, and see what each one serves. Also your own app registrations and rate limits per connection. |
|
|
33
|
+
| Gateway | **Endpoints** | Where models are served from. Add an endpoint (a provider's sign-in, or any OpenAI-compatible API key), change a key, and see what each one serves. A model server running on this machine, at its usual port or any other its process is listening on (LM Studio, Jan, llama.cpp, vLLM and the like), is offered under Found on this machine: Add opens the dialog with it filled in, to test and save. Also your own app registrations and rate limits per connection. |
|
|
33
34
|
| | **Models** | Every model on the bench, by the connection it comes from. |
|
|
34
35
|
| | **Collections** | The named panels your apps ask for, and the gateway's settings. |
|
|
36
|
+
| | **Clients** | Each popular app's set-up (opencode, VS Code, Codex, Zed, Continue, Cline, Kilo Code, Claude Code, goose, chat apps), filled in from this install, with Copy and a gateway key made on the spot. |
|
|
35
37
|
| | **Discover** | Models worth adding, from public catalogs, with the ways this install can reach each one. |
|
|
36
|
-
| Control | **Settings** | Theme, gateway keys, the scheduler, the model client, providers whose free models work only in their own app, how the install is reached (shown only), and Restart. |
|
|
37
|
-
| | **Info** |
|
|
38
|
+
| Control | **Settings** | Theme, gateway keys, the scheduler, the model client, providers whose free models work only in their own app, export and import, how the install is reached (shown only), and Restart. |
|
|
39
|
+
| | **Info** | The source repository, the version (linking its release), Python, data folder and counts. |
|
|
40
|
+
|
|
41
|
+
The page shown follows the data: while it is in view it checks every 10
|
|
42
|
+
seconds, and when something has changed it swaps in the new page in place,
|
|
43
|
+
keeping open sections, sorting and filters. It waits while you are at work on
|
|
44
|
+
it (a popup open, a form not saved or in use, text selected, a chart hovered),
|
|
45
|
+
and **New results · Show**, top right, offers the change instead.
|
|
38
46
|
|
|
39
47
|
**Action needed** lists what will not fix itself, such as a model about to be
|
|
40
48
|
retired, grouped by the connection it comes from, since one cause usually
|
|
@@ -108,7 +116,9 @@ unavailable, so the daily probe keeps watching it.
|
|
|
108
116
|
`code`, `light` (small and fast), `vision` (reads images well, weak at text:
|
|
109
117
|
OCR and document models; seated only when a request carries images) or
|
|
110
118
|
`image` (makes images; never seated). A model that reads images and does
|
|
111
|
-
everything else well stays `general`.
|
|
119
|
+
everything else well stays `general`. Where a decision model is onboarded,
|
|
120
|
+
onboarding asks it to suggest a new chat model's role; the popup shows the
|
|
121
|
+
suggestion, and nothing applies it.
|
|
112
122
|
|
|
113
123
|
## Collections
|
|
114
124
|
|
|
@@ -135,8 +145,18 @@ empty, it follows those settings. A member out of quota stays on the collection
|
|
|
135
145
|
and an explorer sits in for it, named `stand-in for <member>`, until the quota
|
|
136
146
|
is back. Max explorers 0 means only the members ever run, stand-ins included.
|
|
137
147
|
|
|
148
|
+
Gateway settings also says whether a request that names no collection is given
|
|
149
|
+
one by a decision model, and how sure that model must be (GATEWAY.md, "No
|
|
150
|
+
default collection").
|
|
151
|
+
|
|
138
152
|
## Connecting an app
|
|
139
153
|
|
|
154
|
+
The dashboard's **Clients** page has a ready set-up for each popular app,
|
|
155
|
+
filled in from this install (its address, collections and MCP server): copy it
|
|
156
|
+
into the file or screen it names. When keys are asked for, it makes one on the
|
|
157
|
+
spot and fills it in where a key goes, never into a file that may sync. What
|
|
158
|
+
follows is the same by hand.
|
|
159
|
+
|
|
140
160
|
Any OpenAI-compatible client works. Point it at the dashboard's port and ask
|
|
141
161
|
for the model `bench/<collection>`:
|
|
142
162
|
|
|
@@ -197,7 +217,8 @@ claude
|
|
|
197
217
|
|
|
198
218
|
Each conversation is one offload per model that answered it; a verdict is
|
|
199
219
|
optional, and the Gateway card lists route conversations apart from the
|
|
200
|
-
panels.
|
|
220
|
+
panels. The Clients page has the other agents' set-ups; GATEWAY.md, "Route
|
|
221
|
+
mode", has the limits.
|
|
201
222
|
|
|
202
223
|
**A coding agent** connects over MCP instead: the Claude Code plugin
|
|
203
224
|
(`/plugin marketplace add WendellResearch-AI/benchwarmers`, then
|
|
@@ -229,6 +250,33 @@ claims feed **Confidently wrong** on Benchmarks, and verdicts together decide
|
|
|
229
250
|
who sits on the next panel. Agreement between models is not evidence: they
|
|
230
251
|
are often wrong together.
|
|
231
252
|
|
|
253
|
+
## Benchmarks, and sharing a report
|
|
254
|
+
|
|
255
|
+
**Benchmarks** is one report after another: who to trust with a review, bug
|
|
256
|
+
hunt, real work, confidently wrong, our code, vision, trend, uptime,
|
|
257
|
+
performance and the decision models, then links to public leaderboards. Most
|
|
258
|
+
have a chart, the table folded under it (with a filter, and **Show
|
|
259
|
+
retired**), and **How to read this**;
|
|
260
|
+
[BENCHMARKS.md](BENCHMARKS.md) has the same explanations in one place.
|
|
261
|
+
**Trend** (30 or 60 days) and **Uptime** (7 or 30) have a window to choose.
|
|
262
|
+
|
|
263
|
+
**Share**, top right of each report:
|
|
264
|
+
|
|
265
|
+
- **Copy image** / **Download image**: the report's charts, title and the line
|
|
266
|
+
under it, with a band at the foot holding the logo, the project's link and
|
|
267
|
+
the date, as a PNG at twice the size shown. The table, the key and the
|
|
268
|
+
controls stay out; a window you chose shows as its words.
|
|
269
|
+
- **Copy table as Markdown** / **Download table as CSV**: the table as shown
|
|
270
|
+
(its window, filter and Show retired), a model's connection in brackets.
|
|
271
|
+
- **Share…**: your system's share sheet, with the image.
|
|
272
|
+
- **Post on** X, Bluesky, LinkedIn or Reddit: the image goes on the clipboard
|
|
273
|
+
(or is saved, where there is no clipboard), then the site opens with the
|
|
274
|
+
report's name and the project's link, for you to paste the image into.
|
|
275
|
+
|
|
276
|
+
What your browser cannot do is not offered: copying needs a secure page
|
|
277
|
+
(`localhost` is one; a LAN address over plain http is not), and Share… needs
|
|
278
|
+
a share sheet.
|
|
279
|
+
|
|
232
280
|
## Discover: finding models to add
|
|
233
281
|
|
|
234
282
|
**Discover** leads with FreeLLMAPI's catalog of free tiers and fills in from
|
|
@@ -266,7 +314,8 @@ limit is that model's own:
|
|
|
266
314
|
- **Pool**: OpenRouter's free requests a day, shared by its models, with a bar
|
|
267
315
|
per key, against the limit OpenRouter stated in a rate-limit reply.
|
|
268
316
|
- **Caps**: a day or month cap, counted from the bench's own calls: one you set
|
|
269
|
-
on Endpoints (Rate limits per connection), else
|
|
317
|
+
on Endpoints (Rate limits per connection), else a day cap the bench learned
|
|
318
|
+
for the connection (below), else one the provider states in
|
|
270
319
|
its replies without saying what is left (a Cohere trial key's 1,000 calls a
|
|
271
320
|
month), shown but not enforced until you set it. Calls made elsewhere with
|
|
272
321
|
the same key are not in the count.
|
|
@@ -275,7 +324,14 @@ limit is that model's own:
|
|
|
275
324
|
|
|
276
325
|
Nothing is taken from a provider's docs, which can change without notice; a
|
|
277
326
|
limit a provider states in a rate-limit error (UnoRouter's "allows 1
|
|
278
|
-
request(s) every 1 min" for a model) is learned and kept to.
|
|
327
|
+
request(s) every 1 min" for a model) is learned and kept to. When the error
|
|
328
|
+
names no number (Cloudflare Workers AI's, once the day's free Neurons are
|
|
329
|
+
gone), the requests the bench had sent on that connection in that minute or
|
|
330
|
+
day are taken as the connection's limit: noted the first time, kept to once a
|
|
331
|
+
second refusal lands near the same count, unless you set your own for that
|
|
332
|
+
connection on Endpoints, where each learned limit is shown with a Forget
|
|
333
|
+
button. A learned rate limit not met again for 14 days is forgotten, so a
|
|
334
|
+
raised limit is found. One exception,
|
|
279
335
|
watched: NVIDIA states no limit per key, so its tile reads the file
|
|
280
336
|
build.nvidia.com's own badge reads (10,000 requests a day, up to 40 a minute,
|
|
281
337
|
the same for every account) daily and on Refresh, and counts the bench's
|
|
@@ -319,8 +375,9 @@ Under the tiles are:
|
|
|
319
375
|
## The scheduler
|
|
320
376
|
|
|
321
377
|
The recurring jobs (the morning availability probe, the catalog refresh, the
|
|
322
|
-
deprecation check and auto-retire, suite passes, the
|
|
323
|
-
capability tests) run inside the dashboard.
|
|
378
|
+
deprecation check and auto-retire, suite passes, the decision models' daily
|
|
379
|
+
benchmark, the weekly speed and capability tests) run inside the dashboard.
|
|
380
|
+
Settings, **Scheduler**:
|
|
324
381
|
|
|
325
382
|
- **Off**: nothing runs; a fresh install spends no calls until you opt in.
|
|
326
383
|
- **Log only**: writes "would run" to `runs/scheduler.log` at each due time,
|
|
@@ -337,3 +394,16 @@ call logs, probe history, task answers) lives in the data folder: the one
|
|
|
337
394
|
`BENCHWARMERS_HOME` names, else the one in `.benchwarmers-home` at the top of
|
|
338
395
|
the checkout. Back it up by copying it; move it by copying it and pointing one
|
|
339
396
|
of those two at the new place. Info shows which folder is in use.
|
|
397
|
+
|
|
398
|
+
**Export and import**, on Settings, does the same through the dashboard, for
|
|
399
|
+
another machine or a copy to keep: one .zip of **Settings only**
|
|
400
|
+
(`config/`: endpoints, collections, roles, model options, the schedule,
|
|
401
|
+
gateway keys, the theme) or **Everything** (also every result, history, log
|
|
402
|
+
and saved answer). The endpoints' API keys go in only if you tick them; the
|
|
403
|
+
file then holds them, so keep it like a password and delete it once
|
|
404
|
+
imported. On the other install, choose the file: it says what is in it
|
|
405
|
+
(scope, release, date, files, how many it replaces, keys) before **Import**.
|
|
406
|
+
Its files replace the ones of the same name, after this install's own in that
|
|
407
|
+
scope are saved to `backups/before-import-<time>.zip`; files it does not have
|
|
408
|
+
are left. Restart afterwards (Settings, Server and access), so every part
|
|
409
|
+
reads them.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.6.1
|