supply-core
A local-first supply-chain security firewall and silent daily vulnerability radar.
Live status#
The official server publishes a read-only status card — quarantined versions, confirmed CVEs, and the packages its content scan currently suspects. It regenerates on demand and carries no repository paths or file contents, only package names, versions, ages and decisions.
Live diagnostics: supply-core.jakub.team. Source and full documentation: github.com/jakubkrzysztofsikora/supply-core.
What it does#
Every modern project pulls in hundreds of third-party dependencies and floating CI actions.
supply-core sits in front of that surface and answers one question early: is this safe to
build with, right now?
- Age quarantine. Packages published inside your policy window (e.g. under 72 hours) are held back, and a known-good frozen version that still satisfies your semver range is served instead — so a fresh account-takeover upload cannot slip into a build while it is at its most dangerous.
- Actions & pipeline pinning.
scan-actionsandscan-pipelinesflag GitHub Actions and Azure DevOps tasks that ride a mutable tag instead of an immutable 40-character commit SHA, and exit non-zero on findings so CI fails closed. - OSV.dev integration. Lockfiles are mapped and batch-queried against OSV.dev with local caching, surfacing known CVEs with severity.
- Content scanning. While a version sits in the quarantine window, GuardDog plus a built-in
static rule set look inside the bytes for malware, credential access, obfuscation, and
AI-agent-targeting payloads (prompt injection, poisoned
CLAUDE.md/AGENTS.md, hidden Unicode) that have no advisory yet.
Ecosystems#
npm (package.json), PyPI (exact requirements.txt pins), NuGet (packages.lock.json),
Docker image digests, GitHub Actions and Azure Pipelines. Cargo, Maven/Gradle, Go modules and
a few others are called out as not-yet-supported in the repo.
How it runs#
100% local and airgapped by default — no SaaS accounts, no cloud dashboards, no telemetry.
One-line Docker setup (docker compose up --build) exposes a local caching firewall and a
/health endpoint on :4873; a passive daily radar inventories every repository under your
configured roots and leaves a report.md on your desk each morning. The same binary runs as a
self-hosted HTTP service, which is what powers the live status card above.
MIT licensed.