Open Source · Built with Rust · MIT / Apache-2.0
Forge Your Perfect
Workstation
Declarative configuration management for developer workstations. Define your environment in YAML — Anvil installs packages, copies configs, runs commands, and validates health.
cargo install anvil-dev
Everything you need to
manage your workstation
Package Management
Install software via winget with version pinning and custom overrides. Homebrew and APT support on the roadmap.
File Synchronization
Deploy configuration files and dotfiles with automatic backup, hash verification, and template rendering.
Workload Inheritance
Compose configurations using DRY principles. Extend base workloads and override only what differs.
Health Assertions
Declarative predicates validate your system state — check commands, files, directories, environment, and registry.
Command Execution
Run pre- and post-install commands with conditions, timeouts, elevation control, and error handling.
Multiple Formats
Output results as formatted tables, JSON, YAML, or HTML reports. Pipe into other tools or share with your team.
Define Once,
Deploy Everywhere
Write a workload once. Anvil handles installation, configuration, and validation.
name: rust-developer
version: "1.0.0"
description: "Complete Rust development environment"
extends:
- essentials
packages:
winget:
- id: Rustlang.Rustup
- id: LLVM.LLVM
files:
- source: config.toml
destination: "~/.cargo/config.toml"
backup: true
assertions:
- name: "Cargo is available"
check:
type: command_exists
command: cargo
$ anvil install rust-developer
▸ Resolving workload inheritance...
✓ Merged: essentials → rust-developer
▸ Installing packages...
✓ Rustlang.Rustup
✓ LLVM.LLVM
▸ Deploying configuration files...
✓ ~/.cargo/config.toml
▸ Running assertions...
✓ Cargo is available
✓ Workload installed successfully
Install in
Seconds
From crates.io
Install with Cargo — Rust 1.75+ required. Works on all platforms.
cargo install anvil-dev
Pre-built Binary
Download from GitHub Releases for your platform.
# github.com/kafkade/anvil/releases
Expand-Archive anvil.zip C:\Tools\anvil
$env:PATH += ";C:\Tools\anvil"
# github.com/kafkade/anvil/releases
tar xzf anvil-*-linux-gnu.tar.gz
sudo mv anvil /usr/local/bin/
From Source
Clone and build the latest from main.
git clone https://github.com/kafkade/anvil
cd anvil
cargo build --release
# Binary: target\release\anvil.exe
git clone https://github.com/kafkade/anvil
cd anvil
cargo build --release
# Binary: target/release/anvil
Support kafkade's
open-source work
Anvil and all kafkade projects are free and open source. Your support funds development, infrastructure, and documentation.