Skip to content

Getting Started

This page covers everything you need to get Attestia running locally — from installing dependencies through running the full test suite to standing up a local XRPL node for on-chain integration tests.

  • Node.js 18+ (LTS recommended)
  • pnpm as the package manager (Attestia is a pnpm workspace monorepo)
  • Docker (required only for XRPL integration testing)

Clone the repository and install all workspace dependencies:

Terminal window
git clone https://github.com/mcp-tool-shop-org/Attestia.git
cd Attestia
pnpm install

The monorepo provides top-level scripts that operate across all 14 packages:

CommandWhat it does
pnpm installInstall all dependencies across the workspace
pnpm buildBuild all packages in dependency order
pnpm testRun the full test suite (1,853 tests)
pnpm test:coverageRun tests with coverage reporting (target: 96.80%)
pnpm typecheckType-check all packages with TypeScript
pnpm benchRun performance benchmarks

A typical development cycle looks like:

Terminal window
pnpm install # Install all dependencies
pnpm build # Build all packages
pnpm test # Run all tests (1,853)
pnpm test:coverage # Run with coverage reporting
pnpm typecheck # Type-check all packages

The witness package (@attestia/witness) includes on-chain integration tests that run against a real XRPL ledger. Instead of depending on the public testnet (which requires a faucet and has unpredictable ledger close times), Attestia runs a standalone rippled node in Docker.

This gives you:

  • No testnet dependency — fully self-contained, works offline
  • No faucet needed — the standalone node pre-funds genesis accounts
  • Sub-second ledger close — fast, deterministic test cycles
Terminal window
# Start the standalone rippled node
docker compose up -d
# Run on-chain round-trip tests
pnpm --filter @attestia/witness run test:integration
# Tear down when done
docker compose down

The integration tests exercise the full attestation round-trip: creating attestation records, submitting them to the XRPL ledger, and verifying on-chain state matches the expected outcome.

Attestia is a monorepo with 14 packages under packages/. Each package is independently buildable and testable, but they share common types through @attestia/types. The dependency graph flows upward from types through the domain layer (ledger, registrum, vault, treasury) into the integration layer (reconciler, witness, verify) and finally the API surface (node, sdk).

  • Read the Architecture page to understand the three-tier system
  • Review the Principles to understand the invariants enforced in code
  • Check the Reference for the full package table and documentation index