Changelog

What shipped, and when

ShieldedStack ships as a set of container images (proxy, console, worker, and migrations) that carry the same version tag and are released together. Pin your deployment to a version tag to control exactly when you upgrade.

1.4.0

Dart support and a rebuilt proxy request pipeline

Dart joins the seven ecosystems already covered, and the proxy now resolves every package request through a single validated path, so redirect and forward deployments behave identically.

Breaking

  • Deployments running a customised proxy configuration need to adopt the new route metadata before upgrading. Stock configurations upgrade unchanged.

Added

  • Dart / pub ecosystem support across the proxy, policy engine, and package scanner, bringing supported ecosystems to eight.
  • Redirect and forward deployments resolve every request through one path, so the delivery mode you choose does not change which upstream a package comes from.
  • A known vulnerability alerts again only when something material changed: higher severity, a newly exposed project, or an elapsed cooldown you set per workspace.
  • Alert acknowledgment at package-version granularity, from both the API and the console.
  • Auto-refresh controls with a configurable interval on the request log.

Improved

  • Every package request is identified against one validated resolution path before it reaches a registry.
  • Registry metadata is rewritten as a whole or not served at all, so a client never sees a partially rewritten index.
  • Console documentation restructured into task-oriented guides.
  • Package event processing batches queue messages, cutting round-trips under sustained proxy load.
  • Package details visualise the same risk score the API reports.

Fixed

  • Maven policy rules written as groupId:artifactId now validate, as do Maven versions that are not SemVer.
  • Cargo and Go requests routed through a non-default upstream resolve to the correct registry.
  • Advisories with no CVSS vector are evaluated correctly rather than skipped.

1.3.0

Policy you can live with over time

Real deployments accumulate exceptions. This release makes them explicit, time-boxed, and portable between environments, and adds exploit-probability data so triage order reflects actual risk.

Added

  • Accepted-risk filters: accept a package version despite an open finding, recorded as policy rather than a deleted alert. Packages with an active exception are badged in the console.
  • Filter expiration: give an exception an expiry date and enforcement reverts on its own, so temporary decisions do not quietly become permanent.
  • Policy import and export, so a reviewed rule set can move between environments as a validated document.
  • EPSS exploit-prediction scores, paired with CVSS during risk assessment. A critical finding nobody is exploiting now ranks below a moderate one under active attack.
  • Bulk alert acknowledgment across selected rows.
  • Per-channel severity thresholds, so routine findings can go to a webhook while only critical ones reach a Teams channel.
  • Trusted reverse proxy configuration for deployments behind a load balancer.

Improved

  • Dual-licensed packages are no longer scored against the more restrictive half of their SPDX expression.
  • One alert now lists every affected project instead of fanning out into one alert per project.
  • Tenant and workspace permissions consolidated into a single authorization surface.
  • Faster cold-start policy evaluation on workspaces with large rule sets.

1.2.0

A dedicated worker plane and signed licensing

Background collection moved off the request path, and deployments began validating a cryptographically signed license.

Added

  • A dedicated worker plane for collection, scanning, and notification work, so proxy and console latency no longer track background workload.
  • Signed licensing: deployments validate an EdDSA-signed license carrying entitlement scope and expiry, and degrade predictably rather than failing closed on a transient check.
  • Onboarding runbook covering provisioning, first workspace setup, and proxy cutover.
  • Published license and trial agreements.
  • Auto-refresh on alerts and package event context logs.

Improved

  • Release images and package scanner binaries consolidated onto ShieldedStack-owned infrastructure.
  • Advisory collection retries transient database faults instead of dropping the run.
  • First-run setup shows provisioning progress rather than an empty console.

1.1.0

Three more ecosystems, licensing, and the MCP server

Go, Cargo, and RubyGems brought coverage to seven ecosystems, and AI agents gained a first-class way to query workspace data.

Added

  • Go module support across the proxy and package scanner.
  • Cargo support, including sparse registry index rewriting and cargo login via bearer token.
  • RubyGems support across the proxy, collectors, and console.
  • MCP server with API key authentication and origin validation, so AI agents can query workspace inventory and findings.
  • Open Source Metrics as an additional package intelligence source.
  • Time-range filtering on alerts, and package usage removal with audit metadata retained.
  • SBOM export across multiple projects as a single archive.

Improved

  • Authentication caches token expiry and resolved context, removing per-request revalidation.
  • Alert search matches case-insensitively in the database rather than in memory.

1.0.0

Runs entirely on your infrastructure

The release that completed the move off hosted cloud services. Every queue, every record, and every package decision now lives on your own PostgreSQL instance, with nothing leaving your network.

Added

  • Postgres-backed queues, removing the last dependency on hosted cloud infrastructure. The whole stack runs against your own database.
  • Maven support across the proxy, advisory collection, and console.
  • Package decision endpoint, exposing the allow/block verdict and the reasoning behind it for any package version.
  • Package event context logging, recording why each proxy decision was reached and which project asked for it.
  • Structured remediation guidance, so an alert names the fixed version rather than only the affected range.
  • Webhook notification channel.
  • Docker Compose deployment with externalised runtime configuration.

Improved

  • Blocked packages return HTTP 451 with policy and cache-control headers, so package managers surface a meaningful failure instead of caching the block indefinitely.
  • Package filtering reworked into a verify-then-trust model, cutting redundant upstream metadata fetches.

Before 1.0: the hosted years

ShieldedStack began in 2025 as a hosted, multi-tenant service and ran that way for close to a year. That era delivered the interception proxy, GitHub Security Advisory and OSV vulnerability intelligence, risk and license scoring, the package scanner, CycloneDX SBOM export, workspaces and role-based access, and support for NuGet, npm, and PyPI. In April 2026 we removed the hosted billing and tenancy machinery and rebuilt ShieldedStack as software you run yourself, because the customers who most needed a dependency firewall were the ones who could least afford to route their package traffic through someone else's cloud.

Still on the hosted service, or running a release older than 1.4? Start a trial or get in touch and we will walk you through the migration.