Upstream
Upstream is a rootless package manager for installing software directly from upstream release sources.
It installs binaries, archives, AppImages, and other release artifacts from sources like GitHub, GitLab, Gitea, direct URLs, and scraped download pages. It can also build from source when prebuilt artifacts are unavailable.
Features
- Install packages without root
- Automatically select assets for your OS and architecture
- Upgrade, remove, reinstall, and roll back packages
- Build from source using Rust, .NET, Go, Zig, or CMake
- Track
stable,preview, ornightlychannels - Pin packages to prevent upgrades
- Create desktop entries for GUI apps
- Import/export package manifests and full snapshots
- Optional checksum and signature verification
- Shell integration hooks and diagnostics
Installation
Recommended
Linux
|
MacOS
|
Windows
iwr -useb https://raw.githubusercontent.com/what386/upstream-rs/main/scripts/install/install.ps1 | iex
Cargo
Cargo installs do not support upstream upgrade self-updates.
Manual
Download a release from:
https://github.com/what386/upstream-rs/releases/latest
Then make it executable:
Quick Start
Initialize shell integration:
Install a package:
Install a specific asset kind:
Preview an install without changing anything:
Search for repositories:
Search interactively and install a selected result:
find prompts for the package name after selection and defaults to the selected repository name.
Probe releases, choose an asset, and install it:
Inspect parsed releases without installing:
Upgrade installed packages:
Check for available updates:
List installed packages:
Remove a package:
Run diagnostics:
API Tokens
Provider API tokens are optional, but they help avoid anonymous rate limits and are required for private repositories.
Set a GitHub token with:
For GitHub, open your profile menu, then go to Settings > Developer settings > Personal access tokens.
Both of these will work:
A fine-grained personal access token with public repository access.
A classic personal access token with read:project permissions.
Run upstream doctor after configuring tokens to verify that they work.
Common Workflows
Install from a release source
The canonical form is <repo-or-url> <name>. For git repositories, upstream can fall back to the repository name when <name> is omitted. Direct URLs and scraped download pages may still require <name>.
Examples:
Use --match and --exclude to guide asset selection:
Build from source
The canonical form is <repo-or-url> <name>. For git repositories, upstream can fall back to the repository name when <name> is omitted.
Examples:
Git source builds use cached workspaces under .upstream/cache/build/ so rebuilds and upgrades can reuse build output when the project build system supports it.
Supported build profiles:
rust
dotnet
go
zig
cmake
Upgrade packages
Manage packages
Rollback is package-name-specific. After upgrading across breaking local data changes, run upstream doctor --migrate when release notes or doctor recommend it.
Import and export
Command Overview
| Command | Purpose |
|---|---|
install |
Install from a release source |
build |
Build and install from source |
upgrade |
Upgrade packages |
remove |
Remove packages |
reinstall |
Reinstall using stored metadata |
rollback |
Manage rollback artifacts |
list |
Show installed packages |
changelog |
Show upstream release notes |
docs |
Search package documentation |
search |
Search provider repositories |
find |
Pick and install a search result |
probe |
Pick and install a release asset |
config |
Manage configuration |
package |
Pin, unpin, or rename packages |
hooks |
Manage shell integration |
import |
Import keys, manifests, or snapshots |
export |
Export manifests or snapshots |
doctor |
Check installation health |
Use -y or --yes to accept confirmation prompts automatically.
Documentation
Detailed documentation is available in docs/:
- Documentation index
- Installation and paths
- Command reference
- Package lifecycle
- Building from source
- Configuration
- Trust and verification
- Backup, import, and export
- Troubleshooting
Notes
Upstream installs packages in user space and does not manage dependencies.
License
MIT OR Apache-2.0