Upstream Package Manager
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.
Features
- Install packages directly from git-like repository releases.
- Automatically detect system architecture (x86_64, ARM64) and OS (Linux, macOS).
- Supports binaries, archives, appimages, and compressed files.
- Rootless, user-level installation.
- Track multiple update channels (stable, beta, nightly).
Installation
Auto (Recommended)
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.
|
This method ensures Upstream can update itself in the future.
Manual Installation (Linux)
-
Download the latest release for your platform.
-
Ensure that it is executable:
⚠️ Manual installation does not enable self-updates. To enable self-updates, install Upstream through itself:
}
Manual Installation (MacOS)
MacOS support is experimental. Running Upstream on MacOS may work, but testing is limited. Please report any issues.
Build from Source
Requires both Rust and Cargo:
Executable location:
./target/release/upstream-rs
Usage
All commands can display help:
Initialize hooks
- Hooks Upstream into your system's PATH, for command-line applications.
- Use
--cleanto remove existing hooks.
Install a Package
Example:
repo_slug→ repository identifier (e.g.,owner/repo).-k/--kind→ asset type (binary,archive,appimage,compressed).-n/--name→ local alias for the installed package.--update-channel→ trackstable,beta, ornightlyreleases.--create-entry→ optional .desktop entry creation.
Remove Packages
- Uninstall one or more packages.
--purge→ also remove configuration data.
Upgrade Packages
- Updates specified packages or all packages if no names are given.
--force→ reinstall even if already up to date.--check→ see available updates without applying them.
List Installed Packages
- No arguments → list all installed packages with metadata.
- With a package name → show detailed metadata for that package.
Configuration Management
Available actions:
| Action | Description |
|---|---|
set |
Set one or more configuration keys (key.path=value). Example: upstream config set github.apiToken=abc123 |
get |
Retrieve one or more keys. Example: upstream config get github.apiToken |
list |
List all keys and their values. |
show |
Show the full configuration as JSON. |
edit |
Open the configuration file in your editor. |
reset |
Reset configuration to defaults. |
View Package Info
Shows metadata like install path, provider, asset type, update channel, last update, and more.
Architecture Detection
Upstream automatically detects your OS and CPU:
- Linux → x86, ARM
- macOS → x86, ARM
It selects the best asset for your system based on filename patterns and extensions. If installs fail, please open an issue.