Installation
Homebrew (Recommended)
On macOS or Linux:
brew tap sid-technologies/pilumbrew install pilumFrom Source
Requires Go 1.25 or later (the version in Pilum’s go.mod):
go install github.com/sid-technologies/pilum@latestBinaries built this way report their version as dev, because the release version is injected at build time.
Verify Installation
pilum --versionOutput:
pilum v0.9.0The number is whatever release you installed.
Requirements
Pilum doesn’t talk to cloud APIs directly. Each recipe shells out to the provider’s own CLI, so install the tools for the targets you use and authenticate them as you normally would.
Target (type) | Tools on PATH |
|---|---|
gcp-cloud-run, gcp-cloud-run-job, gcp-artifact-registry-image, gcp-mig-container | docker, gcloud |
gcp-cloud-run-from-image | gcloud |
azure-container-apps | docker, az |
aws-lambda | sam (deploy), aws (pilum status / pilum logs) |
cloudflare-pages | node with npm, pnpm or yarn (wrangler runs via npx) |
npm | node and your package manager (npm, pnpm, yarn or bun) |
homebrew | go, git, tar, shasum |
Plus whatever your build.cmd calls (go, cargo, mvn, …).
The Homebrew recipe does not need the GitHub CLI: it clones and pushes the tap with git, using the token named in homebrew.token_env.
Upgrading
Upgrade with brew upgrade pilum, or go install github.com/sid-technologies/pilum@latest. Most releases need no changes to pilum.yaml. These do.
To 0.9
- Environment variables need the
PILUM_prefix. OnlyPILUM_TAG,PILUM_ENV,PILUM_TIMEOUTand so on set flag defaults. PlainTAG,ENV,DEBUGorTIMEOUTare ignored, so a CI job’s own variables no longer change what Pilum does. If you set the tag withTAG=..., switch toPILUM_TAGor pass--tag. See Flag Defaults and Environment Variables. type:is required when a provider has several recipes. A service withprovider: gcpand notypeused to fall back togcp-artifact-registry-imageand never deploy. It now failspilum checkand every pipeline command withprovider 'gcp' has several recipes; set type: to one of .... Addtype: gcp-cloud-run(or the recipe you meant). A misspelledtypeis now an error too, andjob.typeis never read.provider: aws,azure,cloudflare,npmandhomebrewstill work withouttype.- Check
pilum dry-runbefore the first deploy. Some configs that were silently ignored now take effect:cloud_run.cpu_throttling: falsenow sends--no-cpu-throttling, so CPU is always allocated, which costs more. Remove the key if you didn’t mean it.- List-form
env_varsandsecrets, and numeric values such asPORT: 8080, are now read. Before, they were dropped, and a list-formsecrets:made Cloud Run deploys clear the service’s secrets. - Azure Container Apps now receives
env_vars, and rejectssecrets. default_retriesin recipes is now honored when you don’t pass--retries.
- Docker images are built for
linux/amd64unlessbuild.platformsays otherwise. Images built on an Apple Silicon Mac used to bearm64. Setbuild.platform: linux/arm64for ARM targets. - npm publish no longer writes
.npmrc. Earlier releases left the registry token in the package’s.npmrc; delete it by hand if it’s there.
To 0.10
-T/--timeoutoverrides recipe step timeouts. Before, a recipe step’stimeout:always won, so-Tonly reached steps without one. Now an explicit-T(orPILUM_TIMEOUT, ortimeout:in.pilum.yml) applies to every step. Without it, nothing changes. If you pass a small-Ttoday, raise it or drop it:-T 30now cuts 300-second build steps, and the MIGwait for stablestep, to 30 seconds. See Timeouts and retries.
Telemetry
The first time you run Pilum in a terminal, it asks once whether to share anonymous build telemetry. Pressing Enter means no, and it never asks in CI. The GitHub Action turns it on by default. See Telemetry for exactly what’s sent and how to change your answer.
Shell Completion
pilum completion generates completion scripts for bash, zsh, fish and PowerShell.
# bash (current session)source <(pilum completion bash)
# zshpilum completion zsh > "${fpath[1]}/_pilum"
# fishpilum completion fish | source# PowerShellpilum completion powershell | Out-String | Invoke-ExpressionTo load completions in every session, add the line to your shell’s startup file (~/.bashrc, ~/.zshrc, ~/.config/fish/config.fish, or your PowerShell profile).
Next Steps
- Quick Start — Run
pilum initand deploy your first service - Service Configuration — Learn about
pilum.yaml - CLI Reference — All commands and flags