A domain-specific language for encoding and executing batched EVM transactions targeting smart contracts, Aragon DAOs, ENS, and DeFi protocols.
# Install dependencies
bun install
# Start the web terminal
bun dev:terminal
# Start the docs website
bun dev:website
Visit evmcrispr.com to use the hosted terminal.
# Approve and swap tokens in a single transaction
load sim
sim:fork (
set $router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
set $amount @token.amount(DAI 100)
batch (
exec @token(DAI) "approve(address,uint256)" $router $amount
exec $router "swapExactTokensForETH(uint256,uint256,address[],address,uint256)" $amount 0 [@token(DAI) @token(WETH)] @me @date("2025-12-31")
)
sim:expect @bool(@get(@token(WETH) "balanceOf(address)(uint256)" @me) > 0)
)
| Module | Description | Commands | Helpers |
|---|---|---|---|
| std | Core language (always loaded) | 13 | 55 |
| aragonos | Aragon DAO operations | 9 | 3 |
| sim | Chain fork simulation | 6 | - |
| ens | ENS domain operations | 1 | 1 |
| giveth | Giveth protocol | 4 | 1 |
| http | HTTP + JSON | - | 3 |
packages/
core/ Parser, interpreter, AST
sdk/ Module SDK (defineCommand, defineHelper)
modules/
std/ Default module — always loaded
aragonos/ Aragon DAO operations
sim/ Chain fork simulation
ens/ ENS domain operations
giveth/ Giveth protocol
http/ HTTP + JSON helpers
apps/
evmcrispr-terminal/ React + Monaco web terminal
evmcrispr-website/ Astro landing page + docs
bun install # Install dependencies
bun run build # Build all packages
bun test:unit # Run unit tests
bun test:integration # Run integration tests (needs anvil)
biome check . # Lint