Dependable Elm dependencies
Publish Elm packages with fewer "works on my machine" moments. Repeatable builds, private registries, and sane policies — without inventing a new ecosystem.
Private code, cleanly
Use internal registries for company packages without duct-taping folders into repos.
Policy you can enforce
Allowlists, denylists, pinning rules, and "no surprises" upgrades that actually work.
Faster installs
Caching and shared artifacts so CI isn't downloading the world every run.
Works with Elm
No compiler forks, no Haskell hooks, no new language features. Just better dependency handling.
How it works
elm-wrap runs the Elm compiler as a subprocess and intercepts package-related operations (like install/solve) to apply your registries and rules.
When dependency work is done, it hands control back to elm. It's not trying to replace Elm.
It's trying to make dependency handling predictable in the places where Elm is
intentionally minimal.
Use it today
wrap package install me/mypackage --local-dev --from-path ../../mypackage-src
Local-dev mode: the compiler believes it's in the cache, but it's really in your dev
folder. No more editing source-directories and forgetting to clean up.
The Vision
elm-wrap aims to serve as a comprehensive solution for all code and tooling distribution around Elm — without reinventing the ecosystem.