Getting Started
How to run Complyr locally and config environment variables.
Getting Started
Prerequisites
- Node.js 18+
- pnpm
- Foundry (for contract development)
Clone and install
git clone https://github.com/Stoneybro/complyr
cd complyr
pnpm installRun the web application
pnpm devThe application runs at http://localhost:3000.
Environment variables
Create apps/web/.env.local:
# Privy authentication
NEXT_PUBLIC_PRIVY_APP_ID=your_privy_app_id
# Neon PostgreSQL (for contacts)
COMPLYR_DATABASE_URL=postgresql://...
# Relay wallet private key (for Zama transactions)
RELAY_PRIVATE_KEY=0x...
# Envio GraphQL API
NEXT_PUBLIC_ENVIO_API_URL=https://indexer.dev.hyperindex.xyz/86c2f35/v1/graphqlBuild contracts
# Flow EVM contracts
pnpm forge:build
# Run tests
pnpm forge:testRun the keeper
The keeper script polls the IntentRegistry for executable intents and triggers execution.
cd packages/keeper
cp .env.example .env
# Fill in PRIVATE_KEY and RPC_URL
pnpm devThe keeper runs on a 30-second poll interval. For production use, deploy it as a persistent service (Railway, Fly.io, or a self-hosted VM).
Account abstraction setup
Complyr uses a self-hosted Skandha bundler deployed on Railway because no public bundler currently supports Flow EVM testnet. The bundler endpoint is configured in apps/web/src/lib/bundler.ts.
If you are deploying to a new environment, you will need to:
- Fork complyr-bundler and deploy it
- Update
bundlerUrlinbundler.ts - Fund the
VerifyingPaymasterdeposit on the EntryPoint
Contacts database
The contact book requires COMPLYR_DATABASE_URL to be set — see the Architecture page for a full description of how the contact system works.