| Crates.io | solpm |
| lib.rs | solpm |
| version | 0.1.0 |
| created_at | 2025-09-09 21:59:43.237174+00 |
| updated_at | 2025-09-09 21:59:43.237174+00 |
| description | A Solana program manager for installing and using Anchor IDLs like packages. |
| homepage | |
| repository | https://github.com/0xsouravm/solpm |
| max_upload_size | |
| id | 1831668 |
| size | 215,540 |
npm for Solana Programs"Missing package manager for Solana development that actually makes sense.
π Browse Programs at solpm.dev | π Documentation | π οΈ Get Started
Picture this: You're building the next breakthrough dApp on Solana. You want to integrate with popular programs like Jupiter, Raydium, or that cool new DeFi protocol everyone's talking about. Here's what happens next:
Step 1: The Great IDL Hunt
Step 2: The Copy-Paste Circus
# What developers do today (don't do this!)
curl https://someprogram.com/maybe/idl.json > program.json
# Wait... is this even the right version?
# What network is this for?
# When was this last updated?
Step 3: The TypeScript Tango
Step 4: The Version Chaos
This isn't just annoyingβit's expensive:
solpm transforms Solana development from IDL archaeology into modern package management.
# Install any program dependency in seconds
$ solpm add jupiter --network mainnet --codegen
β
Found Jupiter v2.1.4 on mainnet
β
Downloaded IDL from registry
β
Generated TypeScript client
π Ready to integrate!
# Install your entire dependency stack
$ solpm install --codegen
β
Installing 12 dependencies...
β
All TypeScript clients generated
π Your dApp is ready to ship!
π― One Command Installs
solpm add raydium --network mainnet
# Gets the right IDL, right version, right network
# Every. Single. Time.
β‘ Instant TypeScript Generation
// Auto-generated, type-safe client
import { createFeedbackBoard } from './client/FeedanaClient';
const { tx, pda } = await createFeedbackBoard(
wallet,
"my-board-id",
"QmX...ipfsHash"
);
// No more guessing instruction parameters!
π Registry Managed
π¦ Dependency Management That Works
{
"programs": {
"feedana": {
"version": "0.1.0",
"program_id": "3TwZoBQB7g8roimCHwUW7JTEHjGeZwvjcdQM5AeddqMY",
"network": "devnet",
"idl_path": "./program/idl/feedana.json"
}
},
"devPrograms": {}
}
// Before SOLPM: 100s of lines of manual TypeScript
// After solpm: One command
$ solpm add my-program --codegen
// Generates complete client with:
// β
Type-safe instruction wrappers
// β
PDA derivation functions
// β
Network configuration
// β
Helpful account comments (writable/signer)
// β
TODO notes for missing accounts
# Install from crates.io
cargo install solpm
# 1. Add a program dependency (creates SolanaPrograms.json)
$ solpm add feedana --codegen
β
Downloaded Feedana v0.1.0 IDL
β
Generated TypeScript client
β
Created SolanaPrograms.json
# 2. Use in your app
$ cat program/client/FeedanaClient.ts
// Your integration code
import { createFeedbackBoard } from './program/client/FeedanaClient';
const { tx, pda } = await createFeedbackBoard(
wallet,
"my-app-feedback",
"QmX...ipfsHash"
);
That's it! No hunting, no guessing, no manual TypeScript. Just clean, type-safe integration.
For dApp Developers:
# Add program dependencies (creates SolanaPrograms.json)
solpm add <program-name>[@version] [--dev] [--codegen]
solpm add feedana --network devnet --codegen
# Install all dependencies from existing SolanaPrograms.json
solpm install --codegen
solpm codegen
For Program Authors:
# Initialize publishing config (creates SolanaPrograms.toml)
solpm init [--network mainnet|devnet]
# Publish your program
solpm login
solpm publish
solpm logout
# Custom IDL paths
solpm add my-program --path ./custom/idl/program.json
# Development dependencies
solpm add test-program --dev --network devnet
# Network targeting
solpm add jupiter --network mainnet
solpm add jupiter --network devnet # Different IDLs per network!
your-solana-dapp/
βββ SolanaPrograms.json # π Dependency lock file
β
βββ program/
β βββ idl/ # π Downloaded IDL files
β β βββ feedana.json
β β βββ jupiter.json
β β βββ other-program.json
β β
β βββ client/ # π― Generated TypeScript clients
β βββ FeedanaClient.ts
β βββ JupiterClient.ts
β βββ OtherProgramClient.ts
β
βββ src/ # π» Your app source code
βββ app.ts
your-solana-program/
βββ SolanaPrograms.toml # βοΈ Publishing configuration
βββ Anchor.toml # π Anchor project config
βββ Cargo.toml # π¦ Rust dependencies
β
βββ programs/
β βββ your-program/
β βββ src/
β βββ lib.rs
β
βββ target/
β βββ idl/
β βββ your_program.json # π Generated IDL
β
βββ tests/
βββ your-program.ts
SolanaPrograms.json (Dependency Management)
{
"programs": {
"jupiter": {
"version": "2.1.4",
"program_id": "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB",
"network": "mainnet",
"idl_path": "./program/idl/jupiter.json"
}
},
"devPrograms": {
"test-program": {
"version": "0.1.0",
"program_id": "...",
"network": "devnet",
"idl_path": "./program/idl/test-program.json"
}
}
}
SolanaPrograms.toml (Publishing Config)
[program]
name = "my-awesome-program"
version = "1.0.0"
program_id = "YOUR_PROGRAM_ID_HERE"
network = "mainnet"
description = "The next big thing in Solana"
repository = "https://github.com/username/my-awesome-program"
authority_keypair = "~/.config/solana/id.json"
# 1. Initialize your program for publishing
$ solpm init --network mainnet
# 2. Configure your program details
$ cat SolanaPrograms.toml
[program]
name = "my-defi-protocol"
version = "1.0.0"
program_id = "ABC123..."
network = "mainnet"
description = "Revolutionary DeFi protocol"
repository = "https://github.com/username/my-defi-protocol"
authority_keypair = "~/.config/solana/id.json"
# 3. Authenticate with the registry
$ solpm login
Enter your API token: spr_...
Enter you encryption password:
# 4. Publish to the registry
$ solpm publish
β
Validating program authority...
β
Signing IDL with program authority...
β
Uploading to registry...
π Published my-defi-protocol v1.0.0!
Registry URL: https://registry.solpm.dev/programs/my-defi-protocol
We welcome contributions from the Solana community!
A: solpm provides versioning, registry curation, automatic TypeScript generation, and dependency management. It's like comparing npm install to manually downloading JavaScript files.
A: solpm is completely free for use and upgrade.
However you can always donate at DoDaGKZt5So1LUjWXGV1tTCWFs5c3JD4MsRJuvZWKFaE if you love using this!
A: Absolutely! SOLPM is designed for automation. Use solpm install --codegen in your build scripts.
MIT License - see LICENSE for details.
If SOLPM saves you time and makes Solana development more enjoyable, please give us a star! β
Built with β€οΈ by @0xsouravm for the Solana community.
Ready to stop hunting for IDLs and start building amazing dApps? Try SOLPM today!
cargo install solpm
solpm --help
π Happy Building!