# What Are the Dependencies for Building Warp? A Complete Guide to the Rust Workspace

> Discover Warp's essential build dependencies including Tokio, WGPU, and Axum. Our guide details the Rust workspace and external crates needed to compile Warp effectively.

- Repository: [Warp/warp](https://github.com/warpdotdev/warp)
- Tags: how-to-guide
- Published: 2026-04-30

---

**Warp's build dependencies are defined in the root [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml) and include external crates like Tokio for async runtime, WGPU for GPU rendering, Axum for HTTP services, and dozens of internal workspace crates that Cargo compiles together.**

Warp is a Rust-based terminal emulator developed by warpdotdev/warp that relies on a complex workspace structure. The project uses a top-level [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml) to manage both external crate dependencies and internal library crates, which Cargo fetches and compiles when you run the build scripts.

## Core Runtime and Async Dependencies

The foundation of Warp's asynchronous architecture rests on the Tokio runtime. According to the source code in `warpdotdev/warp`, the following crates power the core async functionality:

- **`tokio`** (`1.47.1`) defined at [line 61](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L61) provides the async runtime that powers the entire application.
- **`anyhow`** (`1.0`) at [line 98](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L98) enables simple error handling throughout the codebase.
- **`async-trait`** (`0.1.89`) at [line 109](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L109) allows async functions in traits, essential for the application's trait-based architecture.

Additional concurrency utilities include `futures`, `futures-lite`, `futures-util`, `async-broadcast`, `async-channel`, `async-process`, and `parking_lot` (`0.12.1` at [line 104](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L104)) for fast mutexes.

## Web, Networking, and Communication Crates

Warp communicates with backend services and internal APIs using a stack of modern HTTP and WebSocket libraries:

- **`axum`** (`0.8.4`) at [line 97](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L97) serves as the HTTP server framework for internal APIs.
- **`hyper`** (`1.6.0`) at [line 55](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L55) provides the low-level HTTP implementation used by the client.
- **`reqwest`** (`0.12.28`) at [line 215](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L215) functions as the high-level HTTP client, also handling Sentry crash reporting.
- **`graphql-ws-client`** (`0.11.1`) at [line 53](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L53) enables WebSocket GraphQL communication with Warp's backend services.
- **`tower`** (`0.5.2`) and **`tower-http`** (`0.6.6`) at [lines 64-65](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L64-L65) provide middleware for HTTP services used alongside Axum.

## Serialization and Configuration Libraries

Data serialization and configuration management rely on the Serde ecosystem and specialized parsing crates:

- **`serde`** (`1.0`) with derive and rc features at [line 44](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L44) handles core deserialization.
- **`serde_json`** (`1.0`) at [line 47](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L47) processes JSON data.
- **`serde_yaml`** (`0.8`) at [line 50](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L50) parses YAML configuration files.
- **`toml_edit`** (`0.25.5`) at [line 63](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L63) enables programmatic editing of TOML configuration files.
- **`serde_bytes`**, **`serde_with`**, and **`serde_urlencoded`** provide helpers for binary and URL-encoded data serialization.

## Graphics and User Interface Dependencies

Warp implements a custom GPU-accelerated UI framework rather than using standard UI toolkits:

- **`wgpu`** (`29.0.1`) at [line 31](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L31) powers GPU-accelerated rendering across all supported platforms.
- **`font-kit`** (`0.26.0`) at [line 27](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L27) handles font rasterization and shaping via a Git dependency.
- **`image`** (`0.25.9`) at [line 60](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L60) manages image loading and compression for icons and splash screens.

## Platform-Specific System Bindings

The codebase includes platform-specific crates for deep OS integration:

- **`cocoa`** (`=0.26.0`) at [line 27](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L27) provides macOS UI bindings.
- **`objc2`**, **`objc2-app-kit`**, and related crates at [lines 96-102](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L96-L102) enable macOS Objective-C interoperability.
- **`windows`** (`0.62.2`) at [line 59](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L59) exposes Windows system APIs.
- **`web-sys`** (`0.3.69`) at [line 10](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L10) and **`wasm-bindgen`** (`0.2.89`) with **`wasm-bindgen-futures`** (`0.4.42`) at [lines 8-9](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L8-L9) support the WebAssembly build target.

## Data Processing, Storage, and AI Integration

Warp handles local data persistence and AI features through specialized crates:

- **`diesel`** (`2.3.4`) at [line 34](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L34) serves as the ORM for SQLite storage, providing the local data store.
- **`bytes`** (`1.11.1`) at [line 19](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L19) offers efficient byte buffer handling.
- **`uuid`** (`1.1.2`) at [line 1](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L1) generates unique identifiers for objects.
- **`rayon`** (`1.10.0`) at [line 48](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L48) enables parallelism for heavy computation.
- **`regex`** (`1.11.1`) at [line 45](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L45) provides regular expression support.
- **`arboard`** (`3.6.1`) at [line 99](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L99) handles clipboard integration used by AI agents.

## Logging, Diagnostics, and Error Handling

Observability and crash reporting depend on structured logging frameworks:

- **`tracing`** (`0.1.40`) at [line 66](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L66) provides the structured logging framework.
- **`env_logger`** (`0.10.0`) at [line 38](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L38) offers simple environment-driven logging.
- **`sentry`** (`0.41.0`) at [line 33](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L33) manages crash reporting and performance monitoring.
- **`backtrace`** (`0.3.76`) at [line 11](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L11) generates stack traces for errors.
- **`log`** (`0.4`) at [line 80](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L80) serves as the logging facade used by many crates.

## Internal Workspace Crates

Beyond external dependencies, the `[workspace.dependencies]` section in [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml) ([lines 30-94](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L30-L94)) references internal crates located in `crates/*` and `app/`. These local dependencies include:

- `warp_core`
- `warp_ui`
- `warp_cli`
- `warp_server_client`
- `warp_terminal`
- `warp_graphql`

Cargo builds these internal libraries as part of the same workspace before linking them into the final binary.

## How to Build Warp Locally

To compile the project and resolve all dependencies locally, use the provided helper scripts and Cargo commands:

```bash

# Install platform-specific prerequisites (run once)

./script/bootstrap

# Build and run the development version

cargo run

# Create a release bundle

cargo bundle --bin warp

```

The first build generates a `Cargo.lock` file containing the exact resolved versions for every external crate, ensuring reproducible builds across environments.

## Summary

- **Warp's dependencies** are centralized in the root [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml) at `warpdotdev/warp`, defining both external crates and internal workspace members.
- **Core async functionality** relies on Tokio (`1.47.1`), Anyhow (`1.0`), and async-trait (`0.1.89`).
- **Graphics rendering** uses WGPU (`29.0.1`) and font-kit (`0.26.0`) for GPU-accelerated UI.
- **Platform support** requires Cocoa and Objective-C bindings for macOS, and the Windows crate (`0.62.2`) for Windows.
- **Data persistence** uses Diesel (`2.3.4`) with SQLite for local storage.
- **Build commands** like `cargo run` and `./script/bootstrap` fetch and compile all dependencies automatically.

## Frequently Asked Questions

### What version of Tokio does Warp use?

Warp uses **Tokio `1.47.1`**, specified at [line 61](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L61) of the [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml). This provides the asynchronous runtime that powers the entire terminal application.

### Do I need to install dependencies manually before building Warp?

No, you do not need to install Rust crate dependencies manually. Running `./script/bootstrap` handles platform-specific prerequisites, and `cargo build` or `cargo run` automatically fetches all external crates listed in [`Cargo.toml`](https://github.com/warpdotdev/warp/blob/main/Cargo.toml) and compiles the internal workspace crates.

### What database does Warp use for local storage?

Warp uses **SQLite** through the **Diesel** ORM (`2.3.4`), defined at [line 34](https://github.com/warpdotdev/warp/blob/master/Cargo.toml#L34). This provides local data persistence for the terminal's features and user preferences.

### Is Warp's UI built with a standard GUI framework like GTK or Qt?

No, Warp uses a custom GPU-accelerated UI framework built on **WGPU** (`29.0.1`) for rendering, combined with **font-kit** for text shaping and platform-specific bindings like **Cocoa** on macOS. This approach is specified in the `[dependencies]` section of the root manifest.