CLI tool for deploying and managing EVVM instances on testnets.
For the smart contracts library, see EVVM-org/Testnet-Contracts.
Docs: https://www.evvm.info/
Before deploying with the CLI, ensure you have the following installed:
- Clone & install
git clone --recursive https://github.com/EVVM-org/evvm-cli
cd evvm-cli
# Install dependencies (clones contracts submodule + installs bun/forge deps)
bun run evvm install- Prepare environment
cp .env.example .env
# Edit RPC_URL, ETHERSCAN_API, etc.- Import wallet (secure)
cast wallet import defaultKey --interactive- Deploy (interactive)
If you are on Linux or macOS, run:
./evvm deployIf you are on Windows, run on PowerShell:
.\evvm.bat deployOr use Bun from any directory:
bun run evvm deployThe repository includes platform-specific wrapper scripts:
Linux/macOS:
# Make script executable (first time only)
chmod +x ./evvm
# Run any EVVM CLI command
./evvm deploy
./evvm register --coreAddress 0x...
./evvm developer --makeInterface
./evvm helpWindows (PowerShell):
# Run any EVVM CLI command
.\evvm.bat deploy
.\evvm.bat register --coreAddress 0x...
.\evvm.bat developer --makeInterface
.\evvm.bat helpThe scripts automatically detect your OS and architecture (x64, ARM64, MUSL) and execute the appropriate compiled binary from .executables/ folder.
Quick Start: https://www.evvm.info/docs/QuickStart
Deployment & Registration:
evvm deploy- Deploy EVVM (single or cross-chain)evvm deploy --skipInputConfig- Deploy with existing config (no prompts)evvm deploy --crossChain- Deploy cross-chain EVVM instanceevvm register --coreAddress <addr>- Register EVVM in registryevvm register --crossChain- Register cross-chain EVVM
Cross-Chain Management:
evvm setUpCrossChainTreasuries- Configure treasury station connections
Developer Utilities:
evvm developer --makeInterface- Generate Solidity interfaces from contractsevvm developer --runTest- Run test suites with custom filtersevvm install- Install Bun and Foundry dependencies
Information:
evvm help- Show comprehensive CLI helpevvm version- Show CLI version
- RPC timeouts: CLI automatically tries fallback RPCs; set
RPC_URLin.envto a reliable endpoint. - Wallet not found: import with
cast wallet import <name> --interactive. - Bun missing: install Bun (
curl -fsSL https://bun.sh/install | bash). - Native binary fails (exit 126): if you see "cannot execute binary file" the wrapper will now try running the CLI via
bun run src/index.tsautomatically when Bun is available. This works as a fallback until correct platform-specific binaries are built. - Tests: run
./evvm developer --runTest(Linux/Mac) orevvm.bat developer --runTest(Windows). - Script not executable (Linux/Mac): run
chmod +x ./evvmand ensure.executables/binaries have execute permissions. - Wrong architecture detected: The wrapper scripts auto-detect OS/architecture. If issues occur, manually run the correct binary from
.executables/. - Binaries built on the wrong host: macOS and Windows executables must be compiled on their respective platforms. Building on Linux will produce a Linux ELF file regardless of the filename, which leads to "cannot execute binary file" errors on macOS. Use
npm run build-macoson a Mac andnpm run build-windowson Windows, or rely on the Bun fallback described below.
src/- TypeScript CLI source codelib/evvm/testnet/- EVVM contracts (git submodule).executables/- Pre-compiled CLI binaries for multiple platformsevvm- Linux/macOS CLI wrapper script (auto-detects architecture)evvm.bat- Windows CLI wrapper script (auto-detects architecture)
We welcome contributions from the community! Here's how you can help:
- Report Issues - Found a bug or have a suggestion? Open an issue on GitHub
- Suggest Features - Have an idea for improvement? Create a feature request issue
- Submit Code Changes:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and add tests
- Push to your branch (
git push origin feature/amazing-feature) - Submit a Pull Request with a detailed description
- Issues: Use GitHub Issues for bug reports, feature requests, and discussions
- Pull Requests: Each PR should reference a related issue
- Tests: All new features must include tests
- Code Style: Follow the existing code patterns in the repository
- Commit Messages: Write clear, descriptive commit messages
- Never commit private keys: Always use
cast wallet import <YOUR_ALIAS> --interactiveto securely store your keys - Use test credentials only: This repository is for testnet deployment only
- Environment variables: Store sensitive data like API keys in
.envfiles (not committed to git) - Verify contracts: Always verify your deployed contracts on block explorers