OMR manages git worktree symlinks and restarts Overmind processes for seamless branch switching in development.
With mise (recommended):
# Add to your project's mise.toml
[tools]
"ubi:DarthSim/overmind" = "latest"
"ubi:madhermit/omr" = "latest"mise installTo upgrade: mise upgrade ubi:madhermit/omr (run mise cache clear first if it doesn't see the new version).
Or download directly:
curl -fsSL https://raw.githubusercontent.com/madhermit/omr/main/install.sh | bashOr with Go:
go install github.com/madhermit/omr@latest-
Generate a config file:
omr init > .omr.toml -
Edit
.omr.tomlto match your project structure -
Use omr to switch branches and restart services:
omr status # Show current status omr switch # Switch detected service to current worktree omr switch --all main # Switch all services to main worktree omr restart api # Restart the api service
omr [global-flags] <command> [args]
Commands:
status Show current service status
restart [services] Restart overmind processes (no symlink changes)
switch [branch] Switch symlinks to branch worktree and restart
init Generate example config file
version Show version info
Global Flags:
-h, --help Help
-q, --quiet Suppress output
-c, --config FILE Config file path
Restart Flags:
-a, --all Restart all services
Switch Flags:
-a, --all Switch all services
omr completion fish > ~/.config/fish/completions/omr.fish
omr completion bash >> ~/.bashrc
omr completion zsh >> ~/.zshrcOMR looks for .omr.toml in the current directory and parent directories.
[services.api]
dir = "first-api/current" # Symlink path (relative to config file)
procs = ["rails", "worker"] # Overmind process names to restart
detect = "config/application.rb" # Auto-detection file (optional)
[services.frontend]
dir = "first-nuxt/current"
procs = ["app"]
detect = "nuxt.config.ts"| Option | Description |
|---|---|
dir |
Symlink path, relative to the config file's directory |
procs |
Overmind process names to restart (from your Procfile) |
detect |
File to look for when auto-detecting service (optional) |
root |
Override the root directory (defaults to config file's directory) |
OMR_ROOT- Override the root directoryOMR_CONFIG- Set config file path
- Symlink Management: OMR creates/updates symlinks pointing to git worktrees
- Process Restart: After updating symlinks, OMR restarts the configured overmind processes
- Auto-detection: When you run
omr switchfrom inside a worktree, OMR uses thedetectfiles to identify which service you're in and switches just that symlink
# Show current status of all services
omr status
# cd into a worktree, then switch that service's symlink to point here
cd first-api/feature-branch
omr switch
# Switch all services to the main branch worktree
omr switch --all main
# Restart api processes (no symlink change)
omr restart api
# Restart all processes
omr restart --all- Overmind process manager
- Git with worktree support
mise install # install Go 1.25
mise run test # run tests
mise run build # build binary
mise run check # fmt + lint + test
mise run release # build all platform binariesMIT