Skip to main content
The 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

Place providers.yaml in your config directory:
  • Docker: /data/config/providers.yaml (default)
  • Custom: Set via SERVER_CONFIG_DIR environment variable

Basic Structure

providers.yaml
github:
  extra:
    maxReleases: 5
    includePrereleases: false

npm:
  extra:
    tags:
      - latest
      - beta

docker:
  extra:
    tags:
      - latest
      - slim
      - alpine

python:
  extra:
    maxReleases: 5

Provider Configuration

Each provider can have an extra object with provider-specific options. These act as defaults that can be overridden per-package in lists.yaml.

Supported Providers

GitHub Provider

Fetches releases from GitHub repositories.
github.extra.maxReleases
number
default:3
Maximum number of releases to fetch per repository (1-10).Default: 3
github.extra.includePrereleases
boolean
default:false
Whether to include pre-release versions in the results.Default: false
Example
github:
  extra:
    maxReleases: 5
    includePrereleases: false
  • 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

The providers.yaml configuration uses the following schema:
const ProviderConfig = Schema.Struct({
  extra: Schema.Record({
    key: Schema.String,
    value: Schema.Union(
      Schema.String,
      Schema.Boolean,
      Schema.Number,
      Schema.Array(Schema.Union(Schema.String, Schema.Boolean, Schema.Number)),
    ),
  }).pipe(Schema.optional),
});

const ProvidersConfig = Schema.Record({
  key: Schema.String,  // Provider name
  value: ProviderConfig,
});
This allows flexible configuration of any provider with typed extra options.

Default Values

If providers.yaml is missing or a provider is not configured, Shipped uses these defaults:
github:
  extra:
    includePrereleases: false
    maxReleases: 3

Overriding Per-Package

Global provider settings can be overridden for individual packages in lists.yaml:
lists.yaml
# Global GitHub settings: maxReleases=3, includePrereleases=false
# This package overrides to show 10 releases including pre-releases

- name: My Packages
  groups:
    - name: frameworks
      packages:
        - provider: github
          name: vuejs/vue
          extra:
            maxReleases: 10
            includePrereleases: true
The package-level extra options are merged with provider defaults, with package-level values taking precedence.

Complete Example

providers.yaml
# GitHub provider defaults
github:
  extra:
    # Fetch up to 5 releases per repository
    maxReleases: 5
    # Don't include pre-release versions
    includePrereleases: false

# NPM provider defaults
npm:
  extra:
    # Track latest, beta, and next dist-tags
    tags:
      - latest
      - beta
      - next
    # Use npmjs.com for links (not npmx.dev)
    npmx: false

# Docker provider defaults
docker:
  extra:
    # Track latest, alpine, and slim tags
    tags:
      - latest
      - alpine
      - slim

# Python provider defaults
python:
  extra:
    # Fetch up to 5 releases per package
    maxReleases: 5

Validation and Error Handling

  1. Provider names - Must be one of: github, npm, docker, python
  2. Extra fields - Must match the provider’s schema:
    • GitHub: maxReleases (number), includePrereleases (boolean)
    • NPM: tags (string[]), npmx (boolean)
    • Docker: tags (string[])
    • Python: maxReleases (number)
  3. Type checking - Values must match expected types (string, boolean, number, or arrays)

Invalid Configuration Handling

When provider configuration is invalid:
  1. The invalid provider configuration is ignored
  2. Default values are used for that provider
  3. A warning is logged with validation details
  4. The application continues running normally
If the entire providers.yaml file is malformed (invalid YAML syntax), the file is ignored and defaults are used for all providers.

IDE Autocompletion

Enable IDE autocompletion by adding the schema reference:
providers.yaml
# yaml-language-server: $schema: https://raw.githubusercontent.com/nipakke/shipped/main/docs/config-files/providers.json

github:
  extra:
    maxReleases: 5
    includePrereleases: false
This provides:
  • Provider name autocompletion
  • Field validation for each provider
  • Type hints for configuration values

Hot Reloading

Changes to providers.yaml are automatically detected and applied without restart:
  1. Edit providers.yaml in your config directory
  2. Save the file
  3. Shipped automatically reloads provider configuration
  4. 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

Enable pre-releases for all GitHub packages:
providers.yaml
github:
  extra:
    maxReleases: 5
    includePrereleases: true
Set up tracking for latest, beta, and canary builds:
providers.yaml
npm:
  extra:
    tags:
      - latest
      - beta
      - canary
      - next
Track specific image variants across all Docker packages:
providers.yaml
docker:
  extra:
    tags:
      - latest
      - alpine
      - 16-alpine
      - 20-alpine
Show more releases for better version history:
providers.yaml
github:
  extra:
    maxReleases: 10

python:
  extra:
    maxReleases: 10

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
To see provider configuration changes immediately, restart the container or wait for the cache to expire.

Environment Variables

Some provider behaviors can be influenced by environment variables:
VariableTypeDefaultDescription
SERVER_PACKAGES_FETCH_CONCURRENCYinteger10Max parallel package fetches
SERVER_PACKAGES_CACHE_TTLinteger10800Cache TTL in seconds
SERVER_PACKAGES_CACHE_DISABLEDbooleanfalseDisable package caching

Next Steps

Lists Configuration

Define packages to track

General Settings

Configure application behavior

Build docs developers (and LLMs) love