Migration: legacy hush.yaml to current v3
Migrating a legacy hush.yaml repo to current v3
Summary
| Who’s affected | Repositories that still use hush.yaml plus legacy encrypted source files |
| Estimated time | 5-15 minutes |
| Migration style | Big-bang per repository |
What changes
The migration converts legacy repo authority into the current v3 layout:
.hush/manifest.encrypted.hush/files/**.encrypted~/.hush/state/projects/<project-slug>/active-identity.json~/.hush/state/projects/<project-slug>/user/local-overrides.encryptedIt also keeps legacy files in place until cleanup succeeds, so you can inspect the result before removing transitional leftovers.
Standard flow
-
Inventory the repo without mutating it
Terminal window hush migrate --from v2 --dry-runThis inventories:
hush.yaml- encrypted source files such as
.env.encryptedor.hush.encrypted - legacy targets and include/exclude filters
- repo references to
hushcommands in docs or scripts
-
Run the big-bang conversion
Terminal window hush migrate --from v2This creates
.hush/manifest.encrypted, v3 file documents, migrated target bundles and targets, plus machine-local migrated overrides. -
Inspect the migrated repo
Terminal window hush config showhush inspect -
Remove validated leftovers
Terminal window hush migrate --from v2 --cleanupCleanup is rerun-safe. It removes transitional leftovers only after a successful validated migration state exists.
What gets mapped
- legacy shared, development, and production encrypted sources become v3 file documents under
env/project/* - legacy local overrides become the machine-local encrypted override doc
- legacy targets become v3 bundles plus targets
- legacy include/exclude rules are preserved as migration metadata and reflected in the migrated target runtime surface
After migration
Use the current v3 commands:
hush config showhush config active-identityhush set DATABASE_URL "postgres://db"hush run -- npm startDo not keep teaching or scripting hush.yaml as the canonical repo model after migration.
Historical pages
The other pages in this directory can still describe older shipped releases such as v2 → v3, v3 → v4, or v4 → v5. Treat them as historical context, not as the current repository model.