dotbins
Manage CLI tool binaries in your dotfiles repository
dotbins manages CLI tool binaries in your dotfiles repository, offering:
- ✅ Cross-platform binary management (macOS, Linux, Windows)
- ✅ No admin privileges required
- ✅ Version-controlled CLI tools
- ✅ Downloads from GitHub releases
- ✅ Perfect for dotfiles synchronization
No package manager, no sudo, no problem.
See this example .dotbins repository: basnijholt/.dotbins completely managed with dotbins.
Note
💡 What makes dotbins different? Unlike similar tools, dotbins uniquely integrates tool-specific shell configurations (aliases, completions, etc.) directly in your dotfiles workflow, not just binary downloads, and allows a Git workflow for managing binaries.
See it in action
Features
- 🌐 Supports multiple platforms (macOS, Linux, Windows) and architectures (amd64, arm64, etc.)
- 📦 Downloads and organizes binaries from GitHub releases
- 🔄 Installs and updates tools to their latest versions with a single command
- 📌 Pin tools to specific versions with the
tagparameter - 📊 Tracks installed versions and update timestamps for all tools
- 🧩 Extracts binaries from various archive formats (zip, tar.gz)
- 📂 Organizes tools by platform and architecture for easy access
- 🐙 Easy integration with your dotfiles repository for version control
- ⚙️ Automatic PATH & Shell Code: Configures
PATHand applies custom shell snippets (shell_code).
Why I Created dotbins
I frequently works across multiple environments where I clone my dotfiles repository with all my preferred configurations.
I faced a common frustration: some of my favorite tools (fzf, bat, zoxide, etc.) were not available on the new system and installing them with a package manager is too much work or even not possible.
dotbins was born out of this frustration.
It allows me to:
- Track pre-compiled binaries in a separate Git repository (using Git LFS for efficient storage)
- Include that repository as a submodule in my dotfiles
- Ensure all my essential tools are immediately available after cloning, regardless of system permissions
Now when I clone my dotfiles on any new system, I get not just my configurations but also all the CLI tools I depend on for productivity, ready to use with their specific aliases and shell initializations automatically configured.
No package manager, no sudo, no problem!
Get Started -> View Configuration ->
Comparison with Alternatives
dotbins fills a specific niche in the binary management ecosystem. Here's how it compares to key alternatives:
| Tool | Version Management | Shell Integration | Dotfiles Integration | Primary Use Case |
|---|---|---|---|---|
| dotbins | Latest only | Built-in via shell_code |
First-class with Git (LFS) | Complete dotfiles solution |
| binenv | Multiple versions with constraints | Separate completion scripts | Not focused on | Development environments |
| eget | Latest or specific only | None | Not focused on | Quick one-off installs |
| asdf/aqua | Multiple plugins & versions | Plugin-specific | Not focused on | Development environments |
| apt/brew | System packages | None | Not possible | System-wide management |
Key Alternatives
Version Managers (e.g., binenv, asdf)
- Pros: Advanced version management (constraints like
>=1.2.3), multiple versions side-by-side - Cons vs.
dotbins: - Focus on version management rather than dotfiles integration
- Separate configuration needed for shell integration (aliases, completions)
- Often use shims or more complex architecture
- When to choose: For development environments where you need multiple versions of tools
Binary Downloaders (e.g., eget)
- Pros: Lightweight, fast for one-off downloads
- Cons vs.
dotbins: - No configuration for multiple tools
- No shell integration for aliases or environment setup
- No version tracking between sessions
- When to choose: For quick installation of individual tools without configuration needs
System Package Managers (apt, brew, etc.)
- Pros: System-wide installation, dependency management
- Cons vs.
dotbins: - Require admin privileges
- Not portable across systems
- Cannot be version-controlled in dotfiles
- When to choose: For system-wide software needed by multiple users
The dotbins Difference
dotbins uniquely combines:
- Binary management - Downloading from GitHub Releases
- Shell configuration - Defining aliases and shell setup in the same file:
- Dotfiles integration - Designed to be version-controlled as a Git repository
- Cross-platform portability - Works the same across Linux, macOS, Windows
This makes it perfect for users who want to manage their complete shell environment in a version-controlled dotfiles repository that can be easily deployed on any system.
Support and Contributions
We appreciate your feedback and contributions! If you encounter any issues or have suggestions for improvements, please file an issue on the GitHub repository. We also welcome pull requests for bug fixes or new features.
Happy tooling! 🧰🛠️🎉