Skip to main content

omnidist

Lint Test Security npm PyPI Gem License: MIT

Omnidist builds one Go CLI and packages its prebuilt binaries for npm, PyPI-compatible indexes through uv, and RubyGems. npm packages contain no postinstall downloader; installation uses platform-specific optional dependencies already present in registry tarballs.

Install or run

Consumers only need the package manager for the channel they use:

npx -y @omnidist/omnidist@latest --help
uvx omnidist --help
gem install omnidist && omnidist --help

Maintainers can also install from Go:

go install github.com/metalagman/omnidist/cmd/omnidist@latest

Maintainer prerequisites

Activity Required locally or in CI
Build the Go CLI Go 1.25+; Git when version.source: git-tag
npm stage/verify Go build artifacts; npm is required at publish preflight/upload
uv stage/verify/publish uv
gem stage/verify/publish Ruby and RubyGems (gem)
Token publish The selected backend's token environment variable

You do not need tooling for backends absent from the selected set.

Safe quick start

Run this in an existing Go repository with one package main under cmd/*:

omnidist init
$EDITOR .omnidist/omnidist.yaml
omnidist build
omnidist stage
omnidist verify
omnidist publish --dry-run

init detects the command name and main package. If discovery is ambiguous, specify both explicitly:

omnidist init --name mytool --main ./cmd/mytool

It refuses to replace an existing config. omnidist init --force intentionally replaces that file and is destructive; review or back it up first.

The generated file uses profiles mode and stores artifacts beneath .omnidist/default/. Select which package ecosystems participate in aggregate commands and generated CI:

profiles:
  default:
    tool:
      name: mytool
      main: ./cmd/mytool
    version:
      source: git-tag
    targets:
      - os: linux
        arch: amd64
    build:
      ldflags: -s -w
      tags: []
      cgo: false
    distributions:
      npm:
        package: "@my-org/mytool"
      uv:
        package: mytool

The npm and uv sections select those two backends. Add or remove npm, uv, and gem sections to define the canonical aggregate set. Existing files with a non-empty enabled-distributions selector remain readable, but every selected backend must have its own section. Aggregate commands always execute in npm → uv → gem order. --only can narrow the configured set but cannot enable an unavailable backend; backend-specific commands also require an explicit section.

To offer both unscoped and scoped install names while publishing one shared platform package set, configure the unscoped package as primary, add the scoped name to aliases, and use the scoped base for platform packages:

distributions:
  npm:
    package: omnidist
    aliases:
      - "@omnidist/omnidist"
    platform-package: "@omnidist/omnidist"
    access: public

Users can then install either equivalent meta package:

npm install -g omnidist
npm install -g @omnidist/omnidist

Both meta packages reference platform packages such as @omnidist/omnidist-linux-x64; the binaries are not duplicated under each meta-package name. package is published first among meta packages, followed by aliases in configured order, after all unique platform packages. If aliases is omitted, Omnidist publishes only package. If platform-package is omitted or blank, it defaults to package, preserving existing package names. The configured npm identity must be allowed to publish every meta and platform name; trusted publishing must be configured for every generated package.

Release flow

omnidist build
omnidist stage
omnidist verify
omnidist publish --dry-run
omnidist publish

Aggregate publish preflights every selected backend before the first upload. This prevents locally detectable late-backend failures from causing an avoidable partial release. Registry uploads are still external and are not transactionally reversible: a network or registry failure after uploads begin can leave a partial release.

Generate backend-aware GitHub Actions after the config is final:

omnidist ci
# use --force only to intentionally replace the generated workflow

The workflow contains setup, credentials, and publish jobs only for selected backends, plus a GitHub Release job for the built binaries.

Reference

Commands

omnidist init [--force] [--name <name>] [--main <package>]
omnidist quickstart
omnidist build
omnidist stage [--dev] [--only npm,uv,gem]
omnidist verify [--only npm,uv,gem]
omnidist publish [--dry-run] [--only npm,uv,gem]
omnidist ci [--force] [--dry-run]
omnidist npm stage|verify|publish|trust
omnidist uv stage|verify|publish
omnidist gem stage|verify|publish

Global flags are --config, --profile, and --omnidist-root. Omnidist also loads .env; corresponding selectors are OMNIDIST_CONFIG, OMNIDIST_PROFILE, and OMNIDIST_OMNIDIST_ROOT.

Use omnidist <command> --help for backend-specific options.

Common failures

  • Version resolution: an exact SemVer tag is required for git-tag; file reads version.file; env reads OMNIDIST_VERSION; fixed requires version.fixed.
  • Missing build version: run omnidist build before stage. Profiles store it at .omnidist/<profile>/dist/VERSION; legacy config uses .omnidist/dist/VERSION.
  • Missing npm platform package: run omnidist npm verify and confirm the target matrix and equal versions.
  • PyPI rejects +...: public PyPI/TestPyPI reject local version metadata; stage a publishable version.
  • Trusted publish fails: local preflight cannot prove remote OIDC configuration. Confirm repository metadata, workflow filename/environment, id-token: write, and registry-side trusted publisher settings.

Metadata

Release files for omnidist 0.1.41

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for omnidist 0.1.41
File
omnidist-0.1.41-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
omnidist-0.1.41-py3-none-manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
omnidist-0.1.41-py3-none-manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
omnidist-0.1.41-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
omnidist-0.1.41-py3-none-macosx_10_13_x86_64.whl Python 3 none macOS 10.13+ x86-64 Details

Total release size: 30.9 MB

Release files / omnidist-0.1.41-py3-none-win_amd64.whl

Download URL omnidist-0.1.41-py3-none-win_amd64.whl
Size 6.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
cecccc21cb135bcf5eed5873cb0798df8b95013e746450cb4778da62d8bdc10b
BLAKE2b-256 checksum
How to use checksums
4a2b23dbd43f341e603b60aff8c4a7564d951b74a90544573da6faf8b5d96694
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / omnidist-0.1.41-py3-none-manylinux2014_x86_64.whl

Download URL omnidist-0.1.41-py3-none-manylinux2014_x86_64.whl
Size 6.2 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
78c4bdf56b55c762dd1efa839f352389c5e951430d052e7a8243a5597a413a54
BLAKE2b-256 checksum
How to use checksums
52b0b97f74f9a968992d9f2e0ddca9ded020308a0f1c8c9d449c980016e4b909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / omnidist-0.1.41-py3-none-manylinux2014_aarch64.whl

Download URL omnidist-0.1.41-py3-none-manylinux2014_aarch64.whl
Size 5.8 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
49f3dfa9e0a4f3950bbf1e112297fa90e2e973374a56d1f3b54915b7c0d8adcc
BLAKE2b-256 checksum
How to use checksums
c0a77bafded46a1c4163018fa7ede9aa846312bf80a68e3c59bd076d62cadb22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / omnidist-0.1.41-py3-none-macosx_11_0_arm64.whl

Download URL omnidist-0.1.41-py3-none-macosx_11_0_arm64.whl
Size 6.0 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4c07d5e91f52b30381d4b6588d87912f0bf3d2bad7797db0fdccffdff7e46b1b
BLAKE2b-256 checksum
How to use checksums
81ca92ea2da45f7519fd0ec5f6c4156e7af38a64fa287b9bcfb0aeaccbb2d222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / omnidist-0.1.41-py3-none-macosx_10_13_x86_64.whl

Download URL omnidist-0.1.41-py3-none-macosx_10_13_x86_64.whl
Size 6.3 MB
Tags Python 3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
bcec5a87ea12f0d627deb16d9cd4ebd1e9cf033eedcd61f1393b513829ab05e7
BLAKE2b-256 checksum
How to use checksums
80ceeaabf4c4aab3635b61df46359dcfe46de93e41d93659fe17cdc2c6fe1a8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page