Manage isolated git worktrees for parallel development. I know there are others out there, but this one works for my workflow best.
Silo creates separate working copies of your repository using git worktrees, each on its own branch. Useful for running multiple AI coding agents on different features simultaneously.
Key features:
- Create isolated worktrees with a single command
- Centralized storage at
~/.local/var/silo/{repo}/{branch} - Cross-repo silo management with smart name resolution
- Automatic cleanup of worktrees with no uncommitted changes
cargo install --path .Or install directly from the repository:
cargo install --git https://github.com/deverant/siloTo enable shell integration (required for silo cd to change your directory), add to your shell config:
Zsh (~/.zshrc):
eval "$(silo shell init zsh)"This provides:
silo cdchanges your shell's working directorysilo cd -returns to the previous silo- Tab completion for silo commands and branch names
Without shell integration, silo cd will print the path but cannot change your directory.
# Create a new silo
silo new feature-branch
# List silos
silo list # current repo
silo list --all # all repos
# Navigate to a silo
silo cd feature # by branch name
silo cd repoA/feature # disambiguate with repo name
# Run a command in a silo
silo exec feature cargo build
# Remove a silo (preserves the branch)
silo rm feature
# Remove all clean silos
silo prune # current repo
silo prune --all # all reposCommands like cd, rm, and exec accept flexible silo names:
feature— branch name (works when unambiguous)repoA/feature— repo/branch (when same branch in multiple repos)org/repo/feature— full path (when same repo name in different locations)
If a name is ambiguous, silo shows matching options.
- Create a silo with
silo new branch-name - Work in the isolated worktree (or start an AI agent there)
- Commit your changes
- Remove the silo when done — the branch is preserved
- Merge the branch when ready
Run Claude Code directly inside a silo for proper permission scoping:
# Create a silo and run Claude in it
silo new feature-branch
silo cd feature-branch
claude
# Or use exec to run Claude without changing your shell's directory
silo exec feature-branch claudeThis ensures Claude's permissions are scoped to the worktree directory.