This is a data-and-docs repository — a JSON dataset, a static site, and small zero-dependency build scripts. There's no server, no database, and no user data. Still, a few things are worth stating.
If you find a security issue — for example, a way the build/validation scripts could be abused, an XSS vector in the interactive site, or a supply-chain concern in the workflows — please report it privately:
- Use GitHub's private vulnerability reporting (Security → Report a vulnerability), or
- Email the maintainer via the address on their GitHub profile.
Please don't open a public issue for a genuine vulnerability until it's been addressed. We aim to acknowledge reports within a few days.
In scope:
- The build/validation scripts in
scripts/. - The static site in
site/(e.g. DOM-injection via dataset content). - The GitHub Actions workflows in
.github/workflows/.
Out of scope:
- Vulnerabilities in the third-party LLM providers listed in the dataset — report those to the provider directly.
- The accuracy of a provider's free-tier terms — that's a data correction, not a security issue. Use the inaccuracy form.
Four workflows run against this repository; none of them writes to main directly:
| Workflow | Trigger | Token permissions |
|---|---|---|
verify.yml |
pull request, push to main, manual |
contents: read — cannot write anything |
pages.yml |
push to main, manual |
contents: read, pages: write — publishes the site |
codeql.yml |
weekly schedule, manual | contents: read (job: security-events: write) — code scanning |
tag-release.yml |
push to main (data/providers.json), manual |
contents: write — pushes the annotated vX.Y.Z tag when the dataset version advances; never writes to main |
A pull request from a fork therefore never runs with a token that can write to this repository, and never has access to repository secrets.
Derived files are regenerated locally and committed by the author in the same PR; the only
write-capable automation is the release tagger (an annotated tag only, via tag-release.yml).
The model-sample backfill (npm run models) runs locally and on-demand, never in Actions.
A change to scripts/ is reviewed as code, not as data.
- The dataset contains only links to public provider documentation. It never contains API keys, secrets, or credentials — and it never should. Do not submit any.
- The interactive site is fully static; its only network calls are the inlined dataset (with a
raw.githubusercontent.comfallback), the live GitHub star count (site.js, cached 6h), and the live verified-providers badge (img.shields.io, whose endpoint JSON is served from this site). - The build scripts have zero runtime dependencies, which keeps the supply-chain surface minimal by design.