Documentation
Everything from a fresh project to a locked, reproducible install – the manifest, the cache, the security model, and the plugin system on top.
#Installation
Hatch ships as a single static binary. Download the archive for your platform, extract it, and place the executable somewhere on your PATH.
#Start a project
Scaffold a fresh project with hatch init, or adopt an existing Flutter app with hatch migrate, which converts your pubspec.yaml into a hatch.json manifest. Then resolve and cache everything with hatch install.
#The manifest
A small hatch.json (or hatch.yaml) declares your dependencies, SDK constraints, scripts, and profiles. Path dependencies point at local packages for monorepos; require-dev holds test-only packages.
#Commands
The core binary drives dependency resolution and toolchain management. Plugins register their own subcommands once installed.
hatch init [name]- Scaffold a new project
hatch migrate- Convert pubspec.yaml to hatch.json
hatch install- Resolve + download + cache dependencies
hatch add <pkg> [ver]- Add a dependency (--dev for dev-only)
hatch remove <pkg>- Remove a dependency
hatch update [pkgs...]- Update some or all dependencies
hatch why <pkg>- Explain why a package is in the graph
hatch run <script>- Run a manifest script
hatch fvm <list|use|install|sync>- Manage Flutter SDKs via FVM
hatch sdk-update- Update Flutter / Dart constraints
hatch cache stats- Cache location, size, package count
hatch cache prune --aggressive- Re-apply debloat, trim to lockfile
hatch cache clear --force- Empty the machine-global cache
hatch plugin install <name>- Install a plugin from the registry
hatch plugin list- List installed plugins
hatch plugin remove <name>- Remove an installed plugin
#File purging
On extract, Hatch strips example apps, tests, docs, editor folders, and stray binaries, while always keeping lib/, bin/, tool/, the manifests, and README / LICENSE / CHANGELOG. It reads the pubspec to preserve declared assets, fonts, and real platform folders. Set HATCH_DEBLOAT=0 to disable.
#Caching
One cache per machine, shared across every project, with debloated package trees, transient downloads, and version metadata. Relocate it with HATCH_CACHE_DIR; inspect and trim it with the cache subcommands.
#Security
Every download must carry a checksum or the install aborts. Dependency scripts prompt on first run and remember the answer; non-interactive environments default to deny. Every bypass and trust decision is written to ~/.hatch/audit.log.
#Plugins
Plugins extend the core with new capabilities. Install one from the registry and Hatch fetches the right asset for your platform, verifies its checksum, and registers its subcommands. The flagship ios plugin builds and ships iOS without a Mac.
#iOS plugin
Once installed with hatch plugin install ios, the plugin adds the hatch ios commands. A single command runs the full Apple pipeline – compile, assemble, sign, and upload – producing a TestFlight build entirely on Linux or Windows. Add your distribution certificate and an App Store Connect API key, and there is no Mac, no Transporter, and no password anywhere in the flow.
#Continuous integration
Because Hatch is a single binary with clean exit codes and non-interactive output, wiring it into CI is a matter of caching the toolchain and exporting your secrets.
Heads up
This is a living document for the public release. Command flags and output shown here illustrate the workflow and may change as the toolchain stabilises.