Publish binaries to npm, pypi, and github releases.
Project description
Bin Upload
Easily distribute binaries via npm, pypi, and GitHub releases.
bin-upload is a CLI tool built with Bun that packages and publishes pre-built binaries to multiple registries and platforms. It supports:
- npm — Publishes a main package that depends on platform-specific binary packages using optionalDependencies.
- PyPI — Builds wheel (
.whl) packages for each platform-specific tag. - GitHub Releases — Creates releases and uploads archive assets (
.tar.gzor.zip).
Installation
NPM
# Globally
npm install -g @d-dev/bin-upload
# or as a package dep
npm install -D @d-dev/bin-upload
# or run with npx
npx @d-dev/bin-upload <command>
Python
pip install bin-upload
# or with UV
uv tool install bin-upload
# or run with uvx
uvx bin-upload <command>
GitHub Releases
Download the appropriate binary for your platform from the releases page.
Requirements
The following must be installed and available on your path.
1. Init
bin-upload init
This will walk you through an interactive prompt and generate a bin-upload.config.yaml file.
More on configuration here.
2. Pack
Git flow
git add .
git commit -m "..."
git tag -a v1.0.0 -m "Release v1.0.0"
bin-upload pack
Non-git flow
bin-upload pack -s npm.packageJson.version=1.0.0 -s pypi.metadata.Version=1.0.0
This will generate artifacts in .bin-upload that can be published to npm (tarballs), pypi (wheel), and GitHub (tarballs and zips).
More on the pack command, including how to test artifacts prior to publishing, can be viewed here.
3. Publish
Create a .env file with the following tokens.
# NPM granular access token that bypasses 2FA
# https://docs.npmjs.com/about-access-tokens
NPM_TOKEN="YOUR NPM TOKEN"
# GitHub token with repository metadata read and
# contents write permissions
GITHUB_TOKEN="YOUR GITHUB TOKEN"
PYPI_TOKEN="YOUR PYPI TOKEN"
Git flow
git push origin main --follow-tags
bin-upload publish
Non-git flow
bin-upload publish
This publishes the artifacts generated by the pack command.
More on the publish command, including how to publish with GitHub actions, can be viewed here.
Verify
Once published, install from npm or PyPI and confirm:
# npm
npx YOUR_PACKAGE ...
# PyPI
uvx YOUR_PACKAE ...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bin_upload-0.2.0-py3-none-win_arm64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-win_arm64.whl
- Upload date:
- Size: 41.5 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01ef893d0b2b4da07028677c7db1c5df6bab076f3b9b5bff3bf9c3b36b1eed88
|
|
| MD5 |
39c76871e135228bd39cec9905b6c7bb
|
|
| BLAKE2b-256 |
998e69ceb68939d9388a1b321f4de5ac306d7b25d2d55318460b08a47b2fe94a
|
File details
Details for the file bin_upload-0.2.0-py3-none-win_amd64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-win_amd64.whl
- Upload date:
- Size: 43.3 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0d8472b1a2179bf66e235c518cda9a23680b3eaeb1c9abf1be0fc1b482e9755
|
|
| MD5 |
5b65cfe26a979c42f87d9074db4c61dd
|
|
| BLAKE2b-256 |
a927c959d4cad887ebf4449567eb9c10781943083b03e77b1e73e69b14b0173e
|
File details
Details for the file bin_upload-0.2.0-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 38.5 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a9224aef1a23b652d2d29d6876b566296ae7bd6408b9b54647ac42c17cd9ed2
|
|
| MD5 |
e320af191999808d588a6709bf0c2ca7
|
|
| BLAKE2b-256 |
c2555ed894d3ca5039613f64752e60691389844d79ea0e6a881995b08bbe2da9
|
File details
Details for the file bin_upload-0.2.0-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 38.5 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0f93638acacf2e52f3ac04ab4b7d4af0eb96530f6fbbc24c3fe0c11161b9eee
|
|
| MD5 |
696ce15ac86ccadb1d1455af3f62a232
|
|
| BLAKE2b-256 |
4225a31e8d5270abdf8e08fbf727725fa92daa4e5ee6ed7df9e266dcc2a7f5a7
|
File details
Details for the file bin_upload-0.2.0-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 41.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28fc3341d84f1c6bb6460ec7c4bfe42dd6ac285db70a81611401f63979a15d0d
|
|
| MD5 |
d4e392f824b9ccf43f0ca1317495eb10
|
|
| BLAKE2b-256 |
5734a5bef8d4cdb6da280b2e61558f020980ebca3224bba5f57c61b6e0e39d9b
|
File details
Details for the file bin_upload-0.2.0-py3-none-manylinux_2_17_aarch64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-manylinux_2_17_aarch64.whl
- Upload date:
- Size: 41.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d73eb52d1a51c952f46eae830456fb9ad45a04f50b102c3e1370ab8ddd701cd
|
|
| MD5 |
9dbe2b68f8a74da02b5c2b44c0c470ba
|
|
| BLAKE2b-256 |
99c054d6ad57fc717911139ab2360498bad8bdae38d455a482a14c6778b88a0e
|
File details
Details for the file bin_upload-0.2.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 23.9 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cee5427741f34c97d2b438a9bb1401974f3d4e81444b12fdcabc91f0c775547
|
|
| MD5 |
ac592114f3b2a410efc4e8d983939b14
|
|
| BLAKE2b-256 |
45831c2a8dec60942cb12e9ba5a218a330f5806d341f270a694b8046c4be21d4
|
File details
Details for the file bin_upload-0.2.0-py3-none-macosx_10_9_x86_64.whl.
File metadata
- Download URL: bin_upload-0.2.0-py3-none-macosx_10_9_x86_64.whl
- Upload date:
- Size: 25.8 MB
- Tags: Python 3, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c84618c4817c92671339eb411d852efdbc4f38bbf0d4cdf8835756800746888
|
|
| MD5 |
d76834e7639757e51a4c1d33fb368356
|
|
| BLAKE2b-256 |
cef1fff346a708c6052a30d4b41646cb71070c13c400b8c05035419f92b6951e
|