# pnpm vs Poetry

**Leader by Vioscale score:** pnpm

| Attribute | pnpm | Poetry |
|---|---|---|
| **Vioscale score** | 69.5 (66% (medium)) | 58.4 (79% (high)) |
| activity.commits_last_30d | 100 | 8 |
| adoption.dependent_repos | 600 | 1,968 |
| adoption.github_stars | 36,223 | 34,293 |
| adoption.package_downloads_weekly | 174,694,273 | 15,796,363 |
| deployment.options | `{"self_hosted":true}` | `{"self_hosted":true}` |
| description.long | A package manager for JavaScript projects that emphasizes fast performance and minimal disk space requirements. | A command-line tool that manages Python project dependencies, enforces consistent builds across environments, packages code for distribution, and handles publication to package registries. It includes intelligent conflict resolution for dependencies and creates isolated virtual environments. |
| features.capabilities | `{"role":"manager_client","ecosystem":"js","deployment":"cli_local","workspaces":true,"open_source":"oss","pricing_model":"free","upstream_proxy":true,"package_formats":"multi","private_packages":true,"content_addressable":true,"lockfile_deterministic":true,"supply_chain_integrity":true}` | `{"role":"manager_client","ecosystem":"python","deployment":"cli_local","open_source":"oss","pricing_model":"free","package_formats":"multi","private_packages":true,"lockfile_deterministic":true}` |
| integrations.count | 7 | 1 |
| integrations.list | `[{"name":"GitHub Actions"},{"name":"AppVeyor"},{"name":"Azure Pipelines"},{"name":"Bitbucket Pipelines"},{"name":"CircleCI"},{"name":"npm"},{"name":"JSR"}]` | `[{"name":"PyPI"}]` |
| language.primary | Rust | Python |
| license.spdx | MIT | MIT |
| market.availability | `{"primaryMarkets":[],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` | - |
| platform.support | `{"cli":true}` | `{"cli":true}` |
| pricing | `{"type":"open_source","sourceUrl":"https://pnpm.io","retrievedAt":"2026-08-14T21:32:10.481Z"}` | `{"type":"free","sourceUrl":"https://python-poetry.org","retrievedAt":"2026-08-14T08:32:09.718Z"}` |
| pricing.free_tier | yes | yes |
| pricing.model | open_source | commercial |
| pricing.price_level | free | free |
| pricing.transparent | yes | yes |
| release.cadence_days | - | 34 |
| release.history | `[{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0","date":"2026-08-26T15:13:51Z","type":"stable","version":"v12.0.0"},{"url":"https://github.com/pnpm/pnpm/releases/tag/pnpr%400.1.0-alpha.8","date":"2026-08-26T15:13:05Z","type":"prerelease","version":"pnpr@0.1.0-alpha.8"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.11","date":"2026-08-25T09:49:21Z","type":"prerelease","version":"v12.0.0-rc.11"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.10","date":"2026-08-24T19:06:14Z","type":"prerelease","version":"v12.0.0-rc.10"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v11.24.0","date":"2026-08-24T19:10:25Z","type":"stable","version":"v11.24.0"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.9","date":"2026-08-23T23:17:08Z","type":"prerelease","version":"v12.0.0-rc.9"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v11.23.0","date":"2026-08-23T14:41:02Z","type":"stable","version":"v11.23.0"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.8","date":"2026-08-20T20:48:28Z","type":"prerelease","version":"v12.0.0-rc.8"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.7","date":"2026-08-18T10:37:27Z","type":"prerelease","version":"v12.0.0-rc.7"},{"url":"https://github.com/pnpm/pnpm/releases/tag/pnpr%400.1.0-alpha.7","date":"2026-08-18T10:37:48Z","type":"prerelease","version":"pnpr@0.1.0-alpha.7"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.6","date":"2026-08-15T17:17:48Z","type":"prerelease","version":"v12.0.0-rc.6"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v11.22.0","date":"2026-08-15T17:18:05Z","type":"stable","version":"v11.22.0"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.5","date":"2026-08-13T16:42:24Z","type":"prerelease","version":"v12.0.0-rc.5"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.4","date":"2026-08-12T14:42:28Z","type":"prerelease","version":"v12.0.0-rc.4"},{"url":"https://github.com/pnpm/pnpm/releases/tag/pnpr%400.1.0-alpha.6","date":"2026-08-12T14:38:30Z","type":"prerelease","version":"pnpr@0.1.0-alpha.6"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.3","date":"2026-08-09T20:32:01Z","type":"prerelease","version":"v12.0.0-rc.3"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.2","date":"2026-08-09T14:32:02Z","type":"prerelease","version":"v12.0.0-rc.2"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v11.21.0","date":"2026-08-09T14:25:31Z","type":"stable","version":"v11.21.0"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.1","date":"2026-08-07T14:57:20Z","type":"prerelease","version":"v12.0.0-rc.1"},{"url":"https://github.com/pnpm/pnpm/releases/tag/v12.0.0-rc.0","date":"2026-08-05T20:20:09Z","type":"prerelease","version":"v12.0.0-rc.0"}]` | `[{"url":"https://github.com/python-poetry/poetry/releases/tag/2.4.1","date":"2026-05-09T15:17:39Z","type":"stable","version":"2.4.1"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.4.0","date":"2026-05-03T15:04:59Z","type":"stable","version":"2.4.0"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.3.4","date":"2026-04-12T15:14:53Z","type":"stable","version":"2.3.4"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.3.3","date":"2026-03-29T12:23:09Z","type":"stable","version":"2.3.3"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.3.2","date":"2026-02-01T15:39:36Z","type":"stable","version":"2.3.2"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.3.1","date":"2026-01-20T14:51:42Z","type":"stable","version":"2.3.1"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.3.0","date":"2026-01-18T13:44:52Z","type":"stable","version":"2.3.0"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.2.1","date":"2025-09-21T14:50:15Z","type":"stable","version":"2.2.1"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.2.0","date":"2025-09-14T11:43:56Z","type":"stable","version":"2.2.0"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.1.4","date":"2025-08-05T03:52:52Z","type":"stable","version":"2.1.4"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.1.3","date":"2025-05-04T13:37:05Z","type":"stable","version":"2.1.3"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.1.2","date":"2025-03-29T21:38:44Z","type":"stable","version":"2.1.2"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.1.1","date":"2025-02-16T21:04:55Z","type":"stable","version":"2.1.1"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.1.0","date":"2025-02-15T14:07:10Z","type":"stable","version":"2.1.0"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.0.1","date":"2025-01-12T05:10:10Z","type":"stable","version":"2.0.1"},{"url":"https://github.com/python-poetry/poetry/releases/tag/2.0.0","date":"2025-01-05T11:53:49Z","type":"stable","version":"2.0.0"},{"url":"https://github.com/python-poetry/poetry/releases/tag/1.8.5","date":"2024-12-06T16:29:16Z","type":"stable","version":"1.8.5"},{"url":"https://github.com/python-poetry/poetry/releases/tag/1.8.4","date":"2024-10-14T15:43:01Z","type":"stable","version":"1.8.4"},{"url":"https://github.com/python-poetry/poetry/releases/tag/1.8.3","date":"2024-05-08T13:45:03Z","type":"stable","version":"1.8.3"},{"url":"https://github.com/python-poetry/poetry/releases/tag/1.8.2","date":"2024-03-02T15:26:36Z","type":"stable","version":"1.8.2"}]` |
| security.disclosure_policy | yes | - |
| security.scorecard | 6.9 | 3 |
| security.vulnerabilities | `{"count":0,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=npm&package_name=%40pnpm%2Ferror&per_page=100","last_12m":0,"max_severity":null}` | `{"count":5,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=pypi&package_name=poetry&per_page=100","last_12m":2,"max_severity":"CRITICAL"}` |

## Capabilities (Package Registries)

| Capability | pnpm | Poetry |
|---|:--:|:--:|
| **Core** |  |  |
| Role | Package manager client | Package manager client |
| **Ecosystem** |  |  |
| Ecosystem / language | JavaScript | Python |
| **Deployment** |  |  |
| Deployment | CLI-local | CLI-local |
| **Formats** |  |  |
| Package formats supported | Many formats | Many formats |
| **Hosting** |  |  |
| Private / scoped packages | ✓ | ✓ |
| Upstream proxy / caching | ✓ | - |
| **Resolution** |  |  |
| Lockfile / deterministic installs | ✓ | ✓ |
| Workspaces / monorepo | ✓ | - |
| Content-addressable store | ✓ | - |
| **Supply chain** |  |  |
| Supply-chain integrity | ✓ | - |
| Vulnerability / licence scanning | - | - |
| **Licensing** |  |  |
| Openness | Open-source | Open-source |
| **Pricing** |  |  |
| Pricing model | Free / OSS | Free / OSS |

*Source: Vioscale. Generated 2026-09-01T17:47:11.634Z. "-" = undocumented, not absent.*
