Managing applied overlays
After you apply overlays, 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 has a versioned public format. 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 can add fields without a change to schema_version.
A release must use a new schema_version and a new major version if it:
- Removes or renames fields.
- Changes the meaning of a field.
- Changes an enum string value.
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 command copies the files to the overlay source. It replaces the original files 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”Open the file selection menu again. The current files are already 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 change overlay files in your repository, use sync to copy the changes back to the overlay source:
repoverlay sync my-overlayPreview what would be synced:
repoverlay sync my-overlay --dry-runUse this command to share a configuration change with other repositories that use the overlay.
Updating remote overlays
Section titled “Updating remote overlays”For overlays from GitHub, repoverlay can get the latest changes and apply them again:
# 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 an update to the overlay source on GitHub.
- When you want configuration changes from your team.
- At regular intervals, to get 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-runWhen you remove an overlay, repoverlay deletes its symlinks or copies, git exclude entries, and state files. If exclude cleanup fails, repoverlay still removes managed files and state where possible. The command returns a non-zero exit code 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 the same as repoverlay remove --all followed by repoverlay apply, but in one atomic operation.
When to use switch
Section titled “When to use switch”- To change between language-specific overlay sets, such as Rust and TypeScript configuration.
- To change between personal and team overlay configuration.
- To return to a known overlay state.