providers.yaml file configures global defaults for package providers. These settings apply to all packages using each provider unless overridden in lists.yaml.
File Location
Placeproviders.yaml in your config directory:
- Docker:
/data/config/providers.yaml(default) - Custom: Set via
SERVER_CONFIG_DIRenvironment variable
Basic Structure
providers.yaml
Provider Configuration
Each provider can have anextra object with provider-specific options. These act as defaults that can be overridden per-package in lists.yaml.
Supported Providers
- GitHub
- NPM
- Docker
- Python
GitHub Provider
Fetches releases from GitHub repositories.Maximum number of releases to fetch per repository (1-10).Default:
3Whether to include pre-release versions in the results.Default:
falseExample
Implementation Details
Implementation Details
- Fetches from GitHub’s REST API
- Filters out draft releases
- Optionally filters out pre-releases based on
includePrereleases - Limits results to
maxReleases(clamped between 1 and 10) - Package format:
owner/repo(e.g.,facebook/react)
Schema Structure
Theproviders.yaml configuration uses the following schema:
Default Values
Ifproviders.yaml is missing or a provider is not configured, Shipped uses these defaults:
Overriding Per-Package
Global provider settings can be overridden for individual packages inlists.yaml:
lists.yaml
extra options are merged with provider defaults, with package-level values taking precedence.
Complete Example
providers.yaml
Validation and Error Handling
Validation Rules
Validation Rules
- Provider names - Must be one of:
github,npm,docker,python - Extra fields - Must match the provider’s schema:
- GitHub:
maxReleases(number),includePrereleases(boolean) - NPM:
tags(string[]),npmx(boolean) - Docker:
tags(string[]) - Python:
maxReleases(number)
- GitHub:
- Type checking - Values must match expected types (string, boolean, number, or arrays)
Invalid Configuration Handling
When provider configuration is invalid:- The invalid provider configuration is ignored
- Default values are used for that provider
- A warning is logged with validation details
- The application continues running normally
IDE Autocompletion
Enable IDE autocompletion by adding the schema reference:providers.yaml
- Provider name autocompletion
- Field validation for each provider
- Type hints for configuration values
Hot Reloading
Changes toproviders.yaml are automatically detected and applied without restart:
- Edit
providers.yamlin your config directory - Save the file
- Shipped automatically reloads provider configuration
- All packages use the new defaults on next fetch
Cached package data is not immediately refetched. Wait for the cache TTL (default: 3 hours) or restart to force a refetch with new provider settings.
Common Patterns
Track pre-releases globally
Track pre-releases globally
Enable pre-releases for all GitHub packages:
providers.yaml
Track multiple NPM dist-tags
Track multiple NPM dist-tags
Customize Docker image variants
Customize Docker image variants
Track specific image variants across all Docker packages:
providers.yaml
Increase release history
Increase release history
Show more releases for better version history:
providers.yaml
Cache Considerations
Provider settings affect how packages are fetched, but cached data is not immediately invalidated:- Cache TTL: Default 3 hours (10,800 seconds)
- Force refresh: Restart the container to clear cache
- Disable cache: Set
SERVER_PACKAGES_CACHE_DISABLED=true
Environment Variables
Some provider behaviors can be influenced by environment variables:| Variable | Type | Default | Description |
|---|---|---|---|
SERVER_PACKAGES_FETCH_CONCURRENCY | integer | 10 | Max parallel package fetches |
SERVER_PACKAGES_CACHE_TTL | integer | 10800 | Cache TTL in seconds |
SERVER_PACKAGES_CACHE_DISABLED | boolean | false | Disable package caching |
Next Steps
Lists Configuration
Define packages to track
General Settings
Configure application behavior