| Crates.io | upstream-rs |
| lib.rs | upstream-rs |
| version | 0.7.0 |
| created_at | 2025-12-27 14:24:17.248828+00 |
| updated_at | 2026-01-16 20:07:55.362334+00 |
| description | Fetch package updates directly from the source. |
| homepage | |
| repository | https://github.com/what386/upstream-rs |
| max_upload_size | |
| id | 2007325 |
| size | 275,405 |
Upstream is a rootless, GitHub-centric package manager for Unix-like systems. It installs and updates software from releases, supports multiple asset types, tracks update channels, and automatically selects the best asset for your OS and CPU architecture.
The easiest way to install Upstream is via the install script. This downloads the latest binary, sets it up in your user path, and enables self-updates.
curl -fsSL https://raw.githubusercontent.com/what386/upstream-rs/main/scripts/install.sh | bash
iwr -useb https://raw.githubusercontent.com/what386/upstream-rs/main/scripts/install.ps1 | iex
Since Upstream is published on crates.io, you can install it directly with Cargo:
cargo install upstream-rs
$CARGO_HOME/bin (usually ~/.cargo/bin).PATH:export PATH="$HOME/.cargo/bin:$PATH"
cargo install --force upstream-rs
⚠️ Installing via Cargo does not enable self-updates via Upstream’s "upgrade" mechanism. Use the auto-install script for self-contained updates, or use cargo to update Upstream.
chmod +x path/to/upstream-rs
⚠️ Manual installation does not enable self-updates. To enable self-updates:
{path/to/upstream-rs} install upstream what386/upstream-rs -k binary
Requires Rust and Cargo:
git clone https://github.com/what386/upstream-rs.git
cd upstream-rs
cargo build --release
Executable location:
./target/release/upstream-rs
Manual builds do not enable self-updates.
All commands support --help:
upstream <command> --help
upstream --init
upstream --clean to remove existing hooks.upstream install <owner>/<repo> -k <type> -n <name> [--update-channel <channel>] [--create-entry]
Example:
upstream install foo/my-cool-app -k binary -n mytool --create-entry
repo_slug → repository identifier (owner/repo).-k / --kind → asset type (binary, archive, appimage, compressed).-n / --name → local alias.-p / --provider → provider to source from (defaults to Github)--update-channel → track stable, beta, or nightly. (defaults to Stable)--create-entry → optional .desktop entry creation.upstream remove <package1> <package2> ... [--purge]
--purge → remove configuration data. (currently does not work.)upstream upgrade [<package1> <package2> ...] [--force] [--check]
--force → reinstall, even if up-to-date.--check → preview updates without applying them.upstream list [<package>]
upstream config <action> [options]
Available actions:
| Action | Description |
|---|---|
set |
Set configuration keys (key.path=value). Example: upstream config set github.apiToken=abc123 |
get |
Retrieve keys. Example: upstream config get github.apiToken |
list |
List all keys and their values. |
show |
Show full configuration as JSON. |
edit |
Open configuration file in editor. |
reset |
Reset configuration to defaults. |
upstream info <package>
Shows metadata: install path, provider, asset type, update channel, last update, and more.
Upstream automatically detects OS and CPU:
It selects the best asset for your system based on filename patterns and extensions. If installs fail, please open an issue.