Skip to content

Latest commit

 

History

History
133 lines (87 loc) · 4.36 KB

File metadata and controls

133 lines (87 loc) · 4.36 KB

Contributing to Dash Evo Tool

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 protoc binary for your architecture.

Prerequisites

Rust

Install Rust using rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Update Rust to the latest version:

rustup update

System dependencies

On Ubuntu, install build tools, SSL libraries, and related packages:

sudo apt install -y build-essential libssl-dev pkg-config clang cmake libsqlite3-dev unzip

On other Unix-like systems, use the equivalent package management commands.

Protocol Buffers Compiler

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

Dash Core Wallet

  • Download and install from dash.org/wallets.
  • Ensure the wallet is fully synced with the network you intend to use (Mainnet or Testnet).

Building

Clone the repository and build:

git clone https://github.com/dashpay/dash-evo-tool.git
cd dash-evo-tool
cargo build --release

Run the application:

cargo run

Feature flags

The 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).

Adding MCP tools

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.

Code quality

Before submitting changes, run the formatter and linter:

cargo +nightly fmt --all
cargo clippy --all-features --all-targets -- -D warnings

Testing

cargo 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 tests

Test locations:

  • Unit tests: inline in source files (#[test])
  • UI integration: tests/kittest/
  • E2E: tests/e2e/

Local network (development only)

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.

Submitting changes

  1. Fork the repository on GitHub.

  2. Create a branch from v1.0-dev (the active development branch):

    git checkout -b feature/YourFeatureName v1.0-dev
  3. Commit your changes with descriptive messages following Conventional Commits:

    git commit -m "feat: add YourFeatureName"
  4. Push to your fork:

    git push origin feature/YourFeatureName
  5. Open a pull request against v1.0-dev and describe your changes.

Please ensure your code passes cargo clippy and cargo +nightly fmt before submitting.