
forge¶
Fast, Helm-identical helm dependency build / update for charts whose
dependencies live in OCI registries, classic chart repositories
(https://…/index.yaml) or local file:// directories.
forge writes the same charts/*.tgz and Chart.lock that Helm would, so
helm template, helm install and helm package keep working unchanged —
they just get their dependencies faster.
helm forge dep update ./my-chart # resolve ranges, download, write Chart.lock
helm forge dep build ./my-chart # download exactly what Chart.lock pins
helm template my-release ./my-chart
helm forge … (the plugin) and forge … (the standalone binary) take the
same commands and flags.
Why forge¶
-
Parallel
Every dependency is fetched concurrently, with global and per-host limits.
-
One auth handshake per registry
The first request to a host runs alone; the token it earns is reused by all the others.
-
Content-addressed cache
Archives are stored by sha256 and shared across charts, aliases and processes. A warm
dep buildmakes zero requests. -
Atomic
charts/
Nothing in
charts/changes unless every dependency succeeded. -
Machine-readable reports
-o jsongives CI a stable errorcodeper failed dependency instead of parsing text. -
Helm-identical output
Archive bytes,
Chart.lock(apart fromgenerated:) andhelm templateoutput are checked against real Helm 3 and Helm 4 in CI.
Install¶
Pick how you run Helm. The choice is remembered across the docs.
Download forge-windows-amd64.exe
or forge-windows-arm64.exe,
rename it to forge.exe and put it in a directory on your PATH.
Mirrors, checksums, upgrades and troubleshooting: Usage → Install.
What's new in 2.1¶
- Inspect dependencies.
dep treeshows each dependency's constraint, locked version, source and cache state;dep why NAMEexplains one of them. Both make no requests.dep outdatedcomparesChart.lockwith what registries offer now, and--fail-if-outdatedgates CI on it. See Usage →forge dep tree. - Manage the cache.
cache lslists cached charts with size and last use;cache gc --older-than 30d --max-size 2GiBevicts least recently used ones and is safe to run alongside other forge processes. See Usage →forge cache gc.
What's new in 2.0¶
- Chart repositories and
file://dependencies. Besides OCI registries, forge now fetches from classichttps://…/index.yamlrepositories (including@namereferences fromhelm repo add) and packages localfile://charts. -o jsonoutput.dep buildanddep updatecan print one JSON report: per-dependency status, digest, size and a classified error code, plus request counts per host. See Usage → JSON output.- Distributed as a Helm plugin. Install with
helm plugin install, run ashelm forge. The Homebrew tap is discontinued.
Benchmark¶
A parent chart with 50 subcharts (2.4 MiB in total): forge dep build took
4.6 s, helm dependency update --skip-refresh took 30.4 s — about
6.6× faster. forge started with 14 of the 50 charts in its cache; helm was
mostly waiting on the network (11 % CPU).

For a reproducible comparison (40 charts, +50 ms latency, cold and warm), run
make bench; see Development → Benchmark.
Scope¶
Supported
apiVersion: v2charts- dependencies with
repository:oci://…— OCI registrieshttps://…/http://…— classic chart repositories, whether or not they were added withhelm repo add@name/alias:name— repositories from Helm'srepositories.yaml(credentials and TLS settings are used too)file://…— local chart directories, packaged like Helm does
- exact versions and semver ranges (same resolver rules as Helm)
- aliases, conditions/tags, prerelease and build-metadata versions
Not supported (forge exits before any network call)
- dependencies without a
repository(unpacked incharts/) and other schemes (s3://, plugin getters) apiVersion: v1charts
Not implemented yet: push/pull, package, adaptive concurrency, HTTP/3.
Guides¶
| Guide | Read it when you want to… |
|---|---|
| Usage | install forge, run it, set flags, cache it in CI, read its errors, parse its -o json output |
| Architecture | understand how a run works and why it is fast and safe |
| Development | build, test, regenerate goldens, run the compat gate and benchmark |