Installation
Anvil can run through Bun for JavaScript-friendly environments or as a standalone release binary for Go, Python, CI, containers, and agent harnesses where you do not want to install Bun first.
The primary path is Bun:
bunx anvil init --lang typescriptThis is the simplest path for TypeScript/JavaScript projects and any environment where Bun is already available. It also works for Go and Python projects if Bun is part of your local toolchain.
After Anvil writes the scaffold, follow the generated README. The generated project owns its own language-specific setup, Nix shell, Makefile targets, hooks, and validation commands.
Standalone binaries
Section titled “Standalone binaries”Standalone binaries are published on the GitHub Releases page for users who do not want Bun in the target environment.
The repository installer lives at scripts/install.sh and can be run directly:
curl -fsSL https://raw.githubusercontent.com/0xjbushell/anvil/main/scripts/install.sh | bashIt detects linux, darwin, or windows, plus x64 or arm64, then downloads the matching asset:
https://github.com/0xjbushell/anvil/releases/latest/download/anvil-<os>-<arch>https://github.com/0xjbushell/anvil/releases/download/<version>/anvil-<os>-<arch>For Windows, the asset and installed binary use the .exe suffix.
Pin a version or install directory
Section titled “Pin a version or install directory”Use ANVIL_VERSION for a release tag and ANVIL_INSTALL_DIR for the destination:
ANVIL_VERSION=v0.2.0 ANVIL_INSTALL_DIR="$HOME/.local/bin" \ bash -c "$(curl -fsSL https://raw.githubusercontent.com/0xjbushell/anvil/main/scripts/install.sh)"If ANVIL_VERSION is unset, the installer resolves latest.
Choosing an install method
Section titled “Choosing an install method”Use Bun when you already have it, when you are evaluating quickly, or when a coding agent can run bunx directly. Use the standalone binary when you want a stable tool on PATH, are adopting a non-JavaScript repository, or are setting up a repeatable agent environment.
Whichever path you choose, verify the selected command with anvil --version or the equivalent bunx anvil --version before running init.