Skip to content

Support cooldown profiles selected by registry URL #665

Closed

Description

@andrew

One proxy process currently has one cooldown policy. Clients cannot choose a different waiting period through their registry URL, so offering several policies requires separate instances.

Add opt-in named policies under cooldown.profiles, exposed at /cooldown/{profile}/{registry}/. For example, a 3d profile would provide /cooldown/3d/npm/, /cooldown/3d/go/, /cooldown/3d/cargo/ and /cooldown/3d/gem/.

Each profile defines its own cooldown policy, with the existing default, ecosystem, package and package-pattern settings. Existing unprefixed URLs keep using the current global policy. Unknown profiles return 404. Profile routes expose package protocols only.

Profiles share database records, artifact storage, upstream metadata and fetch coordination. Rewritten metadata, validators and download URLs must retain the selected profile, so responses from different policies cannot be mixed. Concurrent requests and cooldown expiry need request-level coverage.

The draft implementation will depend on #533 for checks on Cargo, RubyGems, Hex, Pub, Conda and cached Helm downloads. A cached artifact fetched through a more permissive profile must still be withheld by a stricter profile.

Activity

  1. self-assigned this
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions