Skip to content

Tech stack

Speedwave is built from a Rust core, a Tauri desktop app with an Angular frontend, a Node.js/TypeScript workspace of MCP servers, and native Swift CLIs on macOS. GNU Make ties the whole thing together, so every build, test, and check runs through the root Makefile rather than calling cargo or npm directly. If you want the full picture of how these pieces fit together at runtime, see under the hood.

The Rust core is a Cargo workspace with two crates: speedwave-runtime, which abstracts container runtime logic (Lima on macOS, WSL2 on Windows) and is the single source of truth for that logic, and speedwave-cli, the command-line binary. Workspace lints are strict: Clippy denies unwrap_used, expect_used, and print_stdout, and unsafe code is denied outright.

The desktop app pairs a Tauri 2 Rust backend (crate speedwave-desktop, compiling for both macOS and Windows) with an Angular 21 frontend, plus a WebdriverIO end-to-end test suite. The backend depends on Tauri plugins for clipboard, dialog, logging, single-instance enforcement, and updates, with an optional plugin for e2e testing.

MCP servers live in a multi-package Node.js/TypeScript workspace, covering integrations like Atlassian, GitHub, GitLab, Slack, SharePoint, and more, alongside a shared package that is the single source of truth for MCP utilities. Tests across the workspace run on vitest.

On macOS, native functionality is delivered through Swift CLIs: separate SwiftPM packages for audio capture, calendar, mail, notes, and reminders, plus a shared package. A Windows equivalent is planned but not yet implemented.

Three test runners cover the stack: cargo for Rust, vitest for Angular and the MCP servers, and bats for the CLI and container entrypoint scripts. For the full list of prerequisites, Make targets, and how to get a working build running, head to development setup.