Skip to content
ocx
install

ocx

The Simple Package Manager. Turn any OCI registry into a cross-platform binary distribution platform. Zero extra infrastructure.
  • OCI-NativeYour Docker Hub, GHCR, ECR, or Harbor is the package server. No new infrastructure, no new credentials, no new licenses.
  • Cross-PlatformOne identifier resolves to the right binary on Linux, macOS, Windows, or FreeBSD. OCI multi-platform manifests handle the rest.
  • ReproducibleContent-addressed storage deduplicates automatically: if two tags resolve to the same build, they share one copy on disk. A local index snapshot locks every resolution. Same command, same result, today, tomorrow, offline.
  • Automation-FirstJSON output, clean environments, composable commands. Designed from the ground up for CI pipelines and build systems.

One command. Any platform. No root required.

Terminal window
curl -fsSL https://setup.ocx.sh/sh | sh

See Installation for pinned versions, manual downloads, and CI setup.

Open a new terminal and run ocx --remote --global add uv:0.10 to install your first package.

Wire ocx into your editor, your CI, and your shell. See all integrations.

  • VSCode extension: install from the VS Marketplace or Open VSX.
  • GitHub Action: ocx-sh/setup-ocx installs ocx, pulls the project toolchain, and exports its environment in one step.
  • direnv: ocx direnv init drops an .envrc so direnv activates the project toolchain on cd.

A closer look at what makes ocx different.

Your Registry is the Package Server

Install packages directly from any OCI-compliant registry. No taps, no formulas, no Artifactory. The same infrastructure you already run for container images now serves your development tools.

One command installs and activates a package. Switch versions instantly. Every install is content-addressed by SHA-256 digest: what you download is what you run.

Same Command on Every Platform

Think docker pull, but for standalone binaries. You name the package, and OCI multi-platform manifests resolve the right build for your OS and architecture. No platform conditionals, no filename guessing, no architecture mapping tables.

Write ocx add astral-sh/uv:0.10 once. It works on your Mac, your CI runner’s Linux, and your colleague’s Windows machine.

Composable Environments

Every package declares its own environment variables. ocx package exec layers them on top of your current shell, and with --clean it strips everything back to only what the packages provide: no host pollution, no PATH conflicts, no stale state.

Compose multiple packages in a single invocation. Each one contributes its variables. Pass --clean when you need a hermetic, reproducible scope, ideal for CI pipelines and build systems.

Built for Automation

Every command returns structured JSON with --format json. Exit codes are meaningful. Environment variables compose cleanly. There is no interactive prompt, no “press Y to continue”, no color code that breaks your parser.

ocx package exec runs commands with package-declared variables. ocx package env prints them for your build system. ocx env --ci writes them directly into GitHub Actions or GitLab CI runtime files. The entire CLI is designed to be called by other tools, not typed by humans.

Relocatable and Air-Gap Ready

Every install is a self-contained directory: no global state, no registry database, no fragile symlinks into system paths. Copy the store to a USB drive, zip it into a CI cache artifact, or scp it to a machine behind a firewall.

The local index snapshot plus the content-addressed object store is everything ocx --offline needs. Bundle a toolchain once, redistribute it to air-gapped hosts, and ocx --offline exec resolves it without ever touching the network.

Join the community and help shape what comes next.

  • Roadmap: see what we are building and what is coming next.
  • Package catalog: browse available packages on the public registry.
  • Discord: ask questions, share feedback, and follow development.
  • GitHub: star the repo, file issues, or contribute code.

ocx: your registry, your binaries, no extra infrastructure. Free to use, fork, and extend.