Build reliable network applications without compromising speed.

Tokio is an asynchronous runtime for the Rust programming language. It provides the building blocks needed for writing network applications. It gives the flexibility to target a wide range of systems, from large servers with dozens of cores to small embedded devices.

Built by the community, for the community.

Reliable

Tokio's APIs are memory-safe, thread-safe, and misuse-resistant. This helps prevent common bugs, such as unbounded queues, buffer overflows, and task starvation.

Fast

Building on top of Rust, Tokio provides a multi-threaded, work-stealing scheduler. Applications can process hundreds of thousands of requests per second with minimal overhead.

Easy

async/await reduces the complexity of writing asynchronous applications. Paired with Tokio's utilities and vibrant ecosystem, writing applications is a breeze.

Flexible

The needs of a server application differ from that of an embedded device. Although Tokio comes with defaults that work well out of the box, it also provides the knobs needed to fine tune to different cases.

The stackThe stack

Applications aren't built in a vacuum. The Tokio stack includes everything needed to ship to production, fast.

RuntimeRuntime

Including I/O, timer, filesystem, synchronization, and scheduling facilities, the Tokio runtime is the foundation of asynchronous applications.

Learn more ➔

HyperHyper

An HTTP client and server library supporting both the HTTP 1 and 2 protocols.

Learn more ➔

TonicTonic

A boilerplate-free gRPC client and server library. The easiest way to expose and consume an API over the network.

Learn more ➔

TowerTower

Modular components for building reliable clients and servers. Includes retry, load-balancing, filtering, request-limiting facilities, and more.

Learn more ➔

MioMio

Minimal portable API on top of the operating-system's evented I/O API.

Learn more ➔

TracingTracing

Unified insight into the application and libraries. Provides structured, event-based, data collection and logging.

Learn more ➔

BytesBytes

At the core, networking applications manipulate byte streams. Bytes provides a rich set of utilities for manipulating byte arrays.

Learn more ➔