Venue Smoke Test
CLI tooling for verifying exchange-adapter connectivity and validating the full movement lifecycle with a small stablecoin transfer. Use it after setting up a new exchange, or after changing credentials or withdrawal allowlists, to confirm the live path still works.Prerequisites
- QTG is installed and the
qtgCLI is available. - API credentials for the target exchange are configured in environment variables (
MG_*). - PostgreSQL is running for smoke tests (
MG_DATABASE_URL).
Probe — read-only health check
Checks
Examples
Output
The command prints JSON:Exit Code
Special behavior
- If the adapter does not support a method (
NotImplementedError), that probe is marked skipped and does not affect the overall result. - Probes run sequentially. If one fails, the remaining probes still run.
Smoke — small live transfer
Safety controls
These limits are hard-coded and cannot be changed through environment variables.
Flow
Examples
Output
Exit Code
Dashboard integration
Smoke movements appear in the dashboard like regular movements. Thestrategy_id uses the smoke-{source}-{dest}-{timestamp} format, so it can be filtered in the dashboard.
Template
Smoke tests use thesmoke.cex_roundtrip template. The first run creates it automatically; later runs reuse the existing template.
Template shape (2-node DAG):
deposit_observe node. The smoke test verifies the withdrawal path; deposit confirmation depends on the destination exchange’s internal processing.
Troubleshooting
exit 2: unsupported exchange adapter
Check whether credential environment variables are set for the venue:
MG_CEX_BINDINGS_JSON includes the exchange binding.
Probe passes but smoke fails
- DB connection: smoke tests require PostgreSQL. Confirm
MG_DATABASE_URLis correct. - Whitelist: confirm the destination exchange deposit address is registered in the source exchange withdrawal whitelist.
- Travel rule: transfers involving Korean exchanges may require travel-rule information.
- Network mismatch: confirm
--networkrefers to the same network on both exchanges. Exchange network names can differ, such asethereumvsETHortronvsTRX.
Movement ends in TIMEOUT
The default timeout is 300 seconds, or 5 minutes. Increase--timeout during network congestion. CEX withdrawals can take several minutes to tens of minutes depending on exchange-side processing time.