https://github.com/0xjuanma/anvil
CLI to streamline config management and tool installation. Install your full dev tool-chain in one command and sync configurations across machines seamlessly, leverages homebrew and private repos.
https://github.com/0xjuanma/anvil
anvil cli cli-app command-line-tools configuration-management dev development-tools go golang golang-tools macos productivity
Last synced: about 1 month ago
JSON representation
CLI to streamline config management and tool installation. Install your full dev tool-chain in one command and sync configurations across machines seamlessly, leverages homebrew and private repos.
- Host: GitHub
- URL: https://github.com/0xjuanma/anvil
- Owner: 0xjuanma
- License: apache-2.0
- Created: 2017-03-17T20:59:38.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2025-12-11T02:06:19.000Z (3 months ago)
- Last Synced: 2025-12-11T06:46:49.676Z (3 months ago)
- Topics: anvil, cli, cli-app, command-line-tools, configuration-management, dev, development-tools, go, golang, golang-tools, macos, productivity
- Language: Go
- Homepage: https://tryanvil.app
- Size: 13.1 MB
- Stars: 91
- Watchers: 2
- Forks: 1
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cli-apps - anvil - Config management and app installations. (Utilities / macOS)
- fucking-awesome-cli-apps - anvil - Config management and app installations. (Utilities / macOS)
README
Anvil CLI
[](https://golang.org)
[](LICENSE)
[](https://goreportcard.com/report/github.com/0xjuanma/anvil)
[](https://github.com/0xjuanma/anvil/releases/latest)
[](#installation)
[](#)
Save hours in your process — install the tools you need, sync your configs, and keep your environment consistent with a single command-line tool.
## What Anvil Does
- **Batch App Installation**: Install development tools in groups or individually via Homebrew
- **Configuration Sync**: Sync dotfiles across machines using simple commands and private GitHub repositories
- **Health Checks**: Auto-diagnose and fix common setup issues
## Why Choose Anvil?
- **Fast Setup**: Get coding in minutes, not hours
- **Consistency**: Same configs and tools across all machines
- **Built-in Safety**: Dry-run mode, private repo enforcement and automatic backups
## Quick Start
### Installation
**Via install script (Recommended for fresh machines):**
```bash
curl -sSL https://github.com/0xjuanma/anvil/releases/latest/download/install.sh | bash
```
*Note: Ideal for new machines without Homebrew - Anvil will install it during the `anvil init` step.*
**Via Homebrew (If you already have Homebrew installed):**
```bash
brew install 0xjuanma/tap/anvil
```
**Update existing installation:**
```bash
anvil update
```
### Available Commands
| Command | Description |
|---------|-------------|
| `anvil init [--discover]` | Initialize your Anvil environment, dependencies & optionally discovers apps in your system|
| `anvil doctor` | Check system health |
| `anvil install [group-name]` | Install tools by groups|
| `anvil config show [app-name]` | Show your anvil settings or app settings |
| `anvil config push [app-name]` | Push your app configurations to GitHub |
| `anvil config pull [app-name]` | Pull your app configurations from GitHub |
| `anvil config sync [app-name]` | Sync your pulled app configurations to your local machine |
| `anvil clean` | Clean your anvil environment |
| `anvil update` | Update your anvil installation |
| `anvil --version/-v` | Show the version of anvil |
### Try It Out
```bash
# Initialize Anvil (optionally discover existing apps)
anvil init --discover
# Check environment health
anvil doctor
# Install development tools
anvil install essentials # sample essentials group
anvil install terraform # Individual apps
# Import tool groups from shared configs
anvil config import https://example.com/team-groups.yaml
# Or start with example configurations
anvil config import https://raw.githubusercontent.com/0xjuanma/anvil/master/docs/import-examples/juanma-essentials.yaml
# Sync configurations (after setting up GitHub repo)
anvil config push neovim
anvil config pull neovim
anvil config sync neovim
```
## Features
- **Smart Installation**: Install individual apps or user-defined groups (`dev`, `essentials`, etc) holding many apps
- **Group Import**: Import groups from local files or URLs with validation and conflict detection
- **Auto-tracking**: Automatically tracks installed apps and prevents duplicates
- **Secure Config Sync**: Uses private GitHub repositories with automatic backups
- **Health Diagnostics**: `anvil doctor` detects and auto-fixes common issues
- **Zero Configuration**: Works out of the box with sensible defaults
## Documentation
| Guide | Description |
|-------|-------------|
| **[Configuration Management](docs/config.md)** | Config sync setup and workflows |
| **[Install Command](docs/install.md)** | Installation command guide; leverages Homebrew for formulae/cask, and supports custom urls/installations scripts via sources |
| **[Import Groups](docs/import.md)** | Import Anvil groups from files/URLs |
| **[Doctor Command](docs/doctor.md)** | Health checks and validation |
| **[Clean command](docs/clean.md)** | Cleans Anvil non-critical dependencies |
**[View All Documentation →](docs/)**
---
One CLI to rule them all.
**Author:** [@0xjuanma](https://github.com/0xjuanma)
**[Star this project](https://github.com/0xjuanma/anvil)**