Development environment setup
Speedwave combines Rust backend engines, an Angular desktop frontend running inside Tauri, Node.js MCP server processes, and native Swift helpers. All developer workflows are unified under a root GNU Makefile. For detailed architecture breakdown, consult the Technology stack guide.
System prerequisites
Section titled “System prerequisites”Ensure your developer environment has the following toolchains installed:
- Rust: Stable release toolchain managed via
rustup(rustup update stable). - Node.js: the version pinned in
.node-version(24.20.0 or newer) withnpm.make setup-devchecks it and stops with install instructions when it is older. - Platform compilers:
- macOS: Xcode Command Line Tools (
xcode-select --install). - Windows: Visual Studio C++ Build Tools with Windows 10/11 SDK.
- macOS: Xcode Command Line Tools (
Initialize your environment and dependencies by running:
make setup-devPrimary Makefile targets
Section titled “Primary Makefile targets”Always invoke development, build, and test steps through make targets to ensure proper environment variables, target directories, and compiler flags:
make setup-dev # Verify prerequisites and install workspace dependenciesmake test # Execute automated test suites (Rust, Angular, MCP, Tauri)make check # Execute static linters, Clippy, and TypeScript checksmake check-all # Run complete CI quality gate: check + test + coverage + auditmake coverage-html # Generate and open unified HTML code coverage reportsmake audit # Perform security vulnerability audits across dependenciesmake dev # Launch Tauri desktop application in live-reload dev modemake dev-config # Print the resolved data dir, bundle identifier and Tauri config without starting anythingmake build # Compile release artifacts for all subsystemsmake fmt # Format Rust, TypeScript, and Markdown filesmake status # Output workspace toolchain and dependency diagnostic statusTargeted subsystem targets are available: test-rust, test-angular, test-mcp, test-swift, build-cli, build-desktop, and build-angular. Refer to Testing and validation for details on test coverage thresholds.
CLI binary build targets
Section titled “CLI binary build targets”make build-cli: Compiles unoptimized debug executable attarget/debug/speedwaveused bymake dev.make build-cli-release: Compiles optimized release binary attarget/release/speedwave, removing debug-only signature verification bypasses.
Running the local development environment
Section titled “Running the local development environment”Executing make dev automatically compiles the debug CLI binary, copies the executable to desktop/src-tauri/cli/, and initializes the Tauri development daemon alongside Angular’s dev server.
Running a second development instance
Section titled “Running a second development instance”make dev DEV_INSTANCE=<name> starts an instance with its own data directory (~/.speedwave-<name>, with its own virtual machine), its own bundle identifier, an Angular dev server port derived from the name (DEV_PORT=<port> overrides it) and its own CLI command on PATH (speedwave-<name>), while production keeps speedwave. Use one per worktree, so testing a branch does not stop the instance you work in. The mechanism behind it is described under SPEEDWAVE_DATA_DIR.
For Windows specific instructions, refer to the Windows development setup guide.