Upstream
Upstream is a rootless package manager for installing software directly from release sources like GitHub, GitLab, and arbitrary download pages.
It fetches release assets, selects the best match for your system, and keeps them updated.
Features
- Install from GitHub, GitLab, Gitea, direct URLs, or scraped pages
- Automatic OS + architecture detection (Linux/macOS, x86_64/ARM)
- Supports binaries, archives, AppImages, and compressed files
- Rootless (user-level installs)
- Track update channels:
stable,preview,nightly - Flexible asset matching and filtering
- Dry-run previews for install, build, upgrade, remove, rollback, and reinstall workflows
- Optional checksum and signature verification modes
Installation
Recommended (auto-install)
# Linux
|
# Linux (Fish)
|
# macOS
|
# Windows (PowerShell)
|
This installs the binary, enables self-updates, and configures shell completion for the installer shell.
Install with Cargo
Ensure Cargo bin is in PATH:
⚠️ Cargo installs do not support
upstream upgradeself-updates.
Manual install
- Download a release from https://github.com/what386/upstream-rs/releases/latest
- Make it executable:
Optional: install upstream via itself:
Quick Start
Initialize
Install a package
Example:
Search and inspect sources
Upgrade
Remove
List
Usage
Install
<name>→ local alias<source>→ repo (owner/repo) or URL
Options:
--kind→ asset type (auto,archive,binary, etc.)--provider→ override auto-detection (github,gitlab,gitea,direct,scraper)--channel→stable,preview,nightly--tag→ specific version--match-pattern/--exclude-pattern--desktop→ create launcher entry--yes→ accept the recommended discovered asset without prompting--dry-run→ preview resolution without downloading or writing files--trust→ verification mode (none,best-effort,checksum,signature,all)
Examples:
# GitHub install
# Direct download
# Download assets from a download page
Archives that contain platform-specific subdirectories are resolved automatically.
Use --match-pattern or --exclude-pattern to steer selection when an archive
ships multiple compatible payloads.
Upgrade
Use --check --machine-readable for script-friendly update checks.
Search and Probe
Remove
Config
Package management
Import / Export
Shell Completions
Upstream automatically installs package completion scripts for detected local
shells when a release includes matching bash, fish, or zsh files such as
<name>.fish, completions.bash, or completions/*.zsh. Archives and
AppImages are scanned after extraction.
Download upstream's own completion file from releases or generate one.
Install automatically via helper scripts:
pwsh -File scripts/install/completions.ps1
Install
Bash
Fish
mkdir -p ~/.config/fish/completions
cp upstream.fish ~/.config/fish/completions/
Zsh
Add to .zshrc if needed:
fpath=(/.zfunc )
&&
Architecture Detection
Upstream automatically selects assets based on:
- OS: Linux, macOS
- Arch: x86_64, ARM64
Selection is based on filename patterns and extensions.
Notes
- Upstream installs packages in user space (no root required)
- It does not manage system dependencies
License
MIT OR Apache-2.0