OpenSSF Scorecard
The OpenSSF Scorecard is an industry-standard set of automated checks for security posture of an open-source repo. fremforge runs it against every repo in your org on a weekly schedule and surfaces the result as a column on /<org>/_admin/repos.
The checks
Scorecard’s checks span build security, vulnerability hygiene, and project maturity. The headline ones:
- Branch-Protection — is the default branch protected with required reviews + status checks?
- Code-Review — what fraction of recent merges had a code review?
- Pinned-Dependencies — are CI dependencies pinned to specific versions / SHAs?
- Token-Permissions — does CI use least-privilege tokens?
- Signed-Releases — are release artifacts cryptographically signed?
- SAST — does the project run a static analyser in CI?
- Vulnerabilities — does the dependency tree contain known CVEs?
- Maintained — is the repo seeing recent commits / issues activity?
Each check returns a score 0–10. The overall score is the weighted average. A perfect 10 is rare; “good” is in the 7–9 range.
How fremforge runs it
The template at apps/api/src/assets/workflow-templates/scorecard-openssf.yaml:
- Runs on a weekly schedule (Monday 04:00 UTC) plus on every push to the default branch.
- Invokes the
ossf/scorecardbinary (cached in our SWR mirror — no public registry hops). - POSTs the JSON output to
https://frem.sh/_app/api/v1/scorecard/results.
fremforge caches the result per (tenant, repo) and renders the overall score as a column on the Repos page. Click a row to see per-check details.
Interpreting the score
The score is a directional signal, not a compliance gate. A repo with a score of 6.5 that includes a maintained library with branch-protection and SAST is in much better shape than a repo with score 8 that just happens to score well on cosmetic checks.
We do not recommend wiring “Scorecard score < X” into any merge-blocking rule. The right place for that gate is:
- Branch-Protection failing → fix it on
/<org>/_admin/repos(already a separate signal). - SAST failing → check
/<org>/_admin/code-security(already a separate signal).
Use Scorecard to look at the gap between similar repos: if acme/api scores 8.5 and acme/web scores 6.5, where’s the gap and is it intentional?
Self-hosting note
The scorecard binary itself is open-source (Apache-2.0); fremforge runs it in your CI runners, not on our infrastructure. No code or commits leave your tenant boundary. The score JSON we ingest contains only the check results — no source snippets.
See also
- Branch protection — drives the Branch-Protection score.
- SBOMs — drives the Dependencies + Vulnerabilities scores.