Requirements
Ward does not require the AlgoKit CLI or a LocalNet install — it targets Algorand TestNet by
default over public algod endpoints. See
D5 and
D4 in the decision log for why.
Install from source
Development mode (no build step)
npm run ward -- <command> and npm run dev both run the CLI directly from TypeScript source via
tsx — no compile step needed while iterating.
Compiled mode
dist/cli/index.js, which is exactly what package.json’s bin.ward field points
at. After building, you can invoke the compiled CLI directly:
Install the ward binary globally
npm link uses the bin entry in package.json to make ward available on your PATH,
pointing at the compiled dist/cli/index.js.
Type-checking and unit tests
test/registry.test.ts, test/runner.test.ts) cover the chain-agnostic core
(registry, runner) without needing a live facilitator or network access — they’re safe to run
in CI on every commit, independent of the full ward test invariant suite.
Docker: self-hosting the facilitator
ward init (and docker-compose up directly) builds and runs the facilitator using
docker/facilitator.Dockerfile. That image:
- Clones
GoPlausible/x402-avmatbranch-v2-algorand-publishat build time (the facilitator depends on internal workspace packages, so it isn’t independentlynpm install-able). - Runs
pnpm install && pnpm buildat theexamples/typescriptworkspace root. - Starts the facilitator process, exposing port
4022.
Environment configuration
Every variable Ward reads — for the CLI, the self-hosted facilitator, and the paid verification server — is documented with inline comments in.env.example and covered in full in
Environment Variables. Copy it before doing anything else:
Next: generate and fund accounts
Continue with the Quickstart from account generation onward.

