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)**