poly>

Package manager · macOS · Linux · Windows

One command.
Every package manager.

Poly installs from pip, npm, and checksum-verified binary releases behind a single unified command. No more remembering which tool owns which package.

See how routing works →

Why poly

Six ecosystems, one manifest

Poly works alongside pip and npm instead of replacing them. One command routes to whichever already has your package, and poly.json turns that into a manifest anyone can clone and reproduce with a single poly install.

01 · Auto-routed

poly install <name>

Poly checks its binary tap, then PyPI, then the npm registry, and installs from the first place the package actually exists. No need to remember if a tool ships as a Python package, an npm package, or a standalone binary.

02 · Verified

Checksummed binaries

Tap installs download a release asset over HTTPS, hash it with SHA-256, and compare against a pinned checksum in the formula before anything is extracted or placed on disk.

03 · Pinnable

name@version, anywhere

Append @version to any install, like poly install requests@2.31.0, and it's honored by the pip and npm adapters directly. One syntax, regardless of backend.

Mechanics

How a name resolves to an adapter

When you don't specify a backend, poly tries each adapter's Search in this order and installs through the first one that reports the package exists.

tap brew pip npm cargo go

You can also force a specific backend with a prefix:

CommandResolves to
poly install ripgrepfirst match: tap → brew → pip → npm → cargo → go
poly install tap:ripgrepforced binary download from the tap formula
poly install brew:wgetforced brew install wget
poly install pip:requestsforced pip install requests
poly install npm:lodashforced npm install -g lodash
poly install cargo:ripgrepforced cargo install ripgrep
poly install go:golang.org/x/tools/cmd/goimportsforced go install <module>@latest

Tap formulas are plain YAML. A small set ship embedded in the poly binary, and you can drop more into ~/.poly/taps/<name>.yaml to override or extend them.

Install

Get poly

Native installers for macOS and Windows. Both are unsigned (no developer certificates yet), so your OS will warn on first run. That's expected for a young open-source tool.

macOS

Universal .pkg

Intel + Apple Silicon, installs to /usr/local/bin.

Download →

Windows

.exe installer

Installs to %LOCALAPPDATA%\Poly, adds itself to PATH, no admin needed.

Download →

Linux / any OS

Prebuilt binaries

Plain binaries for every platform, no installer, on the releases page.

All releases →

Prefer to build it yourself? One Go toolchain and a few seconds:

# macOS / Linux / Windows (with Go installed) git clone https://github.com/opencorp2030-ctrl/poly.git cd poly go build -o poly . ./poly version

Cross-compiling for another OS/architecture only needs GOOS and GOARCH:

# from any machine, targeting Windows on amd64 GOOS=windows GOARCH=amd64 go build -o poly.exe .

Reference

Commands

CommandDoes
poly install [[adapter:]name[@version] ...]install, auto-routed or forced; no args installs from poly.json
poly remove nameuninstall, via whichever adapter installed it
poly listshow everything poly has installed, and through what
poly search [adapter:]namecheck existence and latest version across adapters
poly info [adapter:]nameversion, summary, homepage, install status
poly initwrite poly.json from what's currently installed
poly upgradeupdate every installed package to its latest version
poly self-updateupdate poly itself to the latest release
poly account / login / logoutmanage your signed-in Poly account
poly send name version pathpublish a package to the community registry
poly versionprint the poly build version
poly doctorcheck for common setup problems

Full reference, including the poly.json format and how to write a tap formula, is on the docs page.

Poly Pro

Support poly, install faster

Poly is and stays 100% free and open source. Pro is a small optional pack: real perks, not a paywall on features that already work.

Real speed

Parallel installs

Free installs packages one at a time. Pro runs poly install a b c concurrently, so multi-package installs actually finish faster: a measurable gain, not a fake one.

Hands-off

Automatic package upgrades

Free runs poly upgrade only when you ask. Pro runs it automatically in the background (throttled, ~once a day) so your tools stay current without thinking about it.

Thanks

You fund development

A supporter badge next to your name in poly version and poly list, and you're directly paying for the next feature to get built.

Answered first

Priority support

Everyone gets the FAQ and docs for free. Pro accounts who email open.corp.2030@gmail.com get answered first.