Spaces:
Paused
Paused
Commit History
-
chore: sync to Hugging Face with metadata
github-actions[bot]f93d9cb -
chore: update provider data [skip ci]
github-actions[bot]b5961dc
-
chore: update provider data [skip ci]
github-actions[bot]c69649b -
chore: update benchmark data [skip ci]
github-actions[bot]32bc2fa
-
chore: update provider data [skip ci]
github-actions[bot]f6d5e29
-
chore: update provider data [skip ci]
github-actions[bot]538659e -
perf: load benchmark data off the critical path
crispasr integration +1: Claude Opus 5 (1M context)benchmarks.json is 1.47 MB of the 1.99 MB bundle — an order of magnitude larger than everything else on the page — and nothing above the fold needs it. The provider table renders fine without it; benchmark columns simply have no scores yet. Switching it to a dynamic import drops it out of the entry graph, and Vite stops emitting a modulepreload for it. blocking bytes 1,987 kB -> 527 kB (gzip 341 kB -> 98 kB) Two things this had to get right. The management API's /api/benchmarks is fresher than the bundled copy, so a late-resolving import must not clobber it — a ref records whether the API already answered. And the loading flag is cleared in a finally, which also runs on failure, so a silent catch would have been indistinguishable from success: a failed load now says "benchmarks unavailable" in the header rather than leaving every benchmark column showing an em-dash, which reads as "this model has no scores". Verified against the production build served over HTTP in headless Chr…2002be6 -
chore: clear the CI and build warnings
crispasr integration +1: Claude Opus 5 (1M context)Three unrelated advisories, none of which were breaking anything yet: actions/checkout and actions/setup-node bumped v4 -> v5 across all three workflows. GitHub is deprecating Node 20 and was already force-running the v4 actions on Node 24, which is what the run annotation was reporting. npm audit fix takes the tree from 13 vulnerabilities (8 high, in undici and vite) to 0. Lockfile only — no manifest change, so this is a patch-level resolution bump (vite 7.3.1 -> 7.3.6) with no semver risk. The Vite 500 kB chunk advisory fired on every build with nothing actionable behind it: the bundle is almost entirely the two JSON data files, not app code. They are now split into their own chunks, which is worth doing on its own merits — the daily provider-data commit previously invalidated one 1.99 MB bundle for every returning visitor, and now invalidates only the 312 kB providers chunk, leaving benchmarks (1.47 MB) and vendor cached. The warning limit is raised to sit above the data chunks w…158d5f2 -
refactor(env): stop publishing credential file locations
crispasr integration +1: Claude Opus 5 (1M context)The README spelled out the exact .env lookup chain, and the loader hardcoded a sibling project's path — both public, and both a map of where to find credentials on a developer machine. The sibling path also leaked a private project name into a public repo. Locations now come from PROVIDERS_ENV_FILES instead of being baked in: the project .env is read first (so it can itself set that variable and point at files held outside the repo), then each listed file. Behaviour is otherwise unchanged — every existing file is read, earlier entries win, and the real environment is never overwritten. Docs and comments now name the mechanism, not any path. Also drops the sibling-path references that predated this branch in the OpenRouter and Nscale headers. Note for anyone who relied on the implicit sibling lookup: set PROVIDERS_ENV_FILES to that file and it works as before. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>764c374 -
feat(nscale): accept NSCALE_TOKEN, and read ~/.env so it is found
crispasr integration +1: Claude Opus 5 (1M context)Nscale has been empty in the published data since it was added — its catalog is only reachable through the authenticated API, and the key was never available to the fetcher. Two reasons, both fixed here. The variable name: Nscale's console issues the credential as NSCALE_TOKEN, while the fetcher only looked for NSCALE_API_KEY. Both are now accepted, the alias kept so any existing setup or CI secret of that name still works, and the health check's keyEnv now takes a list so "any one of these" counts as present rather than reporting a false SKIP. The location: load-env only read the project .env and ../AIToolkit/.env, so a credential shared across projects in ~/.env was invisible. It now reads every candidate that exists — project, AIToolkit, then home — instead of only the first one found, so a key present solely in the home file is picked up even when a project .env exists for other keys. Earlier files still win, a variable already set in the real environment is never overwritten, an…108f0f3 -
docs: bring README in line with the fetchers and CI
crispasr integration +1: Claude Opus 5 (1M context)- Add the sovereignty/pricing caveats the raw numbers hide: EUrouter's AWS Bedrock / Microsoft Foundry routes are Cloud Act-exposed despite the EU controller, HostYourAI is per-token only, Groq's flagship Llamas are now Contact Sales, and currencies are carried rather than converted. - Correct the API-key section: only NSCALE_API_KEY is actually required (without it Nscale stays empty, which is its current state); Requesty works keylessly today despite being documented as required. - List the fetch scripts that existed but were undocumented (ovhcloud, stackit, nscale) and point at npm run healthcheck. - Document the Actions automation, including that a public keyless source needs no workflow change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>6eab2c8 -
docs: note health-check registration when adding a provider
crispasr integration +1: Claude Opus 5 (1M context)A fetcher left out of CHECKS breaks silently, because fetch-providers keeps last-good data on an empty result — which is exactly how the Groq scraper stayed stale. Also record that keyless sources need no workflow change, and that keyed ones should return [] plus declare keyEnv so forks without secrets still pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>9a84191 -
fix(groq): re-source pricing from console docs, replacing the dead scraper
crispasr integration +1: Claude Opus 5 (1M context)groq.com/pricing no longer exists — it 302s to the marketing homepage, so the scraper that parsed <table class="type-ui-1"> off it had been silently returning 0 models (fetch-providers keeps last-good on an empty result, so the data file went stale rather than empty, and only the health check noticed). Pricing moved to console.groq.com/docs/models, which is a React Server Components route: the figures are not in the served markup but in the RSC flight payload, pushed as JSON string literals via self.__next_f.push. Decoding those and reading each "<model-id>-price" block recovers all 11 publicly priced models across three pricing shapes — per-1M-token input/output, ASR "per hour" (converted to price_per_minute), and TTS "per 1M characters". Groq has moved llama-3.1-8b-instant, llama-3.3-70b-versatile and MiniMax to "Contact Sales"; those are skipped rather than invented. Note this means aggregators can still quote a Groq rate (OpenRouter routes Groq Llama at $0.59/$0.79) that Groq its…81186dc -
feat: add EUrouter and HostYourAI as EU-sovereign providers
crispasr integration +1: Claude Opus 5 (1M context)Both are Dutch (B.V.) per-token inference routers on EU infrastructure, and both expose a public, keyless source — so the existing daily update-providers workflow picks them up with no secrets and no workflow change. EUrouter (api.eurouter.ai/v1/models, 135 priced models) OpenRouter-shaped public catalog. Prices are per single token as decimal strings with a per-model currency, so they are scaled to per-1M and the currency is carried through rather than converted. A minority of routes sit on AWS Bedrock / Microsoft Foundry and are Cloud Act-exposed despite the EU controller, so `eu-endpoint` is withheld from those models; the upstream is recorded in `provider_upstream` either way. Catalog entries with no pricing block (12) are skipped rather than published as free, and a `pricing.discount` other than the constant 1 now warns, since that would silently decouple listed prices from billing. HostYourAI (hostyourai.com/pricing, 30 models) The per-model price tables ar…795835b
-
chore: update provider data [skip ci]
github-actions[bot]3bad4d1
-
chore: update provider data [skip ci]
github-actions[bot]5a5eafe
-
chore: update provider data [skip ci]
github-actions[bot]1b56e6d
-
chore: update provider data [skip ci]
github-actions[bot]e7d8aa2
-
chore: update provider data [skip ci]
github-actions[bot]667cded -
chore: update benchmark data [skip ci]
github-actions[bot]5f56df6
-
chore: update provider data [skip ci]
github-actions[bot]d4d55a7
-
chore: update provider data [skip ci]
github-actions[bot]dc5e5d7
-
chore: update provider data [skip ci]
github-actions[bot]ce5acb3
-
chore: update provider data [skip ci]
github-actions[bot]5500788
-
chore: update provider data [skip ci]
github-actions[bot]7e0be8f
-
chore: update provider data [skip ci]
github-actions[bot]a4f1a1b
-
chore: update provider data [skip ci]
github-actions[bot]048c206 -
chore: update benchmark data [skip ci]
github-actions[bot]4618840
-
chore: update provider data [skip ci]
github-actions[bot]e6782b4
-
chore: update provider data [skip ci]
github-actions[bot]e9e79cc
-
chore: update provider data [skip ci]
github-actions[bot]1a79595
-
chore: update provider data [skip ci]
github-actions[bot]003e216
-
chore: update provider data [skip ci]
github-actions[bot]a981ec0
-
chore: update provider data [skip ci]
github-actions[bot]490aa18
-
chore: update provider data [skip ci]
github-actions[bot]597f1bc -
chore: update benchmark data [skip ci]
github-actions[bot]f3b6185
-
chore: update provider data [skip ci]
github-actions[bot]77481c4
-
chore: update provider data [skip ci]
github-actions[bot]57ba866
-
chore: update provider data [skip ci]
github-actions[bot]63ada74
-
chore: update provider data [skip ci]
github-actions[bot]db6d779
-
chore: update provider data [skip ci]
github-actions[bot]afa01f4
-
chore: update provider data [skip ci]
github-actions[bot]0bf7691
-
chore: update provider data [skip ci]
github-actions[bot]e60dbea -
chore: update benchmark data [skip ci]
github-actions[bot]0c2e0be
-
chore: update provider data [skip ci]
github-actions[bot]fb746c1
-
chore: update provider data [skip ci]
github-actions[bot]aed28e1
-
chore: update provider data [skip ci]
github-actions[bot]fe84ea8
-
chore: update provider data [skip ci]
github-actions[bot]bcc39d5
-
chore: update provider data [skip ci]
github-actions[bot]55d0ff8
-
chore: update provider data [skip ci]
github-actions[bot]26669a8