Skip to content

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:

Terminal window
bunx anvil init --lang typescript

This 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 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:

Terminal window
curl -fsSL https://raw.githubusercontent.com/0xjbushell/anvil/main/scripts/install.sh | bash

It 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.

Use ANVIL_VERSION for a release tag and ANVIL_INSTALL_DIR for the destination:

Terminal window
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.

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.