mani is a CLI tool that helps you manage multiple repositories. It's useful when you are working with microservices, multi-project systems, multiple libraries, or just a collection of repositories and want a central place for pulling all repositories and running commands across them.
Interested in managing your servers in a similar way? Checkout sake!
- Declarative configuration
 - Clone multiple repositories with a single command
 - Run custom or ad-hoc commands across multiple repositories
 - Built-in TUI
 - Flexible filtering
 - Customizable theme
 - Auto-completion support
 - Portable, no dependencies
 
Mani is an MIT-licensed open source project with ongoing development. If you'd like to support their efforts, check out Tabify - a Chrome extension that enhances your browsing experience with powerful window and tab management, focus-improving site blocking, and numerous features to optimize your browser workflow.
mani is available on Linux and Mac, with partial support for Windows.
- 
Binaries are available on the release page
 - 
via cURL (Linux & macOS)
curl -sfL https://raw.githubusercontent.com/alajmo/mani/main/install.sh | sh - 
via Homebrew
brew tap alajmo/mani brew install mani
 - 
via MacPorts
sudo port install mani
 - 
via Arch (AUR)
yay -S mani
 - 
via Nix
nix-env -iA nixos.mani
 - 
via Go
go get -u github.com/alajmo/mani
 
Auto-completion is available via mani completion bash|zsh|fish|powershell and man page via mani gen.
- Clone the repo
 - Build and run the executable
make build && ./dist/mani 
Run the following command inside a directory containing your git repositories:
$ mani initThis will generate two files:
mani.yaml: Contains projects and custom tasks. Any subdirectory that has a.gitdirectory will be included (add the flag--auto-discovery=falseto turn off this feature).gitignore: Includes the projects specified inmani.yamlfile. To opt out, usemani init --vcs=none.
It can be helpful to initialize the mani repository as a git repository so that anyone can easily download the mani repository and run mani sync to clone all repositories and get the same project setup as you.
# List all projects
$ mani list projects
# Count number of files in each project in parallel
$ mani exec --all --output table --parallel 'find . -type f | wc -l'
# Start TUI
mani tuiCheckout the following to learn more about mani:
- Examples
 - Config
 - Commands
 - Documentation
 - Changelog
 - Roadmap
 - Project Background
 - Contributing
 
The MIT License (MIT)
Copyright (c) 2020-2021 Samir Alajmovic
