Install Anvil

A single self-contained binary (~22–27 MB). No runtime required — nothing to install beyond Anvil itself. Optionally install QMD for persistent cross-session context and memory.

Current release: v2.2.19 — seven platforms • SHA256 verified • shell completions included • self-updating via anvil upgrade

Install on macOS

Recommended — Homebrew
brew install culpur/anvil/anvil
Or — one-line installer (curl)
curl -fsSL https://anvilhub.culpur.net/install.sh | bash
Launch
anvil

Integrity — what the installer actually verifies

Every binary is published with a SHA256 checksum at two independent origins so a compromise of one does not forge the other:

  • Primary: anvilhub.culpur.net/sha256/<binary>.sha256
  • Fallback: github.com/culpur/anvil/releases/download/vX.Y.Z/<binary>.sha256

The installers — install.sh and install.ps1 — and anvil upgrade try the primary first, fall back to GitHub, and refuse to install on dual failure. An unverified binary never lands on disk.

Using Anvil

anvil

Launches the TUI. First run walks through provider setup, optional Ollama model selection, and saves your config.

anvil login <provider>

Authenticate with a specific provider. Supports anthropic (OAuth or API key), openai, google, xai, ollama.

anvil prompt "…"

One-shot prompt — print the answer and exit. Great for scripting or CI.

anvil continue

Resume your most recent session, restoring context and conversation history.

anvil model <name>

Start the REPL on a specific model. E.g. anvil model claude-sonnet-4-6, anvil model qwen3:8b, anvil model gpt-4o.

anvil upgrade

Self-update to the latest release. SHA256-verified against the anvilhub.culpur.net manifest; aborts on mismatch.

anvil --check

Prints an install health checklist — binary version, dependencies (QMD, git, node), PATH, shell completions.

anvil --setup

Re-run the first-run wizard. Use this to change provider, reconfigure Ollama, or reset defaults.

anvil --uninstall

Remove the binary and shell completions cleanly. Vault data in ~/.anvil is preserved.

QMD — optional knowledge-base engine

QMD indexes your codebase, documentation, and past sessions so Anvil can inject relevant context into every conversation. It is optional — Anvil runs fine without it — but recommended if you want memory that spans sessions.

1. Install QMD

The Anvil install script installs QMD automatically when Node.js 18+ is present. To install it manually:

# Requires Node.js 18+ (npm)
npm install -g @tobilu/qmd
qmd --version # verify install

2. Index your project

Point QMD at the folders you want it to see. Glob patterns are supported.

qmd collection add myproject /path/to/project/**/*.md
qmd update # scan + index
qmd embed # generate vector embeddings

3. Keep the index fresh

QMD does not run as a background daemon — it operates on a local SQLite + embedding index that Anvil queries directly. Re-run qmd update && qmd embed whenever you want the index to pick up new files, or set up a periodic refresh:

# macOS / Linux — cron entry (every hour)
0 * * * * /usr/local/bin/qmd update && /usr/local/bin/qmd embed
 
# macOS — LaunchAgent example: ~/Library/LaunchAgents/net.qmd.refresh.plist
launchctl load ~/Library/LaunchAgents/net.qmd.refresh.plist
 
# Linux with systemd — user timer
systemctl --user enable --now qmd-refresh.timer
 
# Windows — Task Scheduler (PowerShell)
schtasks /Create /SC HOURLY /TN "QMD Refresh" /TR "qmd update && qmd embed"

For a lighter-touch setup, just run qmd update manually when you start a session. The index is on local disk — nothing leaves your machine.

Anvil auto-discovers QMD

Anvil probes for the qmd binary at startup (on $PATH, plus the standard install paths for each OS). When it finds QMD, it polls every 30 seconds for index health and surfaces the status on the rail's MEMORY block alongside the seven memory layers. Anvil also auto-registers a per-session collection for ~/.anvil/history/ and runs qmd update in the background so newly-archived session files become searchable without manual re-indexing.

If qmd is not installed, Anvil silently falls back to its in-process memory layers. There is no error, no warning — QMD is strictly an enhancement.

Use QMD from inside Anvil

QMD also ships an MCP server so you can call it as a tool from any session. Anvil's MCP host wires it up automatically when present:

# Inside Anvil, no manual MCP setup needed:
/qmd query "auth flow"
/qmd context add design-notes "Decided on PKCE + refresh tokens"
/qmd status # index + collection health

Learn more: github.com/tobi/qmd

Troubleshooting

'anvil' command not found after install
The installer puts the binary in ~/.local/bin on Linux/macOS/BSD or %LOCALAPPDATA%\Programs\anvil on Windows. Open a new terminal so your shell picks up the new PATH, or source your shell rc file (source ~/.bashrc / ~/.zshrc).
SHA256 verification failed during install
The installer fetches the checksum from anvilhub.culpur.net first, falling back to GitHub. If both fail, it refuses to install. Check your network/DNS, then retry. Never install with --skip-verify — there is no such flag, by design.
PowerShell: 'running scripts is disabled on this system'
Run 'Set-ExecutionPolicy Bypass -Scope Process -Force' in your PowerShell window before re-running the installer. This only affects the current session — no permanent policy change.
Permission denied when running the binary
Make the binary executable: chmod +x $(which anvil)
Ollama models don't appear in /model
Make sure the Ollama daemon is running (ollama serve), then run '/model list' in the TUI to refresh. The first-run wizard can install a curated set of local models for you — re-run it with 'anvil --setup' if you skipped this.
Shell completions aren't working
The installer drops completion scripts into install/completions/ and wires them into your shell rc / PowerShell profile. Open a new terminal to pick them up. Manual install? See the four completion files in the install/completions/ directory of the release tarball — one each for bash, zsh, fish, PowerShell.
How do I roll back to a previous version?
Every release is on GitHub Releases. Download the older binary, verify its SHA256 from anvilhub.culpur.net/sha256/, then replace $(which anvil). Vault data in ~/.anvil is forward-compatible; no migration needed.
Is FreeBSD ARM64 or OpenBSD supported?
Not in v2.2.19. The Rust toolchain doesn't publish a precompiled standard library for either target, so a clean prebuilt binary isn't currently shipped. Both are queued for a future release.

Having trouble? Check GitHub Issues or browse skills on AnvilHub.

Learn more about Anvil →