A standalone CLI package manager for zapstore, built on Nostr.
go install github.com/zapstore/zapstore@latestOr download a pre-built binary from the releases page.
zapstore install <app-id> # fetch from relay, download, verify, install
zapstore update [<app-id>] # update one or all installed packages
zapstore remove <app-id> # uninstall
zapstore list # show installed packages
zapstore search <query> # discover packages on relay
zapstore cleanup # remove old versions and dangling symlinks
# Search for packages
zapstore search jq
# Install a package
zapstore install com.github.jqlang.jq
# List installed packages
zapstore list
# Update all packages
zapstore update
# Remove a package
zapstore remove com.github.jqlang.jq
# Clean up old versions
zapstore cleanup- Queries the zapstore relay (
wss://relay.zapstore.dev) for app, release, and asset metadata (Nostr kinds 32267, 30063, 3063) - Filters assets by your current platform and architecture
- Downloads the binary and verifies its SHA-256 hash against the signed event
- Places the binary in
<data-dir>/packages/<app-id>/<version>/and symlinks it into<data-dir>/bin/
zapstore follows the XDG Base Directory Specification:
| Path | Purpose | Default |
|---|---|---|
$XDG_DATA_HOME/zapstore/packages/ |
Installed binaries | ~/.local/share/zapstore/packages/ |
$XDG_DATA_HOME/zapstore/bin/ |
Symlinks to active versions | ~/.local/share/zapstore/bin/ |
$XDG_STATE_HOME/zapstore/state.json |
Installed package metadata | ~/.local/state/zapstore/state.json |
Add the bin directory to your PATH:
export PATH="$HOME/.local/share/zapstore/bin:$PATH"Migration: If you have an existing ~/.zapstore directory, it will be automatically migrated to the XDG paths on first run.
git clone https://github.com/zapstore/zapstore.git
cd zapstore
go build -o zapstore .| Variable | Description |
|---|---|
XDG_DATA_HOME |
Override data directory (default: ~/.local/share) |
XDG_STATE_HOME |
Override state directory (default: ~/.local/state) |
NO_COLOR |
Disable colored terminal output |
MIT