A guided, zero-config build and release pipeline for mobile and app projects.
One command detects the stack, fetches dependencies, analyzes, surfaces errors, tests, builds, signs, and uploads, without memorizing each framework's CLI.
Part of OpenForge.
Point anvil at a project and it works out the stack, then runs the right lifecycle: dependencies, static analysis, tests, build, and (where set up) signing and store upload. It prints every command it runs, so it is also a way to learn the underlying tools instead of hiding them.
$ anvil detect
PATH STACK SUBTYPE CONFIDENCE
. flutter app 0.98
$ anvil build
flutter pub get ok
flutter analyze 0 issues
flutter test 42 passed
flutter build appbundleFlutter, React Native, native Android, native iOS, Swift, Kotlin/JVM, Go, and
web/Node (Next, Nuxt, SvelteKit, Angular, Vite, CRA, Vue, Svelte, Astro, Remix,
Gatsby). Adding another is one driver. See
docs/ARCHITECTURE.md.
anvil is a single static binary.
brew install --cask openforge-oss/tap/anvilscoop bucket add openforge-oss https://github.com/openforge-oss/scoop-bucket
scoop install anvilDownload the archive for your OS and architecture from the
latest release, extract
it, and put anvil on your PATH.
go install github.com/openforge-oss/anvil@latestInstalls to $(go env GOPATH)/bin, which must be on your PATH.
anvil detect # identify the project and its stack
anvil build # deps, analyze, test, build (guided)
anvil build --release --flavor prod
anvil sign # set up Android or iOS signing
anvil build --sign # build and sign
anvil upload # dry-run by default, pass --yes to performUseful flags: --path (project directory), --target (android or ios),
--flavor, --release, --dry-run (print the plan without running it), and
--plain (no TUI, for CI). Every command has --help.
anvil never puts secrets on the command line or in the repo. Keystore and store credentials come from a prompt or an environment variable, and a credential located inside the working tree is refused.
Shipping a build is a fiddly, error-prone grind: Gradle and AGP version matrices, the CocoaPods to Swift Package Manager migration, iOS provisioning and code signing, and per-stack commands nobody remembers. Existing tools either need config and a cloud account (fastlane, Codemagic), only output server containers (Nixpacks, buildpacks), or are heavy monorepo build systems (Nx, Bazel). anvil is a local, zero-config, auto-detecting, guided CLI that produces real artifacts.
This repo runs a disciplined, low-token workflow. Read CLAUDE.md
first. In short: branch then PR (never push main), and run ./check (lint plus
test) before every push.
./check # gofmt, go vet, staticcheck/govulncheck, go test -race
./build # produces bin/anvilProgress lives in tasks/todo.md and
docs/ROADMAP.md.
MIT, OpenForge, 2026.