The IPM CLI

The only package manager built for polyglot infrastructure.

Package Bicep, Terraform, PowerShell, Python, and CI/CD pipelines together into single versioned artifacts. One install command. Every component. Any team.

zsh — ipm
➜ azure-stack ipm publish -p org/azure-stack -f ./ -v 1.0.0 IPMHub Cli v0.14.0 Preparing a new package from local folder '/src/azure-stack/'... Publishing package org/azure-stack version 1.0.0 to the hub... Publishing version 1.0.0 for package org/azure-stack completed successfully. ➜ my-app ipm add --package org/azure-stack IPMHub Cli v0.14.0 Adding package org/azure-stack to the workspace... Package 🛡 org/azure-stack version 1.0.0 was added to the workspace and is synchronized.
10+
Supported languages & runtimes
3 days → 30 min
Client onboarding time
89%
Fewer version-related failures
9
Built-in CLI operations
The reality today

Infrastructure tooling shouldn't fight your delivery pipeline.

Teams know what to build. But scattered repos, mystery modifications, and auth friction create constant drag — and it shows up in every deployment window.

01
Workspace chaos — IaC scattered across 8 repos
No single place for the complete solution. Teams assemble from memory. One missing script and the whole deployment stalls.
02
Mystery modifications — who changed what, when?
No version history across the full stack. Bicep updated but pipeline not. Things break at 2am and nobody knows which change caused it.
03
Authentication complexity blocks CI/CD automation
PAT tokens, manual login flows, platform-specific auth. Every pipeline is a bespoke auth puzzle that somebody has to maintain forever.
How the IPM CLI works

Build once. Publish everywhere.
Sync every team in seconds.

01 — Build
Structure your complete solution in one folder
Place IaC, scripts, and pipeline files side-by-side in a single directory. Define an ipm.json manifest to declare the package name, version, and contents. IPM validates everything is in order before anything leaves your machine.
➜ ipm build --source ./ --dry-runDry Run - Package Preview── Files to be included ──────────────│ 1 │ /src/stack/main.bicep│ 2 │ /src/stack/pipelines/deploy.yml│ 3 │ /src/stack/scripts/Deploy.ps1
02 — Publish
Push a versioned artifact to the IPMHub registry
A single command publishes the validated artifact. IPMHub runs a malware scan, stores the immutable artifact, and notifies any teams or workspaces tracking the package. Semantic versioning keeps older installs stable.
➜ ipm publish -p org/stack -f ./ -v 1.0.0Publishing version 1.0.0 for package org/stack completed successfully.
03 — Install & sync
Any team installs the complete solution in one command
Teams run ipm add to pull the full package — Bicep, scripts, pipelines, nested dependencies — into their workspace in one operation. Run ipm sync at any time to bring every package up to its latest compatible version.
➜ ipm add --package org/stackPackage 🛡 org/stack version 1.0.0 was added to the workspace and is synchronized. ➜ ipm syncPackage 🛡 org/stack version 1.0.0 synchronization completed in ⚡ 23 ms.Synchronization completed.
CLI capabilities

Everything the full lifecycle needs.
Nothing it doesn't.

Language-agnostic by design
Bicep, Terraform, PowerShell, Python, YAML, Bash, GitHub Actions, Azure DevOps — all in one package. IPM doesn't care which language your infrastructure speaks.
Nested package composition
Packages can depend on other packages. Entire dependency trees resolve in a single install — no manual stitching, no missing sub-components.
Workspace sync
ipm sync brings any workspace up to the latest version of every package it uses. One command keeps an entire team's environment current.
Non-interactive CI/CD auth
Client secrets enable zero-prompt authentication in any pipeline. Set IPM_CLIENT_ID and IPM_CLIENT_SECRET — works with Azure DevOps, GitHub Actions, Jenkins, GitLab CI, and more.
Build & export
ipm build validates your package before it ever leaves your machine. ipm export creates distributable archives for air-gapped or offline environments.
9 operations, one tool
add, build, export, publish, sync, status, info, search, list — the complete infrastructure package lifecycle covered by a single binary on every platform.
In production

From three-day onboarding
to thirty minutes.

MSP · 40+ client environments
Client onboarding: 3 days → 30 minutes

Before IPM, onboarding a new client meant manually assembling infrastructure from a dozen repos, hunting for the right script versions, and hoping nothing had drifted. With a single ipm add command, the complete solution lands in the client workspace — Bicep, PowerShell, pipelines, and all nested dependencies — exactly as tested.

3 days → 30 min
Client onboarding time
1 command
Full environment deployment
"We eliminated the manual assembly entirely. The client gets working infrastructure from day one, built on code we've already tested and verified." — Platform Engineer, MSP
Enterprise DevOps team · 200+ deployments/month
89% fewer version-related deployment failures

Development teams were assembling infrastructure from scattered repos — Bicep from one place, the deployment pipeline from another, helper scripts from a third. Version mismatches caused failures nobody could diagnose quickly. Packaging the full stack together meant every deploy used components that were tested together, at the same version, every time.

89%
Fewer version-related failures
0
Version mismatches across stack
"Full-stack versioning changed everything. Bicep, pipelines, and scripts ship together — if it passed testing, it passes production." — DevOps Lead, Enterprise Platform Team
Common questions

IPM CLI answers.

How do I install IPM CLI?
On Windows, run winget install ipmhub.ipm. On macOS and Linux, download the binary directly from the releases page. See docs.ipmhub.io for the full install guide including Homebrew and one-line shell installer options.
How does CI/CD authentication work?
Use client secrets for non-interactive authentication — no browser login, no PAT tokens, no manual prompts. Set the IPM_CLIENT_ID and IPM_CLIENT_SECRET environment variables in your pipeline. Works with Azure DevOps, GitHub Actions, Jenkins, GitLab CI, CircleCI, and any other CI/CD platform that supports environment variables.
Can I use IPM with any infrastructure language?
Yes. IPM is entirely language-agnostic. A single package can contain Bicep, Terraform, PowerShell, Python, YAML pipeline files, and Bash scripts side-by-side. IPM packages whatever files you put in the folder — it does not care what language they are written in.
What's the difference between ipm sync and ipm add?
ipm add installs a new package into your workspace for the first time, resolving and downloading it along with any nested dependencies. ipm sync updates all packages already in your workspace to their latest compatible versions — use it to keep an existing workspace current without reinstalling from scratch.

Ready to end infrastructure
code chaos?

Join 150+ teams who've replaced scattered repos and manual assembly with versioned, installable packages. One command to deploy the complete solution — every component, every time.

➜ ipm publish -p org/azure-stack -f ./ -v 1.0.0Publishing version 1.0.0 for package org/azure-stack completed successfully. ➜ ipm add --package org/azure-stackPackage 🛡 org/azure-stack version 1.0.0 was added to the workspace and is synchronized.