Bring your own storage
Eligible organizations can keep binary package data in a Cloudflare R2 or OVH Object Storage target they control. Ravenstash continues to manage repositories, packages, publishing, and authenticated delivery. Customer-owned storage is an Enterprise capability, including during an Enterprise trial.
Connect storage
Section titled “Connect storage”- Open the organization’s storage settings.
- Select Add storage.
- Choose Cloudflare R2 or OVH Object Storage and enter the target details and credentials.
- Validate the connection.
- Select the storage as an organization or namespace default, or as an eligible per-repository exception.
Ravenstash needs permission to read, write, list, and remove the package files it manages. Keep the storage private and reserve the Ravenstash-managed area for Ravenstash.
OVH targets use the regions Ravenstash lists during setup. Arbitrary S3-compatible endpoints and new AWS S3 targets are not accepted.
Custom package caches do not select or move storage independently. A new custom cache uses the organization’s current default managed location when it is created.
Developer access
Section titled “Developer access”Developers and CI continue using Ravenstash credentials, package URLs, and standard PyPI, npm, or Maven tools. Ravenstash may use a short-lived signed provider read or redirect for an eligible object, but reusable provider credentials never enter package-manager configuration.
Storage ownership
Section titled “Storage ownership”Your organization controls:
- The storage account and service agreement.
- Provider-side billing.
- Storage retention and backup settings.
- The credentials granted to Ravenstash.
Removing files manually or revoking access can make packages unavailable.
Move existing package files
Section titled “Move existing package files”Organization administrators manage placement from the namespace storage inventory. Select one or more namespaces and a validated destination. Package traffic continues while Ravenstash moves existing files in the background, retries recoverable failures, and provides a completion summary.
Use a per-repository exception only when one repository needs a different eligible destination from its namespace. Custom package caches cannot be moved through this workflow.

