Managing Applied Overlays
Once overlays are applied, you can check their status, edit them, update them from their source, and remove them.
Checking status
Section titled “Checking status”See what overlays are currently applied:
repoverlay statusCheck a specific overlay:
repoverlay status --name my-overlayStatus shows each overlay's name, source, and the files it manages.
Status JSON schema
Section titled “Status JSON schema”Use JSON output for scripts and CI:
repoverlay status --jsonrepoverlay status --json --name my-overlayThe status --json output is a versioned public contract. The top-level
schema_version field is currently 1.
{ "schema_version": 1, "overlays": [ { "name": "my-overlay", "applied_at": "2026-03-15T12:34:56Z", "source": { "type": "local", "path": "/Users/me/overlays/my-overlay" }, "files": [ { "source": ".envrc", "target": ".envrc", "link_type": "symlink", "entry_type": "file", "status": "ok" } ] } ]}source.type is one of local, github, library, or overlay_repo.
Source objects include the stable fields relevant to that source type:
local:path, optionalsource_namegithub:url,owner,repo,git_ref,commit, optionalsubpathlibrary:nameoverlay_repo:org,repo,name,commit, optionalresolved_via, optionalsource_name
File entries use string values for link_type (symlink, copy, merged),
entry_type (file, directory), and status (ok, missing).
Patch releases may add fields without changing schema_version. Removing or
renaming fields, changing field meanings, or changing enum string values requires
a new schema_version and a semver-major release.
Editing an overlay
Section titled “Editing an overlay”The edit command lets you add or remove files from an applied overlay.
Add files
Section titled “Add files”repoverlay edit add my-overlay newfile.txtrepoverlay edit add my-overlay file1.txt file2.txtThis copies the files to the overlay source, replaces the originals with symlinks, and updates the overlay state.
Remove files
Section titled “Remove files”repoverlay edit remove my-overlay oldfile.txtInteractive re-selection
Section titled “Interactive re-selection”Re-run the interactive file selector with current files pre-selected:
repoverlay edit my-overlayPreview changes
Section titled “Preview changes”repoverlay edit add my-overlay new.txt --dry-runSyncing changes back
Section titled “Syncing changes back”If you've modified overlay files in your repo (e.g., edited a symlinked config), the sync command copies those changes back to the overlay source:
repoverlay sync my-overlayPreview what would be synced:
repoverlay sync my-overlay --dry-runThis is useful when you've tweaked a config in one repo and want to propagate the change to all repos using that overlay.
Updating remote overlays
Section titled “Updating remote overlays”When overlays come from GitHub, repoverlay can pull the latest changes and re-apply them:
# Update all GitHub-sourced overlaysrepoverlay update
# Update a specific overlayrepoverlay update my-overlay
# Preview changesrepoverlay update --dry-runWhen to update
Section titled “When to update”- After the overlay source has been updated on GitHub
- When you want to pick up config changes shared by your team
- Periodically, to stay in sync with upstream overlay changes
Removing overlays
Section titled “Removing overlays”# Remove a specific overlayrepoverlay remove my-overlay
# Remove all applied overlaysrepoverlay remove --all
# Interactive selectionrepoverlay remove --interactive
# Preview what would be removedrepoverlay remove my-overlay --dry-runRemoving an overlay deletes its symlinks (or copies), cleans up the git exclude entries, and removes the state files. If exclude cleanup fails, managed files and state are still removed where practical, but the command exits non-zero so you can repair .git/info/exclude.
Switching overlays
Section titled “Switching overlays”The switch command atomically replaces all existing overlays with a new one:
repoverlay switch ~/overlays/typescript-airepoverlay switch https://github.com/user/ai-configs/tree/main/rustThis is equivalent to running repoverlay remove --all followed by repoverlay apply, but as a single atomic operation.
When to use switch
Section titled “When to use switch”- Changing between language-specific overlay sets (e.g., Rust vs TypeScript configs)
- Swapping between personal and team overlay configurations
- Resetting to a known overlay state