Skip to content

logotip4ik/copper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

copper lion
Photo by 五玄土 ORIENTO on Unsplash

🦁 Copper

A unified runtime and package manager.
Consolidate your version managers into a single binary.


Why?

I built copper to solve two specific problems in my own workflow:

  1. Tool Fatigue: I loved using fnm for Node, but I didn't want to install and configure a separate version manager for every language (Go, Python, Zig, etc). copper brings that "auto-switch on cd" experience to all your runtimes.
  2. Update Lag: General package managers like Homebrew are excellent, but they often lag behind on fast-moving binaries like Zig. copper fetches packages directly from the source or official mirrors, so you get updates the moment they are released.

With copper, I was able to remove fnm entirely and stop using brew for language runtimes. It effectively functions as a universal package manager for your dev tools.

Supported Packages

Copper supports both language runtimes and standalone tools.

Runtimes

Package Description
node JavaScript runtime (supports .nvmrc)
go The Go programming language (supports go.mod and .go-version)
python Python language runtime (supports .python-version)
rust Systems programming language
zig General-purpose programming language
bun Fast all-in-one JavaScript runtime
cyber Fast, efficient scripting language

CLI Tools

Package Description Package Description
neovim Vim-based text editor lazygit Terminal UI for git
helix Modal editor inspired by Kakoune & Vim (built in Rust) tree-sitter Incremental parsing system & CLI
ripgrep Blazing-fast line-oriented search tool fd Simple, fast alternative to find
fzf Interactive command-line fuzzy finder zoxide Smarter cd that learns your habits
opencode The open source coding agent. just Modern command runner (Makefile alt)
btop Beautiful resource monitor dufs Fast static file server
git The stupid content tracker jj Git-compatible VCS with modern workflow
View all supported tools

Installation

Quick Install

To install the binary automatically:

curl -fsSL https://raw.githubusercontent.com/logotip4ik/copper/master/install.sh | bash

Prefer not to pipe curl to bash? You can download the binary manually from the Releases page.

Setup

  1. Ensure the copper binary is in your $PATH.
  2. Initialize the shell hook to enable auto-switching capabilities:
Shell Add to Config
Zsh (~/.zshrc) eval "$(copper shell zsh)"
Bash (~/.bashrc) eval "$(copper shell bash)"
Fish (config.fish) copper shell fish | source
PowerShell ($PROFILE) Invoke-Expression (&copper shell pwsh)

Note: Windows support is theoretical...

Usage

Basic Command Structure:

copper <action> <package> [version]

Common Actions

Action Command Description
Install copper add node 22 Fetches the latest Node 22.* version.
List copper list-remote zig Shows available versions for installation.
Use copper use node 24 Sets the default global version.
Check copper installed Lists all packages currently managed by copper.
Update copper update-self Updates the copper binary itself.

Auto-Switching

Copper hooks into your directory changes. If you cd into a folder with a config file (e.g., .nvmrc, .python-version), copper will automatically update current default runtime to the specified version.

Limitations

Global state - copper currently does not support per-session versioning. If you change the default version in one terminal tab, it affects all other sessions. This works fine for personal development machines, but PRs are welcome if you need session isolation.

About

🦁 A unified runtime and package manager.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •