Getting started
Install and publish private packages using the rvn CLI — the unified workflow for Python, npm, and Maven private repositories on Ravenstash.
Updated 2026-06-24
rvn is the Ravenstash CLI. It handles authentication, installs, and publishes across all supported ecosystems without touching your existing package manager configuration files.
Authenticate
rvn auth login
This starts a browser-backed device session. Approve it in the browser, then the CLI stores a rotating session token in your OS keyring. See rvn auth login for details.
Install a package
rvn pkg install internal-sdk
rvn pkg detects the package ecosystem from context (the current project manifest) and routes the request to the correct private repository. Target a specific repository explicitly with --repo:
rvn pkg install internal-sdk --repo acme/python
rvn pkg install @acme/design-system --repo acme/frontend
Publish a package
rvn pkg uploads directly to Ravenstash — it does not delegate to pip, npm, or mvn under the hood.
# Python: build your dist first, then publish
python -m build
rvn pkg publish dist/ --repo acme/python
# npm: publish from the project root
rvn pkg publish --repo acme/frontend
# Maven: publish from the project root
rvn pkg publish --repo acme/jvm
Omit --repo when the repository is set in the project configuration or environment.
Use native package managers
When you need the native package manager directly — for example in scripts that expect pip or npm CLI flags — use the rvn ecosystem wrappers. They inject the private repository URL and session credentials without modifying your global pip, npm, or mvn configuration files.
rvn pip install internal-sdk
rvn npm install @acme/design-system
rvn mvn install
All arguments after rvn pip (or rvn npm, rvn mvn) are forwarded as-is to the underlying tool. This makes it safe to use alongside existing config: your .npmrc, pip.conf, and Maven settings.xml are left untouched.
See the per-ecosystem guides for native tooling details:
CI and automation
For automated pipelines, use rvn pkg publish with a customer-scoped API token instead of a personal login session. See CI tokens.
