Skip to content

Sleet

Sleet is a command-line tool that creates and updates static NuGet v3 package feeds. The feed is a set of plain files in Azure Blob Storage, Amazon S3, S3-compatible storage, or a folder on a web server. NuGet clients restore packages straight from those files, so there is no server or database to run.

flowchart LR
    A[dotnet pack] --> B[sleet push]
    B --> C[(Azure Blob Storage, Amazon S3, or a folder)]
    C --> D[dotnet restore, Visual Studio, nuget.exe]

Why use a static feed

  • There is nothing to run, patch, or scale. Storage services are cheap and highly available.
  • All the work happens when you push. Restores are plain HTTP file downloads.
  • The feed works with every NuGet v3 client, including dotnet, Visual Studio, and nuget.exe.
  • You keep full control of your packages and where they are stored.

Sleet also supports a symbol server, version badges, package retention, and CDN cache headers.

Choose where to host the feed

Storage Good fit Guide
Azure Blob Storage Teams on Azure. Sign in with Microsoft Entra ID. Create an Azure feed
Amazon S3 Teams on AWS. Create an Amazon S3 feed
S3-compatible storage Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2, and similar services. S3-compatible storage
Local folder Serving packages from your own web server, or testing. Create a local feed

Quick start

Install Sleet. It needs the .NET 8 SDK or later. See Install Sleet for other options.

dotnet tool install -g sleet

Create a sleet.json file for your storage type, then edit it with your account details. The storage guides above show what to set.

sleet createconfig --azure

Push a folder of packages. On the first push, Sleet creates the container or bucket if needed and sets up the feed.

sleet push ./nupkgs

Add the feed's index.json URL to NuGet:

dotnet nuget add source https://myaccount.blob.core.windows.net/feed/index.json --name sleet

See Use a feed with NuGet for NuGet.Config examples and private feeds.

Things to know first

  • Feeds are public by default. Anyone who knows the URL can read them. To make a feed private, see private feeds.
  • Sleet doesn't support unlisting. Deleting a package removes it from the feed.
  • Search is a static file that returns every package, whatever the search term. On large feeds, Visual Studio can show incomplete results.

See limitations for the full list.

Find your way around

Section What it covers
Get started Install, Azure, Amazon S3, local folders, and using a feed.
Guides Authentication, CI, private feeds, hosting, feed features, and maintenance.
Reference Commands, client settings, environment variables, and feed settings.
Concepts How Sleet works, feed locking, and limitations.
Help Troubleshooting, FAQ, and release notes.

Get help

  • Search or open an issue on GitHub.
  • Run a failing command with SLEET_DEBUG=1 to see debug output. See debug output.
  • Pull requests that improve the docs are welcome. See contributing.