TypeScript 55.4%
Python 43.2%
SQL 1.2%
1# Third part of the spec (containers, IaC, CI/CD, desktop apps, editors, shells, self-hosted apps).23SPEC3 = [4 "Containers, virtualization, IaC and CI/CD",5 src("podman", "Podman (containers project)", "podman.io", ["podman", "buildah", "skopeo", "podman desktop", "containers project"], tier="B", categories=OSINF, products=["Podman", "Buildah", "Skopeo", "Podman Desktop", "crun"],6 repos=["containers/podman", "containers/buildah", "containers/skopeo", "podman-desktop/podman-desktop", "containers/crun", "containers/image"]),7 src("opencontainers", "Open Container Initiative", "opencontainers.org", ["oci", "open container initiative", "runc"], categories=["open-source", "developer", "standards"], country="US", products=["runc", "OCI Image Spec", "OCI Runtime Spec", "OCI Distribution Spec", "umoci"],8 repos=["opencontainers/runc", "opencontainers/image-spec", "opencontainers/runtime-spec", "opencontainers/distribution-spec", "opencontainers/umoci"]),9 ext("docker", repos=["docker/compose", "docker/cli", "docker/buildx", "moby/buildkit", "docker/docker-py", "docker/docs", "docker/scout-cli", "docker/model-runner"], products=["Docker Compose", "Docker CLI", "Buildx", "BuildKit", "docker-py", "Docker Scout", "Docker Model Runner"]),10 ext("cncf", repos=["containerd/nerdctl", "oras-project/oras", "project-zot/zot", "vmware-tanzu/velero", "kubernetes-sigs/cri-tools", "containerd/stargz-snapshotter"],11 products=["nerdctl", "ORAS", "zot", "Velero"]),12 src("firecracker", "Firecracker", "firecracker-microvm.github.io", ["firecracker microvm", "firecracker vmm"], categories=OSINF, country="US", repos=["firecracker-microvm/firecracker", "firecracker-microvm/firecracker-containerd"]),13 src("lima", "Lima / Colima", "lima-vm.io", ["lima vm", "colima", "lima-vm"], categories=OSINF, products=["Lima", "Colima"], repos=["lima-vm/lima", "abiosoft/colima"]),14 src("libvirt", "libvirt", "libvirt.org", ["libvirt", "virt-manager", "virsh"], categories=OSINF, repos=[("libvirt/libvirt", T), "virt-manager/virt-manager"]),15 src("utm", "UTM", "mac.getutm.app", ["utm virtual machines", "utmapp"], categories=OSAPP, repos=["utmapp/UTM"]),16 src("sidero-labs", "Sidero Labs (Talos Linux)", "siderolabs.com", ["talos linux", "talos", "sidero labs", "omni"], categories=OSINF, country="US", products=["Talos Linux", "talosctl", "Sidero Omni"], repos=["siderolabs/talos", "siderolabs/omni"]),17 src("k0s", "k0s (Mirantis)", "k0sproject.io", ["k0s", "k0sproject", "mirantis k0s"], categories=OSINF, repos=["k0sproject/k0s", "k0sproject/k0sctl"]),18 ext("rancher", repos=["rancher/rke2", "rancher/fleet", "harvester/harvester", "rancher/rancher-desktop", "neuvector/neuvector", "rancher/local-path-provisioner"], products=["RKE2", "Fleet", "Harvester", "Rancher Desktop", "NeuVector"]),19 src("linuxcontainers", "Linux Containers (LXC / Incus)", "linuxcontainers.org", ["lxc", "incus", "linux containers", "lxcfs", "distrobuilder"], categories=OSINF, products=["Incus", "LXC", "LXCFS", "distrobuilder"],20 repos=["lxc/incus", "lxc/lxc", "lxc/lxcfs", "lxc/distrobuilder"]),21 ext("ubuntu", repos=["canonical/multipass", "canonical/lxd", "canonical/snapcraft", "canonical/microk8s", "canonical/cloud-init", "juju/juju", "canonical/craft-application", "canonical/pebble"],22 products=["Multipass", "LXD", "Snapcraft", "MicroK8s", "cloud-init", "Juju", "Pebble"]),23 ext("hashicorp", repos=["hashicorp/vagrant", "hashicorp/boundary", "hashicorp/terraform-cdk", "hashicorp/terraform-ls", "hashicorp/vault-secrets-operator", "hashicorp/consul-k8s", "hashicorp/terraform-provider-kubernetes", "hashicorp/terraform-provider-helm"],24 products=["Vagrant", "Boundary", "CDK for Terraform", "terraform-ls", "Vault Secrets Operator", "consul-k8s"]),25 ext("ansible", repos=["ansible/awx", "ansible/ansible-lint", "ansible/molecule", "ansible/ansible-navigator", "ansible/vscode-ansible", "ansible/awx-operator", "ansible/ansible-builder", "ansible/ansible-dev-tools"],26 products=["AWX", "ansible-lint", "Molecule", "ansible-navigator", "AWX Operator", "ansible-builder"]),27 ext("pulumi", repos=["pulumi/pulumi-kubernetes", "pulumi/pulumi-azure-native", "pulumi/pulumi-gcp", "pulumi/pulumi-kubernetes-operator", "pulumi/esc", "pulumi/pulumi-aws-native", "pulumi/pulumi-cloudflare", "pulumi/pulumi-docker"],28 products=["pulumi-kubernetes", "pulumi-azure-native", "pulumi-gcp", "Pulumi Kubernetes Operator", "Pulumi ESC"]),29 ext("opentofu", repos=["opentofu/registry", "opentofu/setup-opentofu", "opentofu/registry-ui"], products=["OpenTofu Registry", "setup-opentofu"]),30 src("saltproject", "Salt Project", "saltproject.io", ["saltstack", "salt project", "salt"], categories=OSINF, country="US", repos=["saltstack/salt"]),31 src("terragrunt", "Terragrunt (Gruntwork)", "terragrunt.gruntwork.io", ["terragrunt", "gruntwork", "terratest"], categories=OSINF, country="US", products=["Terragrunt", "Terratest", "Boilerplate"],32 repos=["gruntwork-io/terragrunt", "gruntwork-io/terratest"]),33 src("atlantis", "Atlantis", "runatlantis.io", ["atlantis terraform", "runatlantis"], categories=OSINF, repos=["runatlantis/atlantis"]),34 src("terraform-tooling", "Terraform ecosystem tooling", "terraform-docs.io", ["terraform-docs", "tflint", "tfsec", "terrascan", "infracost", "terramate", "digger", "terraformer", "tfenv", "tenv", "terraform compliance", "checkov"],35 categories=OSINF, products=["terraform-docs", "TFLint", "Infracost", "Terramate", "Digger", "Terraformer", "tenv", "Checkov", "Terrascan", "tfsec"],36 repos=["terraform-docs/terraform-docs", "terraform-linters/tflint", "infracost/infracost", "terramate-io/terramate", "diggerhq/digger", "GoogleCloudPlatform/terraformer", "tofuutils/tenv", "bridgecrewio/checkov", "tenable/terrascan", "aquasecurity/tfsec"]),37 src("infisical", "Infisical", "infisical.com", ["infisical"], categories=OSSEC, country="US", repos=["Infisical/infisical"]),38 src("sops", "SOPS (CNCF)", "getsops.io", ["sops", "mozilla sops", "getsops"], categories=OSSEC, repos=["getsops/sops"]),39 src("doppler", "Doppler / dotenvx", "dotenvx.com", ["dotenvx", "dotenv vault"], categories=OSSEC, repos=["dotenvx/dotenvx", "DopplerHQ/cli"]),40 src("age-encryption", "age", "age-encryption.org", ["age encryption", "filippo valsorda age", "rage"], categories=OSSEC, repos=["FiloSottile/age", "str4d/rage"]),41 ext("github", repos=["actions/runner", "dependabot/dependabot-core", "actions/toolkit", "actions/checkout", "actions/setup-node", "actions/setup-python", "actions/cache", "actions/upload-artifact", "github/codeql-action", "cli/go-gh", "github/spec-kit", "github/copilot-language-server-release"],42 products=["GitHub Actions runner", "Dependabot", "actions/toolkit", "actions/checkout", "actions/setup-node", "actions/setup-python", "actions/cache", "CodeQL Action", "go-gh", "Spec Kit", "Copilot language server"]),43 ext("gitlab", feeds=[("gitlab-runner tags", "https://gitlab.com/gitlab-org/gitlab-runner/-/tags?format=atom", "ATOM"), ("gitlab tags", "https://gitlab.com/gitlab-org/gitlab/-/tags?format=atom", "ATOM"), ("gitaly tags", "https://gitlab.com/gitlab-org/gitaly/-/tags?format=atom", "ATOM"), ("gitlab charts tags", "https://gitlab.com/gitlab-org/charts/gitlab/-/tags?format=atom", "ATOM"), ("gitlab operator tags", "https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/tags?format=atom", "ATOM"), ("glab tags", "https://gitlab.com/gitlab-org/cli/-/tags?format=atom", "ATOM"), ("gitlab pages tags", "https://gitlab.com/gitlab-org/gitlab-pages/-/tags?format=atom", "ATOM"), ("gitlab agent tags", "https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/tags?format=atom", "ATOM"), ("gitlab omnibus tags", "https://gitlab.com/gitlab-org/omnibus-gitlab/-/tags?format=atom", "ATOM"), ("gitlab workhorse tags", "https://gitlab.com/gitlab-org/gitlab-workhorse/-/tags?format=atom", "ATOM")],44 products=["GitLab Runner", "Gitaly", "GitLab Helm chart", "GitLab Operator", "glab", "GitLab Pages", "GitLab agent for Kubernetes", "Omnibus GitLab"]),45 src("woodpecker-ci", "Woodpecker CI", "woodpecker-ci.org", ["woodpecker ci", "woodpecker"], categories=OSINF, repos=["woodpecker-ci/woodpecker"]),46 src("concourse", "Concourse CI", "concourse-ci.org", ["concourse ci", "concourse"], categories=OSINF, repos=["concourse/concourse"]),47 src("gocd", "GoCD", "gocd.org", ["gocd", "go continuous delivery"], categories=OSINF, repos=["gocd/gocd"]),48 src("dagger", "Dagger", "dagger.io", ["dagger io", "dagger ci", "dagger engine", "container use"], tier="B", categories=OSINF, country="US", repos=["dagger/dagger", "dagger/container-use"]),49 src("nektos-act", "act (nektos)", "nektosact.com", ["nektos act", "act github actions local"], categories=OSINF, repos=["nektos/act"]),50 src("earthly", "Earthly", "earthly.dev", ["earthly", "earthfile", "lunar"], categories=OSINF, repos=["earthly/earthly"]),51 src("semaphore-ci", "Semaphore CI", "semaphore.io", ["semaphore ci", "semaphoreci", "semaphore"], categories=OSINF, repos=["semaphoreio/semaphore"]),52 ext("jenkins", repos=["jenkinsci/jenkins", "jenkinsci/configuration-as-code-plugin", "jenkinsci/kubernetes-plugin", "jenkinsci/docker", "jenkinsci/helm-charts", "jenkinsci/plugin-installation-manager-tool", "jenkinsci/blueocean-plugin", "jenkinsci/pipeline-model-definition-plugin", "jenkinsci/git-plugin", "jenkins-infra/helpdesk"],53 products=["Jenkins core", "Configuration as Code plugin", "Kubernetes plugin", "Jenkins Docker image", "Jenkins Helm chart", "Plugin Installation Manager", "Blue Ocean", "Declarative Pipeline", "Git plugin"]),54 src("pantsbuild", "Pants", "pantsbuild.org", ["pants build", "pantsbuild"], repos=["pantsbuild/pants"]),55 src("meson", "Meson", "mesonbuild.com", ["meson build", "mesonbuild"], repos=["mesonbuild/meson"]),56 src("ninja-build", "Ninja", "ninja-build.org", ["ninja build", "ninja-build"], repos=["ninja-build/ninja"]),57 src("conan", "Conan (JFrog)", "conan.io", ["conan package manager", "conan c++"], repos=["conan-io/conan", "conan-io/cmake-conan"]),58 ext("cmake", repos=["Kitware/VTK", "Kitware/ParaView", "Kitware/kwiver", "Kitware/vtk-js", "Kitware/trame", "pyvista/pyvista", "InsightSoftwareConsortium/ITK", "Slicer/Slicer"],59 products=["VTK", "ParaView", "vtk.js", "trame", "PyVista", "ITK", "3D Slicer"]),60 ext("bazel", repos=["bazelbuild/bazelisk", "bazelbuild/rules_go", "bazelbuild/rules_python", "bazelbuild/rules_nodejs", "bazelbuild/buildtools", "bazelbuild/starlark", "bazel-contrib/rules_oci", "bazelbuild/rules_rust", "bazelbuild/rules_java", "bazelbuild/rules_kotlin"],61 products=["Bazelisk", "rules_go", "rules_python", "rules_nodejs", "Buildifier", "Starlark", "rules_oci", "rules_rust", "rules_java", "rules_kotlin"]),62 ext("gradle", repos=["gradle/actions", "gradle/foojay-toolchains", "gradle/gradle-profiler", "gradle/native-platform", "gradle/gradle-completion", "gradle/github-dependency-graph-gradle-plugin", "gradle/test-retry-gradle-plugin", "gradle/wrapper-validation-action", "gradle/common-custom-user-data-gradle-plugin", "gradle/declarative-gradle"],63 products=["gradle/actions", "foojay-toolchains", "gradle-profiler", "native-platform", "gradle-completion", "GitHub dependency graph plugin", "test-retry plugin", "wrapper-validation-action", "common-custom-user-data plugin", "Declarative Gradle"]),64 ext("maven", repos=["apache/maven-mvnd", "apache/maven-wrapper", "apache/maven-compiler-plugin", "apache/maven-shade-plugin", "apache/maven-dependency-plugin", "apache/maven-enforcer", "apache/maven-release", "apache/maven-site-plugin", "apache/maven-javadoc-plugin", "apache/maven-jar-plugin"],65 products=["Maven Daemon (mvnd)", "Maven Wrapper", "Maven Compiler Plugin", "Maven Shade Plugin", "Maven Dependency Plugin", "Maven Enforcer", "Maven Release", "Maven Site Plugin", "Maven Javadoc Plugin", "Maven JAR Plugin"]),66 src("macports", "MacPorts", "macports.org", ["macports"], categories=OSAPP, repos=["macports/macports-base"]),67 src("chocolatey", "Chocolatey", "chocolatey.org", ["chocolatey", "choco"], categories=OSAPP, country="US", repos=["chocolatey/choco"]),68 src("scoop", "Scoop", "scoop.sh", ["scoop windows", "scoopinstaller"], categories=OSAPP, repos=["ScoopInstaller/Scoop"]),69 src("flatpak", "Flatpak / Flathub", "flatpak.org", ["flatpak", "flathub", "flatpak-builder"], categories=OSAPP, products=["Flatpak", "flatpak-builder", "Flathub"], repos=["flatpak/flatpak", "flatpak/flatpak-builder", "flathub-infra/website"]),70 src("asdf", "asdf", "asdf-vm.com", ["asdf vm", "asdf version manager"], repos=["asdf-vm/asdf"]),71 src("mise", "mise (jdx)", "mise.jdx.dev", ["mise en place", "mise jdx", "rtx"], repos=["jdx/mise", "jdx/usage"]),72 src("renovate", "Renovate (Mend)", "renovatebot.com", ["renovate", "renovatebot", "mend renovate"], tier="C", llm=False, repos=["renovatebot/renovate", "renovatebot/github-action"], notes="renovate publishes several releases per day: heuristics only"),73 src("portainer", "Portainer", "portainer.io", ["portainer"], categories=OSINF, repos=["portainer/portainer", "portainer/agent"]),74 src("coolify", "Coolify", "coolify.io", ["coolify", "coollabs"], categories=OSINF, repos=["coollabsio/coolify"]),75 src("dokploy", "Dokploy", "dokploy.com", ["dokploy"], categories=OSINF, repos=["Dokploy/dokploy"]),76 src("dokku", "Dokku", "dokku.com", ["dokku"], categories=OSINF, repos=["dokku/dokku"]),77 src("caprover", "CapRover", "caprover.com", ["caprover"], categories=OSINF, repos=["caprover/caprover"]),78 src("nginx-proxy-manager", "Nginx Proxy Manager", "nginxproxymanager.com", ["nginx proxy manager", "npm proxy"], categories=OSINF, repos=["NginxProxyManager/nginx-proxy-manager"]),79 src("k9s", "k9s / kubectl companions", "k9scli.io", ["k9s", "kubectx", "kubens", "stern", "kubecolor", "kube-ps1", "helmfile", "lens ide", "freelens", "kubetail", "kdash", "popeye"], categories=OSINF,80 products=["k9s", "kubectx", "stern", "kubecolor", "Helmfile", "Lens", "Freelens", "Popeye", "kubetail", "Kui"],81 repos=["derailed/k9s", "ahmetb/kubectx", "stern/stern", "kubecolor/kubecolor", "helmfile/helmfile", "lensapp/lens", "freelensapp/freelens", "derailed/popeye", "kubetail-org/kubetail", "kubernetes-sigs/krew"]),82 src("skaffold", "Google Container Tools", "skaffold.dev", ["skaffold", "kaniko", "jib", "distroless", "container-diff", "container-structure-test"], categories=OSINF, country="US", products=["Skaffold", "Kaniko", "Jib", "Distroless", "container-structure-test"],83 repos=["GoogleContainerTools/skaffold", "GoogleContainerTools/kaniko", "GoogleContainerTools/jib", ("GoogleContainerTools/distroless", T), "GoogleContainerTools/container-structure-test"]),84 src("headscale", "Headscale", "headscale.net", ["headscale"], categories=OSINF, repos=["juanfont/headscale"]),85 src("wireguard", "WireGuard", "wireguard.com", ["wireguard", "wg", "wireguard-go", "wireguard-tools"], tier="B", categories=OSSEC, products=["wireguard-go", "wireguard-tools", "wireguard-linux-compat", "wireguard-windows", "wireguard-android", "wireguard-apple"],86 repos=[("WireGuard/wireguard-go", T), ("WireGuard/wireguard-tools", T), ("WireGuard/wireguard-linux-compat", T), ("WireGuard/wireguard-windows", T), ("WireGuard/wireguard-android", T), ("WireGuard/wireguard-apple", T)]),87 src("netbird", "NetBird", "netbird.io", ["netbird"], categories=OSSEC, country="DE", repos=["netbirdio/netbird"]),88 src("nebula", "Nebula (Slack / Defined Networking)", "defined.net", ["nebula overlay network", "defined networking", "slack nebula"], categories=OSSEC, country="US", repos=["slackhq/nebula"]),89 src("zerotier", "ZeroTier", "zerotier.com", ["zerotier"], categories=OSSEC, country="US", repos=["zerotier/ZeroTierOne"]),90 src("openvpn", "OpenVPN", "openvpn.net", ["openvpn", "openvpn community"], tier="B", categories=OSSEC, country="US", repos=["OpenVPN/openvpn", "OpenVPN/openvpn3", "OpenVPN/easy-rsa", "OpenVPN/openvpn-gui"]),91 src("strongswan", "strongSwan", "strongswan.org", ["strongswan", "ipsec"], categories=OSSEC, country="CH", repos=["strongswan/strongswan"]),92 src("frp", "frp (fatedier)", "gofrp.org", ["frp reverse proxy", "fatedier frp"], categories=OSINF, country="CN", repos=["fatedier/frp"]),93 src("openziti", "OpenZiti (NetFoundry)", "openziti.io", ["openziti", "netfoundry", "ziti"], categories=OSSEC, country="US", repos=["openziti/ziti", "openziti/ziti-tunnel-sdk-c", "openziti/desktop-edge-win", "openziti/ziti-console", "openziti/sdk-golang", "openziti/ziti-sdk-py", "openziti/ziti-sdk-jvm", "openziti/ziti-sdk-swift", "openziti/ziti-sdk-nodejs", "openziti/ziti-doc"]),94 src("pritunl", "Pritunl", "pritunl.com", ["pritunl"], categories=OSSEC, repos=["pritunl/pritunl", "pritunl/pritunl-client-electron"]),95 src("wg-easy", "wg-easy", "wg-easy.github.io", ["wg-easy", "wireguard easy"], categories=OSSEC, repos=["wg-easy/wg-easy"]),96 src("firezone", "Firezone", "firezone.dev", ["firezone"], categories=OSSEC, country="US", repos=["firezone/firezone"]),97 src("defguard", "defguard", "defguard.net", ["defguard"], categories=OSSEC, country="PL", repos=["DefGuard/defguard"]),98]99