Packages
LPM is a multi-ecosystem package registry. Packages are published under the @lpm.dev/ scope regardless of ecosystem.
Supported Ecosystems
| Ecosystem | Detected by | Manifest |
|---|---|---|
| JavaScript | package.json | package.json |
| Swift | Package.swift | Package.swift (parsed via swift package dump-package) |
| XCFramework | .xcframework bundle | Info.plist inside the bundle |
The CLI auto-detects your ecosystem when you run lpm publish. All ecosystems use the same @lpm.dev/owner.package-name naming format.
Package Format
JavaScript
{
"name": "@lpm.dev/your-username.my-utils",
"version": "1.0.0",
"main": "index.js",
"files": ["src/", "index.js"]
}
Swift
Your Package.swift is the manifest. The CLI also reads a minimal package.json for the LPM name and version:
{
"name": "@lpm.dev/your-username.my-swift-lib",
"version": "1.0.0"
}
Swift Package Collections
LPM provides Swift Package Collection endpoints so you can browse and add LPM packages directly in Xcode.
| Collection | URL |
|---|---|
| All Swift packages | https://lpm.dev/api/collections/swift |
| By owner | https://lpm.dev/api/collections/swift/{owner} |
| By category | https://lpm.dev/api/collections/swift/category/{category} |
To add a collection in Xcode: File → Add Package Collection, paste the URL, and click Add. Packages from the collection will appear in Xcode's package search.
XCFramework
Pre-built binary frameworks with an Info.plist defining platform slices and architectures:
{
"name": "@lpm.dev/your-username.my-framework",
"version": "1.0.0"
}
The name format is @lpm.dev/owner.package-name, where the owner is your username or organization name.
Distribution Modes
Every package has a distribution mode:
| Mode | Access | Revenue |
|---|---|---|
| Private | Owner or org members only | N/A |
| Pool | All Pool subscribers | Revenue share from $12/month subscription fund |
| Marketplace | Anyone who purchases a license | Direct sales (10-15% platform fee) |
New packages start as private. You can switch to marketplace or pool in package settings, but this change is permanent. Once a package is on the marketplace or in the pool, it cannot go back to private. This protects buyers and subscribers.
Learn More
- Package Types - Source packages, MCP servers, Cursor rules, GitHub Actions, and more
- Swift Package Registry - Native SPM integration for Swift library dependencies
- Source Code Delivery - The
lpm addcommand for extracting source files - Source Configuration -
lpm.config.jsonreference for authors - Versioning - Semantic versioning and publishing new versions
- Dependencies - Dependency types and licensing rules
- Distribution Modes - Detailed guide to each mode
- Quality Score - Automated scoring across documentation, code, testing, and health