BoltPM is a fast, modern, cross-platform NPM alternative written in Rust. It features a CLI, real-time GUI, private registry, and dynamic plugin system.
cargo install boltpm
git clone https://github.com/nom-nom-hub/boltpm.git
cd boltpm
cargo build --workspace
- CLI: install, remove, update, run, link, etc.
- GUI: Tauri desktop app with live logs, dependency tree, search, config, and dark mode
- Registry: self-hosted, token-auth, CORS, JSON index
- Plugins: dynamic hooks for install lifecycle
# Initialize a new project
boltpm init
# Install a package
boltpm install lodash
# Remove a package
boltpm remove lodash
# Update all packages
boltpm update
# Run a script
boltpm run build
cargo build --workspace
cd registry
cargo run
# Registry runs at http://localhost:4000
cd cli
cargo run -- init
cargo run -- install dep1
cargo run -- remove dep1
cd gui
cargo tauri dev
# Initialize a new project
boltpm init
# Install a package
boltpm install lodash
# Remove a package
boltpm remove lodash
# Update all packages
boltpm update
# Run a script
boltpm run build
# List installed packages
boltpm list
# Search for packages
boltpm search react
# Install with specific version
boltpm install lodash@4.17.21
# Install as dev dependency
boltpm install --dev jest
# Install globally
boltpm install -g typescript
# Publish a package to your registry
curl -X PUT -F "version=1.0.0" -F "description=My lib" -F "tarball=@package.tgz" http://localhost:4000/v1/mylib/
# Use plugins (place compiled .so/.dylib/.dll in .boltpm/plugins/)
# Plugins are called automatically on install/remove/update
- Q: The GUI is blank or buttons don't work?
- A: Make sure you run
cargo tauri dev
in thegui
directory and that the backend is built.
- A: Make sure you run
- Q: Install fails with a network error?
- A: Ensure the registry is running at
http://localhost:4000
.
- A: Ensure the registry is running at
- Q: Plugin not executing?
- A: Check that your plugin is in
.boltpm/plugins/
and built for your OS/arch.
- A: Check that your plugin is in
- Q: How do I clear the cache?
- A: Delete the
.boltpm/cache/
directory.
- A: Delete the
- All navigation is keyboard accessible.
- Error messages are shown at the top of the GUI.
- Tooltips are available for all major actions.
- For best experience, keep your plugins stateless and your
package.json
valid. - Dark mode is available for comfortable coding at night!
- Plugins are dynamic libraries in
.boltpm/plugins/
. - Hooks:
preinstall
,postinstall
,onError
. - Example plugin logs the hook and package info.
- To develop a plugin:
- Implement the
run(ctx: PluginContext)
function. - Build as
cdylib
. - Place in
.boltpm/plugins/
.
- Implement the
- All errors print clear messages to the console and GUI.
- If a plugin fails, the
onError
hook is called. - GUI shows logs, dependency tree, and config for troubleshooting.
- For best UX, keep plugins simple and stateless.
- PRs welcome! Run
cargo test --workspace
before submitting. - See
dev.md
for architecture and roadmap.
MIT