ForgeMT is a multi-tenant platform for self-hosted GitHub Actions runners on AWS. It gives platform teams an IaC-driven way to operate ephemeral EC2 runners and ARC/Kubernetes runner scale sets for many tenant repositories.
cisco-open/forge erreicht einen Gesundheitsindex von 93 von 100 und liegt damit im Bereich Außergewöhnlich. Am stärksten schneidet es bei Vitality (96/100) ab, am schwächsten bei Sustainability & Governance (60/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.
Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.
Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.
Der gewichtete Gesamtwert 79 wird auf der veröffentlichten Indexskala auf 93 kalibriert (Register-Kalibrierung 2026-08-02).
Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.
| Registry | Paket | Version | Downloads / Monat | Versionen | Zuletzt veröffentlicht | Tags |
|---|---|---|---|---|---|---|
| PyPI | forgeverweist auf ein anderes Repo — nicht bewertet | 0.22.0 | 1.697 | 43 | vor 1287 Tagen | djangosaasforgeframework |
Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?
| 36/36 | Push-Aktualität — letzter Push vor 0 Tagen |
| 29.1/36 | Commit-Rhythmus — 42/52 Wochen mit Commits |
| 18/18 | Commit-Volumen — 354 Commits im letzten Jahr |
| 10/10 | OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10 |
| commits_last_year | 354 |
| human_commit_share | 0,67 |
| days_since_last_push | 0 |
| active_weeks_last_year | 42 |
| 27/27 | Liefert Releases aus — 55 Releases veröffentlicht |
| 36/36 | Release-Aktualität — letztes Release vor 0 Tagen |
| 27/27 | Release-Rhythmus — ein Release etwa alle 2 Tage |
| 0/10 | OpenSSF Scorecard: Signed-Releases — keine Daten |
| releases_count | 55 |
| latest_release_tag | v4.1.2 |
| releases_from_tags | nein |
| days_since_latest_release | 0 |
| mean_days_between_releases | 2 |
Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?
| 37.6/60 | Stars — 210 Stars |
| 7.5/25 | Forks — 9 Forks |
| 1.7/15 | Watcher — 3 Watcher |
| forks | 9 |
| stars | 210 |
| watchers | 3 |
| growth_state | organic |
| growth_factor_pct | 100 |
| 22.5/22.5 | README |
| 22.5/22.5 | Lizenz — anerkannte Lizenz (Apache-2.0) |
| 18/18 | CONTRIBUTING-Leitfaden |
| 13.5/13.5 | Verhaltenskodex |
| 0/7.2 | Issue-Vorlage |
| 6.3/6.3 | PR-Vorlage |
| has_readme | ja |
| has_license | ja |
| readme_badges | — |
| has_contributing | ja |
| has_issue_template | nein |
| has_code_of_conduct | ja |
| readme_badge_services | — |
| has_pull_request_template | ja |
Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?
| 9/54 | Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab |
| 0.1/22.5 | Commit-Verteilung — wichtigste beitragende Person verfasste 99 % der Commits |
| 2.7/13.5 | Breite der Beitragenden — 2 Beitragende |
| 6/10 | OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6 |
| bus_factor | 1 |
| contributors_sampled | 2 |
| top_contributor_share | 0,994 |
| 28/42 | Issue-Lösungsquote — 67 % der Issues geschlossen |
| 28.1/30 | PR-Annahme — 434/464 entschiedene PRs gemergt |
| 0/13 | Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden |
| 15/15 | OpenSSF Scorecard: Code-Review — all changesets reviewed |
| merged_prs | 434 |
| open_issues | 7 |
| closed_issues | 14 |
| prs_merged_7d | — |
| prs_decided_7d | — |
| prs_merged_30d | — |
| prs_decided_30d | — |
| issue_closed_ratio | 0,667 |
| closed_unmerged_prs | 30 |
| first_time_authors_30d | — |
| first_time_prs_merged_30d | — |
| first_time_prs_decided_30d | — |
| 30/30 | Organisatorische Trägerschaft — im Besitz einer Organisation |
| 0/20 | Verifizierte Domain — Verifizierungsstatus der Domain für diese Organisation nicht ausgelesen |
| 19.2/25 | Reichweite des Inhabers — 462 Follower von cisco-open |
| 22.3/25 | Kontohistorie — 120 öffentliche Repos, Kontoalter ca. 4 Jahre |
| followers | 462 |
| owner_type | Organization |
| is_verified | — |
| owner_login | cisco-open |
| public_repos | 120 |
| account_age_days | 1.690 |
Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?
| 24/24 | CI-Workflows — 16 Workflow(s) |
| 24/24 | Tests vorhanden |
| 16/16 | Linter-Konfiguration |
| 9.6/9.6 | Pre-Commit-Hooks |
| 0/6.4 | .editorconfig |
| 20/20 | OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10 |
| has_ci | ja |
| has_tests | ja |
| has_editorconfig | nein |
| has_linter_config | ja |
| has_precommit_config | ja |
| 30/30 | README |
| 25/25 | Dokumentationsverzeichnis |
| 15/15 | Dokumentations-/Homepage-Site — https://cisco-open.github.io/forge/ |
| 10/10 | Repository-Beschreibung |
| 10/10 | Topics — 20 Topics |
| 0/10 | Wiki |
| topics | ci-cd, devops, github-actions, self-hosted-runners, terraform, aws, ephemeral, kubernetes, actions-runner-controller, automation, aws-eks, devsecops, ec2, infrastructure-as-code, multi-tenancy, terragrunt, iam, oidc, open-source, platform-engineering |
| has_wiki | nein |
| homepage | https://cisco-open.github.io/forge/ |
| docs_site | https://cisco-open.github.io/forge/ |
| has_readme | ja |
| has_docs_dir | ja |
| has_description | ja |
Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?
| 7.5/7.5 | Binary-Artifacts — no binaries found in the repo |
| 3.8/7.5 | Branch-Protection — branch protection is not maximal on development and all release branches |
| 2.5/2.5 | CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10 |
| 1.2/2.5 | CII-Best-Practices — badge detected: Passing |
| 7.5/7.5 | Code-Review — all changesets reviewed |
| 1.5/2.5 | Contributors — project has 2 contributing companies or organizations -- score normalized to 6 |
| 10/10 | Dangerous-Workflow — no dangerous workflow patterns detected |
| 7.5/7.5 | Dependency-Update-Tool — update tool detected |
| 5/5 | Fuzzing — project is fuzzed |
| 2.5/2.5 | Lizenz — license file detected |
| 7.5/7.5 | Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10 |
| 5/5 | Packaging — packaging workflow detected |
| 4/5 | Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8 |
| 5/5 | SAST — SAST tool is run on all commits |
| 5/5 | Security-Policy — security policy file detected |
| 0/7.5 | Signed-Releases — keine Daten |
| 7.5/7.5 | Token-Permissions — GitHub workflow tokens follow principle of least privilege |
| 7.5/7.5 | Vulnerabilities — 0 existing vulnerabilities detected |
| source | openssf_scorecard |
| checks_evaluated | 17 |
| scorecard_version | v5.5.0 |
| checks_inconclusive | 1 |
| scorecard_aggregate | 9,3 |
| 5.7/35 | Direkte Abhängigkeiten ohne bekannte Advisories — 3 betroffen: black 22.12.0 (critical 9.8), pytest 7.4.4 (moderate 6.8), python-dotenv 0.20.0 (moderate 6.6) |
| 8.6/25 | Indirekte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: gunicorn 20.1.0 (high 8.2) |
| 22.4/40 | Keine offenen Advisories — 4 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 854 Tagen veröffentlicht |
| source | osv |
| advisories | 13 |
| affected_packages | 4 |
| assessed_packages | 53 |
| unassessed_packages | 0 |
| affected_by_severity | critical 1, high 1, moderate 2 |
| direct_affected_packages | 3 |
Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.
| 0/45 | Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln |
| 0/15 | Maschinenlesbare Doku (llms.txt) |
| 40/40 | Lesbare Commit-Historie — 67 von 67 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text) |
| has_llms_txt | nein |
| llms_txt_url | — |
| legible_history_share | 1 |
| agent_instruction_files | — |
| agent_instruction_max_bytes | — |
| 18/18 | Bootstrap mit einem Befehl — docs/operations/repo-blueprints/containers/containers/action-runner/Makefile, docs/operations/repo-blueprints/containers/containers/pre-commit/Makefile, tests/smoke/Makefile |
| 22/22 | Automatisierte Tests |
| 11/11 | Lint-/Format-Konfiguration |
| 0/11 | Statische Typprüfung |
| 10/10 | Reproduzierbare Umgebung — Dockerfile, lockfile |
| 0/10 | Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100 |
| 8/8 | Automatisierte Wartung — 17 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates |
| 8/10 | OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8 |
| has_nix | nein |
| has_tests | ja |
| lockfiles | uv.lock |
| has_dockerfile | ja |
| typed_language | nein |
| bootstrap_files | docs/operations/repo-blueprints/containers/containers/action-runner/Makefile, docs/operations/repo-blueprints/containers/containers/pre-commit/Makefile, tests/smoke/Makefile |
| has_devcontainer | nein |
| has_linter_config | ja |
| typecheck_configs | — |
| agent_commit_share | 0 |
| toolchain_manifests | — |
| dependency_bot_commit_share | 0,17 |
| 0/45 | Typprüfbarer Code — HCL ohne Typprüfungs-Konfiguration |
| 55/55 | Handhabbare Dateigrößen — 0/69 Quelldateien über 60 KB |
| primary_language | HCL |
| largest_source_bytes | 20.524 |
| source_files_sampled | 69 |
| oversized_source_files | 0 |
| 0/40 | API-Schema (OpenAPI/GraphQL/proto) — für diese Art von Software nicht anwendbar |
| 0/20 | MCP-Server — für diese Art von Software nicht anwendbar |
| 40/40 | Lauffähige Beispiele — examples |
| example_dirs | examples |
| has_mcp_signal | nein |
| api_schema_files | — |
| interfaces_expected_of | — |
Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.
Jeder Punkt umfasst 2 Tage.
Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).
| 10 | Binary-Artifacts | no binaries found in the repo |
| 5 | Branch-Protection | branch protection is not maximal on development and all release branches |
| 10 | CI-Tests | 30 out of 30 merged PRs checked by a CI test -- score normalized to 10 |
| 5 | CII-Best-Practices | badge detected: Passing |
| 10 | Code-Review | all changesets reviewed |
| 6 | Contributors | project has 2 contributing companies or organizations -- score normalized to 6 |
| 10 | Dangerous-Workflow | no dangerous workflow patterns detected |
| 10 | Dependency-Update-Tool | update tool detected |
| 10 | Fuzzing | project is fuzzed |
| 10 | License | license file detected |
| 10 | Maintained | 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10 |
| 10 | Packaging | packaging workflow detected |
| 8 | Pinned-Dependencies | dependency not pinned by hash detected -- score normalized to 8 |
| 10 | SAST | SAST tool is run on all commits |
| 10 | Security-Policy | security policy file detected |
| k. A. | Signed-Releases | no releases found |
| 10 | Token-Permissions | GitHub workflow tokens follow principle of least privilege |
| 10 | Vulnerabilities | 0 existing vulnerabilities detected |
Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 124 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.
| Registry | Paket | Version | Beziehung |
|---|---|---|---|
| PyPI | annotated-types | 0.7.0 | indirekt |
| PyPI | antlr4-python3-runtime | 4.13.2 | indirekt |
| PyPI | attrs | 26.1.0 | indirekt |
| PyPI | aws-sam-translator | 1.111.0 | indirekt |
| PyPI | aws-xray-sdk | 2.15.0 | indirekt |
| PyPI | babel | 2.18.0 | indirekt |
| PyPI | backrefs | 7.0 | indirekt |
| PyPI | bandit | 1.9.4 | indirekt |
| PyPI | blinker | 1.9.0 | indirekt |
| PyPI | boolean-py | 5.0 | indirekt |
| PyPI | boto3 | 1.35.90 | indirekt |
| PyPI | boto3 | 1.43.40 | indirekt |
| PyPI | boto3 | 1.43.47 | indirekt |
| PyPI | botocore | 1.35.90 | indirekt |
| PyPI | botocore | 1.43.40 | indirekt |
| PyPI | botocore | 1.43.47 | indirekt |
| PyPI | cachecontrol | 0.14.4 | indirekt |
| PyPI | certifi | 2026.6.17 | indirekt |
| PyPI | cffi | 2.1.0 | indirekt |
| PyPI | cfgv | 3.5.0 | indirekt |
| PyPI | cfn-lint | 1.53.0 | indirekt |
| PyPI | charset-normalizer | 3.4.9 | indirekt |
| PyPI | click | 8.4.2 | indirekt |
| PyPI | colorama | 0.4.6 | indirekt |
| PyPI | coverage | 7.15.2 | indirekt |
| PyPI | cryptography | 49.0.0 | indirekt |
| PyPI | cyclonedx-python-lib | 11.11.0 | indirekt |
| PyPI | defusedxml | 0.7.1 | indirekt |
| PyPI | distlib | 0.4.3 | indirekt |
| PyPI | docker | 7.2.0 | indirekt |
| PyPI | filelock | 3.31.0 | indirekt |
| PyPI | flask | 3.1.3 | indirekt |
| PyPI | forge | 0.0.0 | indirekt |
| PyPI | ghp-import | 2.1.0 | indirekt |
| PyPI | graphql-core | 3.2.11 | indirekt |
| PyPI | hypothesis | 6.157.0 | indirekt |
| PyPI | identify | 2.6.19 | indirekt |
| PyPI | idna | 3.18 | indirekt |
| PyPI | iniconfig | 2.3.0 | indirekt |
| PyPI | itsdangerous | 2.2.0 | indirekt |
| PyPI | jinja2 | 3.1.6 | indirekt |
| PyPI | jmespath | 1.1.0 | indirekt |
| PyPI | joserfc | 1.7.4 | indirekt |
| PyPI | jsonpatch | 1.33 | indirekt |
| PyPI | jsonpath-ng | 1.8.0 | indirekt |
| PyPI | jsonpointer | 3.1.1 | indirekt |
| PyPI | jsonschema | 4.26.0 | indirekt |
| PyPI | jsonschema-path | 0.5.0 | indirekt |
| PyPI | jsonschema-specifications | 2025.9.1 | indirekt |
| PyPI | lazy-object-proxy | 1.12.0 | indirekt |
| PyPI | license-expression | 30.4.4 | indirekt |
| PyPI | markdown | 3.10.2 | indirekt |
| PyPI | markdown-it-py | 4.2.0 | indirekt |
| PyPI | markupsafe | 3.0.3 | indirekt |
| PyPI | mdurl | 0.1.2 | indirekt |
| PyPI | mergedeep | 1.3.4 | indirekt |
| PyPI | mkdocs | 1.6.1 | indirekt |
| PyPI | mkdocs-get-deps | 0.2.2 | indirekt |
| PyPI | mkdocs-material | 9.7.6 | indirekt |
| PyPI | mkdocs-material-extensions | 1.3.1 | indirekt |
| PyPI | moto | 5.2.2 | indirekt |
| PyPI | mpmath | 1.3.0 | indirekt |
| PyPI | msgpack | 1.2.1 | indirekt |
| PyPI | multipart | 2.0.0 | indirekt |
| PyPI | networkx | 3.6.1 | indirekt |
| PyPI | nodeenv | 1.10.0 | indirekt |
| PyPI | openapi-schema-validator | 0.9.0 | indirekt |
| PyPI | openapi-spec-validator | 0.9.0 | indirekt |
| PyPI | packageurl-python | 0.17.6 | indirekt |
| PyPI | packaging | 26.2 | indirekt |
| PyPI | paginate | 0.5.7 | indirekt |
| PyPI | pathable | 0.6.0 | indirekt |
| PyPI | pathspec | 1.1.1 | indirekt |
| PyPI | pip | 26.1.2 | indirekt |
| PyPI | pip-api | 0.0.34 | indirekt |
| PyPI | pip-audit | 2.10.1 | indirekt |
| PyPI | pip-requirements-parser | 32.0.1 | indirekt |
| PyPI | platformdirs | 4.10.1 | indirekt |
| PyPI | pluggy | 1.6.0 | indirekt |
| PyPI | pre-commit | 4.6.0 | indirekt |
| PyPI | py-partiql-parser | 0.6.3 | indirekt |
| PyPI | py-serializable | 2.1.0 | indirekt |
| PyPI | pycparser | 3.0 | indirekt |
| PyPI | pydantic | 2.13.4 | indirekt |
| PyPI | pydantic-core | 2.46.4 | indirekt |
| PyPI | pydantic-settings | 2.14.2 | indirekt |
| PyPI | pygments | 2.20.0 | indirekt |
| PyPI | pyjwt | 2.13.0 | indirekt |
| PyPI | pymdown-extensions | 11.0.1 | indirekt |
| PyPI | pyparsing | 3.3.2 | indirekt |
| PyPI | pytest | 9.0.3 | indirekt |
| PyPI | pytest | 9.1.1 | indirekt |
| PyPI | pytest-cov | 7.1.0 | indirekt |
| PyPI | python-dateutil | 2.9.0.post0 | indirekt |
| PyPI | python-discovery | 1.4.4 | indirekt |
| PyPI | python-dotenv | 1.2.2 | indirekt |
| PyPI | pywin32 | 312 | indirekt |
| PyPI | pyyaml | 6.0.3 | indirekt |
| PyPI | pyyaml-env-tag | 1.1 | indirekt |
| PyPI | referencing | 0.37.0 | indirekt |
| PyPI | regex | 2026.7.19 | indirekt |
| PyPI | requests | 2.34.2 | indirekt |
| PyPI | responses | 0.26.1 | indirekt |
| PyPI | responses | 0.26.2 | indirekt |
| PyPI | rfc3339-validator | 0.1.4 | indirekt |
| PyPI | rich | 15.0.0 | indirekt |
| PyPI | rpds-py | 2026.6.3 | indirekt |
| PyPI | s3transfer | 0.19.1 | indirekt |
| PyPI | setuptools | 83.0.0 | indirekt |
| PyPI | six | 1.17.0 | indirekt |
| PyPI | sortedcontainers | 2.4.0 | indirekt |
| PyPI | stevedore | 5.9.0 | indirekt |
| PyPI | sympy | 1.14.0 | indirekt |
| PyPI | tomli | 2.4.1 | indirekt |
| PyPI | tomli-w | 1.2.0 | indirekt |
| PyPI | typing-extensions | 4.16.0 | indirekt |
| PyPI | typing-inspection | 0.4.2 | indirekt |
| PyPI | urllib3 | 2.7.0 | indirekt |
| PyPI | uv | 0.11.28 | indirekt |
| PyPI | virtualenv | 21.6.1 | indirekt |
| PyPI | watchdog | 6.0.0 | indirekt |
| PyPI | werkzeug | 3.1.8 | indirekt |
| PyPI | wrapt | 2.2.2 | indirekt |
| PyPI | xmltodict | 1.0.4 | indirekt |
Die Installation von pypi:forge@0.22.0 zieht 53 Pakete nach sich, direkt und transitiv: 4 tragen bekannte Advisories, davon 3 direkte Abhängigkeiten.
| Paket | Version | Beziehung | Schweregrad | Advisories | Behoben in |
|---|---|---|---|---|---|
| black | 22.12.0 | direkt | kritisch | 5 | 26.3.1 |
| gunicorn | 20.1.0 | indirekt | hoch | 4 | 22.0.0 |
| pytest | 7.4.4 | direkt | mittel | 2 | 9.0.3 |
| python-dotenv | 0.20.0 | direkt | mittel | 2 | 1.2.2 |
Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.
Stimmt etwas in diesem Bericht nicht, oder gibt es Gedanken dazu? Falsche Messungen, übersehene Tools, Ideen, Fragen — alles ist willkommen. Jede Nachricht wird gelesen und beantwortet.
Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.
Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v2.10.0, Schema v0.23.0 — vollständige Methodik · Metriken-Wiki.
Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken — PyPI.