Skip to main content

PRPM

The package manager for the PyReact ecosystem.

CI PyPI Python License: MIT Docs

Create projects, install isolated dependencies, lock versions, and run scripts with a single tool.

Why PRPM?

PyReact projects are Python projects. PRPM builds on that ecosystem instead of creating an incompatible registry:

  • it uses the standard pyproject.toml as its manifest;
  • resolves packages from PyPI, including pyreact-framework;
  • automatically creates an isolated .venv;
  • generates a reproducible prpm.lock;
  • provides a familiar experience for npm users;
  • remains compatible with pip, build backends, and Python editors.

Installation

PRPM requires Python 3.9 or newer.

Quick install

The bundled installer sets up the published release from PyPI and verifies the resulting prpm command:

# Linux, macOS, and Windows Subsystem for Linux
curl -fsSL https://raw.githubusercontent.com/wanbnn/prpm/main/install.sh | bash
# Windows PowerShell
irm https://raw.githubusercontent.com/wanbnn/prpm/main/install.ps1 | iex

Both installers accept the same flags. Install the development version from GitHub:

curl -fsSL https://raw.githubusercontent.com/wanbnn/prpm/main/install.sh | bash -s -- --dev
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/wanbnn/prpm/main/install.ps1))) -Dev

Manual install

Install the latest published release with pip:

python -m pip install prpm

Install the development version directly from GitHub:

python -m pip install git+https://github.com/wanbnn/prpm.git

Set up a local development checkout:

git clone https://github.com/wanbnn/prpm.git
cd prpm
python -m pip install -e ".[dev]"

Quick start

Create and prepare a PyReact application:

prpm create my-app
cd my-app
prpm run dev

The command creates a complete SSR dashboard, installs pyreact-framework inside .venv, and writes the lockfile. The generated project includes a development server, interactive API, light and dark themes, static build, and tests.

For an existing project:

git clone https://github.com/wanbnn/agenticflow.git
cd agenticflow
prpm install
prpm exec agentic-flow

PRPM reads the dependencies already declared in [project].dependencies.

Commands

Command Description
prpm create <name> Create and install a PyReact application
prpm init [-y] Initialize a pyproject.toml
prpm install / prpm i Resolve, install, and update prpm.lock
prpm install --frozen Install exactly from the lockfile; ideal for CI
prpm add <package> Install and save a dependency
prpm add -D <package> Install and save a development dependency
prpm remove <package> Remove a dependency
prpm update [packages] Update all or selected dependencies
prpm list [--all] List direct or all dependencies
prpm run [script] List or run scripts
prpm exec <command> Run a binary inside .venv
prpm test Shortcut for the test script
prpm info <package> Query package metadata on PyPI
prpm lock [--check] Generate or validate the lockfile
prpm login / logout Store or remove a token from the keyring
prpm whoami Show the active credential and key
prpm key <action> Generate, show, or rotate the Ed25519 key
prpm pack Build, validate, and sign a wheel and sdist
prpm publish Package and publish to PyPI
prpm verify <target> Verify a local or published release
prpm doctor Show the environment status

Available aliases are i, rm, up, and ls.

Dependencies

Dependency specifiers follow Python standards:

prpm add httpx
prpm add "fastapi>=0.115,<1"
prpm add -D "pytest>=8"
prpm add "component @ git+https://github.com/user/component.git"

When no version is supplied, PRPM saves the minimum resolved version, such as httpx>=0.28.1.

Scripts

Declare scripts in the manifest:

[tool.prpm.scripts]
dev = "pyreact dev"
build = "pyreact build"
test = "python -m pytest"
serve = ["python", "-m", "my_app"]

Run them without manually activating .venv:

prpm run build
prpm test -q
prpm exec python --version

Manifest and lockfile

The manifest remains a valid pyproject.toml:

[project]
name = "my-app"
version = "0.1.0"
requires-python = ">=3.9"
dependencies = ["pyreact-framework>=1.0.5"]

[project.optional-dependencies]
dev = ["pytest>=8"]

Commit prpm.lock to version control. It records the exact version, source, and index-provided hashes for every package. In CI, use:

prpm install --frozen
prpm test

Frozen mode fails before installation if the manifest and lockfile differ.

Publishing packages

PRPM uses PyPI as its registry. Create a token at https://pypi.org/manage/account/token/ and sign in:

prpm login
prpm whoami

The token is entered without terminal echo and stored in the system keyring. It is never written to the project or passed on the command line. The first login also creates an Ed25519 identity:

prpm key show
prpm key rotate

Prepare and verify a release without publishing it:

prpm pack
prpm verify dist

The dist/ directory will contain the wheel, source distribution, prpm-manifest.json, and prpm-manifest.sig. The manifest records SHA-256 hashes, sizes, dependencies, and the public key; the signature authenticates that manifest.

Publish with:

prpm publish

PRPM rebuilds the artifacts, runs twine check, validates the signature, uploads the wheel and sdist, and compares remote hashes through the PyPI API. Use --no-build for an already packed release or --dry-run to validate the entire flow without uploading.

TestPyPI is also supported:

prpm login --repository testpypi
prpm publish --repository testpypi

For CI, provide PRPM_PYPI_TOKEN or PRPM_TESTPYPI_TOKEN as a secret environment variable. When no keyring is available, pack creates an ephemeral Ed25519 identity for that release.

Verify any published package:

prpm verify prpm
prpm verify "prpm==0.3.0"

Remote verification compares files with PyPI SHA-256 values and validates every wheel RECORD entry. PyPI remains the authority for maintainer and package-name ownership.

Development

python -m pip install -e ".[dev]"
python -m pytest
python -m prpm --help

See CONTRIBUTING.md for the contribution workflow and the complete documentation.

License

MIT. See LICENSE.

Metadata

Release files for prpm 0.3.0.post3122647247601

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prpm 0.3.0.post3122647247601
File Size Uploaded
prpm-0.3.0.post3122647247601.tar.gz 43.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for prpm 0.3.0.post3122647247601
File Interpreter ABI Platform
prpm-0.3.0.post3122647247601-py3-none-any.whl Python 3 none any Details

Total release size: 89.5 kB

Release files / prpm-0.3.0.post3122647247601.tar.gz

Download URL prpm-0.3.0.post3122647247601.tar.gz
Size 43.6 kB
Tags Source
SHA-256 checksum
How to use checksums
31c52d153b935542ad96800b2457c55e43fd2812c8623b4f487d63da9ec3bf01
BLAKE2b-256 checksum
How to use checksums
a60a99f8d8c2e2372e5033b6542f020f6e7b364605652fb433ddd4aa72aff176
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / prpm-0.3.0.post3122647247601-py3-none-any.whl

Download URL prpm-0.3.0.post3122647247601-py3-none-any.whl
Size 45.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7707a6ee8e51500c1b00bf2f824ce66b54c89f5be7c6193901ae2b0ddfbe1f93
BLAKE2b-256 checksum
How to use checksums
53f48cb0d81c3c90b257813d34d040e42d9c3ff720c1cc8b22f5bf2a4539195a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0.post3122647247601 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page