What you will learn
- How to deploy ISCL Core for production use
- Security hardening checklist
- Docker deployment with proper configuration
- Monitoring, backup, and maintenance procedures
Deployment architecture
Step 1: Docker setup
Build the image
Docker Compose configuration
127.0.0.1:3100:3100— port is only accessible from localhost on the host0.0.0.0inside the container so other containers can reach it on the Docker network- Named volumes for persistent keystore and audit data
- Resource limits prevent runaway memory usage
Step 2: Security hardening
Checklist
Never use
ISCL_APPROVAL_MODE=auto in production. Use web or cli.Set
ISCL_TELEGRAM_ALLOWED_CHATS if using the Telegram bot.Configure a restrictive PolicyConfig with appropriate value limits, token allowlists, and recipient allowlists.
Use a paid RPC provider with authentication. Public endpoints are rate-limited and less reliable.
Do not expose port 3100 to the internet. The API has no authentication by design.
Back up the keystore volume. Keys are encrypted but irreplaceable if lost.
Set appropriate
maxTxPerHour to limit blast radius if an adapter is compromised.Review audit logs regularly. Look for unexpected
policy_evaluated events or failed signing attempts.Policy configuration
Create a production policy file:Step 3: RPC configuration
Use a paid provider for production. Configure per-chain:Step 4: Monitoring
Health checks
Poll the health endpoint:Log monitoring
ISCL Core uses pino for structured JSON logging. Forward logs to your monitoring stack:Key metrics
| Metric | Source | Warning Threshold |
|---|---|---|
| RPC response time | Application logs | >500ms average |
| Pending approvals | GET /v1/approvals/pending | >10 stale requests |
| SQLite DB size | File system | >1GB |
| Memory usage | Docker stats | >400MB |
Step 5: Backup
Keystore backup
The keystore contains encrypted private keys. Back up the Docker volume:Audit database backup
Step 6: Maintenance
Database vacuuming
SQLite does not automatically reclaim space from deleted rate limit entries:Log rotation
Docker handles log rotation via the logging driver. Configure indaemon.json:
Verification
ISCL Core starts and passes health checks
Port 3100 is only accessible from localhost
Approval mode is
web or cli (not auto)Policy config has appropriate limits
Keystore backup procedure works and can be restored
Logs are forwarded to your monitoring system
Next steps
- Configuration Reference — All configuration options
- Policy Engine — Tuning policy rules
- Approval Model — Choosing the right approval mode