🚀 EVI SDK
Latest: v3.1.0 🎉
EVI SDK — Professional AI-powered smart contract development platform with wallet deployment, security auditing, compliance validation, and blockchain verification.
✨ What's New in v3.1.0
- 🔐 Wallet Deployment - Deploy with YOUR wallet (MetaMask, WalletConnect)
- 🛡️ Pre-Deployment Security - Audit Solidity files BEFORE deploying
- ✅ Compliance Validation - Check ERC standards before deployment
- 📊 Session Statistics - Monitor platform usage
- 🎨 Enhanced CLI - Smart interactive commands
Default API: https://evi-wallet-production.up.railway.app
Default Network: basecamp
Install
npm install @blockxai/evi-sdk@latest
Node 18+ is required (native fetch).
🔥 NEW Features in v3.1
🔐 Wallet Deployment
Deploy contracts with YOUR wallet - complete self-custody
import { AcadClient } from '@blockxai/evi-sdk';
const client = new AcadClient();
const job = await client.start_wallet_deployment({
prompt: 'ERC20 token with 1M supply',
network: 'basecamp-testnet'
});
const session = await client.get_wallet_magic_link(job.jobId);
console.log('Sign with MetaMask:', session.magicLink);
CLI:
evi wallet:deploy "ERC20 token with 1M supply"
🛡️ Pre-Deployment Security Auditing
Audit Solidity files BEFORE deploying - save gas, prevent hacks
import fs from 'fs';
const code = fs.readFileSync('MyToken.sol', 'utf-8');
const report = await client.audit_source({
code,
filename: 'MyToken.sol'
});
console.log(`Security Score: ${report.report.score}/100`);
console.log(`Critical Issues: ${report.report.severity?.critical}`);
if (report.report.severity?.critical > 0) {
console.error('❌ Fix critical issues before deploying!');
process.exit(1);
}
CLI:
evi audit:source MyToken.sol --fail-on-critical
✅ Compliance Validation
Check if your token follows ERC standards
const report = await client.compliance_source({
code: tokenCode,
filename: 'MyToken.sol',
profile: 'erc20',
strict: true
});
if (!report.compliance.passed) {
console.log('Missing functions:', report.compliance.missingFunctions);
console.log('Missing events:', report.compliance.missingEvents);
}
CLI:
evi compliance:check MyToken.sol --profile erc20 --strict
📊 Session Statistics
Monitor platform usage
const stats = await client.get_session_stats();
console.log(`Total: ${stats.total}, Active: ${stats.active}`);
CLI:
evi stats
✨ ACV Features (v3.0)
🔍 Contract Verification
Verify deployed contracts on block explorers (Etherscan, Basescan, etc.)
const result = await client.verify_by_job('job-id', 'basecamp');
console.log('Verified:', result.verified);
console.log('Explorer URL:', result.explorerUrl);
🛡️ Security Auditing
AI-powered vulnerability detection with severity levels
const audit = await client.audit_orchestrate({ jobId: 'job-id' });
const report = await client.get_audit_report('job-id');
console.log('Security Score:', report.score);
console.log('Critical Issues:', report.summary?.critical);
✅ Compliance Checking
Validate contracts against ERC standards (ERC-20, ERC-721, ERC-1155, DeFi, DAO)
const comp = await client.compliance_orchestrate({
jobId: 'job-id',
targetProfile: 'erc721',
strict: true
});
const report = await client.get_compliance_report('job-id');
console.log('Compliance Passed:', report.passed);
🚀 Full ACV Pipeline
Complete workflow in one call: Generate → Deploy → Verify → Audit → Compliance
const result = await client.run_acv_pipeline({
prompt: 'ERC721 NFT with minting',
runVerify: true,
runAudit: true,
runCompliance: true,
complianceProfile: 'erc721'
});
See: QUICK_START_ACV.md for complete usage guide
Environment
🎨 CLI Commands
After install, you get the evi command (aliases: camp, acad for backwards compatibility).
Basic Commands
evi deploy:prompt --prompt "ERC20 with 1M supply"
evi deploy:file --file ./MyToken.sol
evi wallet:deploy "ERC20 token with 1M supply" --network basecamp-testnet
Security & Compliance
evi audit:source MyToken.sol --fail-on-critical
evi compliance:check MyToken.sol --profile erc20 --strict
evi stats
Interactive Wizard (Recommended)
Just run evi with no arguments to launch the interactive wizard:
evi
evi wizard
camp
The wizard guides you through:
-
🔐 Wallet deployment
-
🛡️ Security auditing
-
✅ Compliance checking
-
🚀 Contract generation & deployment
-
📊 Platform monitoring
-
Run directories are named after your prompt (or filename), no timestamps:
ai_pipeline_runs/<prompt-slug>/pipeline/ for prompt-based runs
ai_pipeline_runs/<file-slug>/file/ for file-based runs
- If a folder already exists, a simple
-2, -3, … suffix is added.
- Example:
ai_pipeline_runs/erc721-with-minting-and-baseuri/pipeline/
What you’ll see and where things are saved:
- Colorful, live logs streamed while the job runs (plus “magical” narrative logs)
- All outputs under
./ai_pipeline_runs/<name>/:
pipeline/ or file/
job.id, final.status.json
logs.ndjson
artifacts/ with sources/, abis/, scripts/
Examples:
camp deploy:prompt --prompt "ERC721 with minting and baseURI"
camp deploy:file --file ./contracts/MyNFT.sol --contractName MyNFT
Programmatic (optional)
The SDK exports AcadClient if you want to call the API directly.
import { AcadClient } from "@blockxai/camp-codegen";
const client = new AcadClient();
const jobId = await client.start_pipeline("ERC20 token", "basecamp", 11, "Token.sol", [1000000]);
const job = await client.wait_for_completion(jobId, { intervalSec: 2, timeoutSec: 2700 });
Build (for contributors)
npm install
npm run build
Outputs ESM to dist/.
Preset library (search)
In the wizard, pick “🔎 Browse preset library (search)” to choose from built-in and user-provided presets.
- User presets can be added via any of:
presets.user.json (array of { title, prompt })
presets.user.txt (one preset per paragraph; first token before : is the title)
src/presets.user.json
Examples:
// presets.user.json
[
{ "title": "MessageBoard", "prompt": "MessageBoard: EMPTY CONSTRUCTOR. post(string message). Events: MessagePosted. No constructor args." },
{ "title": "SimpleBank", "prompt": "SimpleBank: EMPTY CONSTRUCTOR. deposit() payable. withdraw(uint256 amount). Events: Deposited, Withdrawn." }
]
MessageBoard: EMPTY CONSTRUCTOR. post(string message). Events: MessagePosted. No constructor args.
SimpleBank: EMPTY CONSTRUCTOR. deposit() payable. withdraw(uint256 amount). Events: Deposited, Withdrawn.
Search is fuzzy across title, description, and prompt text. If your prompts version lacks autocomplete, it falls back to a simple select list.
Magical logs (GTM/CS friendly)
We emit a narrative alongside raw SSE logs to keep non-technical teammates engaged.
Categories: generation, compilation, errors, deployment, celebration, bonus, verification 🔍, audit 🛡️, compliance ✅
Configure via env vars:
MAGICAL_LOGS — enable/disable (default 1)
MAGICAL_WEBHOOK_URL — optional webhook to receive events
MAGICAL_STREAM — 1 to stream events, or 0 to receive one magical_log_summary
Payload fields include runLabel, jobId, network, prompt, filename, contractName, category, msg, and optional meta.
Tip: route the webhook to a tiny middleware (e.g., Cloudflare Worker, Vercel, Express) that transforms into Apollo.io Notes/Activities for GTM/CS visibility.
Colors and banners
- Intro banner: animated rainbow gradient (respects
NO_ANIMATION=1)
- Log theme: orange & white after banner
- Deploy congrats banner: static, clean orange-only (no animation) with deployed address
Notes
- No API key required to try it out
- Default network is
basecamp
- Works best on a TTY;
NO_ANIMATION=1 is recommended for CI logs