Contributions are welcome! This guide covers how to set up a development environment, build the project, run tests, and submit changes.
Note: The instructions below are written for Ubuntu x86_64. If you are building on another platform (e.g. Linux aarch64 or macOS) the same steps apply, but you may need to adjust package manager commands and download the appropriate
protocbinary for your architecture.
Install Rust using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shUpdate Rust to the latest version:
rustup updateOn Ubuntu, install build tools, SSL libraries, and related packages:
sudo apt install -y build-essential libssl-dev pkg-config clang cmake libsqlite3-dev unzipOn other Unix-like systems, use the equivalent package management commands.
Install protoc (v25.2+). Download the appropriate binary for your system, unzip, and install:
wget https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip
sudo unzip protoc-*-linux-x86_64.zip -d /usr/local- Download and install from dash.org/wallets.
- Ensure the wallet is fully synced with the network you intend to use (Mainnet or Testnet).
Clone the repository and build:
git clone https://github.com/dashpay/dash-evo-tool.git
cd dash-evo-tool
cargo build --releaseRun the application:
cargo runThe default cargo build produces only the dash-evo-tool GUI binary. Optional features enable additional capabilities:
| Feature | Binary | What it adds |
|---|---|---|
| (none) | dash-evo-tool |
GUI application (default) |
mcp |
dash-evo-tool |
Embeds an MCP HTTP server in the GUI app. Activated at runtime by setting MCP_API_KEY. See docs/MCP.md. |
cli |
det-cli |
Standalone CLI binary. Includes an in-process MCP service (no server needed), HTTP client mode, det-cli serve stdio server, tool caching, and shell completion. See docs/CLI.md. |
headless |
det-cli |
Combines cli + mcp for headless HTTP server mode via det-cli headless. No GUI required; MCP_API_KEY must be set. See docs/MCP.md. |
testing |
— | Test-only utilities (not for production builds) |
mcp and cli are independent of each other. headless depends on both cli and mcp (it enables both automatically).
To expose a BackendTask as a new MCP/CLI tool, follow the step-by-step checklist in docs/MCP_TOOL_DEVELOPMENT.md. It covers architecture rules, the standard invocation pattern, registration, and common pitfalls.
Before submitting changes, run the formatter and linter:
cargo +nightly fmt --all
cargo clippy --all-features --all-targets -- -D warningscargo test --all-features --workspace # All tests
cargo test --doc --all-features --workspace # Doc tests only
cargo test <test_name> --all-features # Single test
cargo test --test kittest --all-features # UI integration tests (egui_kittest)
cargo test --test e2e --all-features # End-to-end testsTest locations:
- Unit tests: inline in source files (
#[test]) - UI integration:
tests/kittest/ - E2E:
tests/e2e/
For development and testing you can connect Dash Evo Tool to a dashmate-managed local network running in regtest mode. See the Local Network Guide for full setup instructions.
-
Fork the repository on GitHub.
-
Create a branch from
v1.0-dev(the active development branch):git checkout -b feature/YourFeatureName v1.0-dev
-
Commit your changes with descriptive messages following Conventional Commits:
git commit -m "feat: add YourFeatureName" -
Push to your fork:
git push origin feature/YourFeatureName
-
Open a pull request against
v1.0-devand describe your changes.
Please ensure your code passes cargo clippy and cargo +nightly fmt before submitting.