Restore & push
Once the feed is connected, use the standard .NET tooling.
Restore
Section titled “Restore”With the source configured, dotnet restore / dotnet build resolve packages from NuGetKeep
like any other v3 feed:
dotnet restoredotnet nuget push <pkg>.nupkg -s https://your-host/v3/index.json -k <API_KEY>Pushes require a key with the package:push scope (Publisher or Admin). On Enterprise,
trusted publishing lets CI push without a long-lived
key, and scoped API keys restrict a key to specific
package patterns and operations.
Unlist
Section titled “Unlist”dotnet nuget delete <id> <version> -s https://your-host/v3/index.json -k <API_KEY>Unlisting hides a version from search/restore without deleting it (the NuGet “unlist” semantics).
Download counts
Section titled “Download counts”Every successfully served .nupkg counts as one download. Counts appear:
- in v3 search responses (
downloadsper version,totalDownloadsper package), so Visual Studio / Rider package managers show real numbers; - as the search ranking: results are ordered by total downloads (alphabetical when tied);
- in the web UI — a Downloads column on Browse and a badge on the package detail page;
- as a feed-wide total on the admin Insights dashboard.
Counts are raw server-side statistics: a CI agent restoring the same package daily counts each
time, while 404s, quarantined versions, and unauthorized requests never count. Increments are
buffered in memory and written to the database periodically (default every 30 seconds,
NUGETKEEP_DOWNLOAD_FLUSH_INTERVAL); a hard crash can lose at most one flush window. Deleting a
version (e.g. retention) deletes its counts with it.