Devnet Configuration
Customize your local devnet for different development scenarios.
CLI Configuration
Basic Options
# Specify port
npx cardano-devkit start --port 9090
# Fast blocks (100ms)
npx cardano-devkit start --block-time 100
# Enable WebSocket subscriptions
npx cardano-devkit start --websocket
# Combine options
npx cardano-devkit start --port 9090 --block-time 200 --websocket
Environment Variables
export CARDANO_DEVKIT_PORT=10080
export CARDANO_DEVKIT_BLOCK_TIME=200
export CARDANO_DEVKIT_WEBSOCKET=true
npx cardano-devkit start
Programmatic Configuration
DevnetManager Options
import { createDevnetManager } from 'cardano-devkit';
const devnet = createDevnetManager({
// Network port for API
port: 10080,
// Block production interval (milliseconds)
// Minimum: 100ms, Default: 1000ms
blockTimeMs: 200,
// Slot length in seconds (for protocol)
slotLength: 0.2,
// Enable WebSocket subscriptions
enableWebSocket: true,
// Enable multi-node setup (for future rollback testing)
enableMultiNode: false,
nodeCount: 1,
});
DevKit Configuration
import { createDevKit } from 'cardano-devkit';
const devKit = createDevKit({
// Network to connect to
network: 'LocalDevnet',
// Provider configuration
provider: {
type: 'koios',
baseUrl: 'http://localhost:10080/api/v1'
},
// Enable debug logging
debug: true,
// Local devnet specific options
localDevnetConfig: {
blockTimeMs: 200,
slotLength: 0.2,
enableWebSocket: true
}
});
Docker Compose Configuration
For advanced customization, modify devnet/docker-compose.yml:
services:
cardano-node:
image: ghcr.io/intersectmbo/cardano-node:10.4.1
environment:
- BLOCK_TIME_MS=200
- SLOT_LENGTH=0.2
volumes:
- ./data:/data
ports:
- "10301:3001"
indexer:
build: ./scripts
environment:
- PORT=10080
- NODE_URL=http://cardano-node:3001
- BLOCK_TIME_MS=200
- ENABLE_WEBSOCKET=true
- DB_PATH=/data/indexer.db
ports:
- "10080:10080"
depends_on:
- cardano-node
explorer:
image: cardano-explorer:latest
environment:
- API_URL=http://indexer:10080
ports:
- "10173:80"
depends_on:
- indexer
Block Time Recommendations
| Use Case | Block Time | Notes |
|---|---|---|
| Rapid prototyping | 100ms | Fastest feedback, high CPU |
| Normal development | 200-500ms | Good balance |
| Integration testing | 1000ms | More realistic timing |
| CI/CD pipelines | 500ms | Fast but stable |
| Testnet simulation | 20000ms | Matches public testnet |
Resource Usage
Minimum Requirements
- CPU: 2 cores
- RAM: 4GB
- Disk: 1GB
Recommended for Fast Blocks
- CPU: 4+ cores
- RAM: 8GB
- Disk: 10GB SSD
Resource Scaling
// Lower resource usage
const devnet = createDevnetManager({
blockTimeMs: 1000, // Slower blocks = less CPU
enableWebSocket: false, // Disable if not needed
});
// Higher performance
const devnet = createDevnetManager({
blockTimeMs: 100, // Fastest blocks
enableWebSocket: true, // Real-time updates
});
Network Isolation
The local devnet runs in Docker with isolated networking:
Host Machine
├── localhost:10080 → Indexer API
├── localhost:10173 → Block Explorer
└── localhost:10301 → Cardano Node (n2n)
Docker Network (cardano-devnet)
├── cardano-node:3001 (internal)
├── indexer:10080 (exposed)
└── explorer:80 (exposed)
Note: Ports use 10XXX range to avoid conflicts with Next.js (3000), Vite (5173), etc.
Troubleshooting
Port Conflicts
# Check what's using port 10080
lsof -i :10080
# Use a different port
npx cardano-devkit start --port 11080
Docker Issues
# Check Docker status
docker ps
# View logs
docker-compose -f devnet/docker-compose.yml logs -f
# Full reset
npx cardano-devkit reset
docker-compose -f devnet/docker-compose.yml down -v
Memory Issues
# Increase Docker memory limit
# Docker Desktop: Settings > Resources > Memory
# Or reduce block speed
npx cardano-devkit start --block-time 1000