🐙 Tako — Multi-Transport Rust Framework for Modern Network Services
Tako ("octopus" in Japanese) is a pragmatic, ergonomic and extensible Rust framework for services that go beyond plain HTTP. Build one cohesive application across HTTP/1.1, HTTP/2, HTTP/3, WebSocket, SSE, gRPC, TCP, UDP, Unix sockets, and WebTransport with a single routing, middleware, and observability model.
📖 Full documentation → tako.rust-dd.com · API docs (docs.rs) · Release notes · llms.txt for AI assistants
Why Tako
- Typed handlers — ordinary async functions, typed request extractors, and flexible response types.
- Beyond HTTP — add WebSockets, event streams, gRPC, or raw socket services as your application grows.
- Your choice of runtime — Tokio or Compio; every transport runs on both.
- Room to tune — opt into SIMD JSON, zero-copy extractors, compression, or jemalloc when your workload calls for them.
Quick start
Requires Rust 1.95+. Tako uses edition 2024.
Add these dependencies to your Cargo.toml:
[]
= "2.3"
= { = "1", = ["macros", "net", "rt-multi-thread"] }
Then create src/main.rs. The package is tako-rs; the Rust import is tako.
use ;
use TcpListener;
async
Start it with cargo run, then visit http://127.0.0.1:8080 or run:
Continue with the Quickstart guide or explore the runnable examples. Coming from Axum? The Axum guide maps each building block, and the comparison covers when to pick Tako, Axum, or Actix Web.
At a glance
| Area | Capabilities |
|---|---|
| Transports | HTTP/1.1, HTTP/2, HTTP/3, WebSocket, WebTransport, SSE, TCP, UDP, Unix sockets, PROXY protocol |
| Extractors | JSON, form, query, path, headers, cookies, JWT claims, API keys, multipart, protobuf |
| Middleware | Authentication, CSRF, sessions, security headers, request IDs, body limits, rate limiting, CORS, idempotency, compression |
| Integrations | GraphQL, gRPC (unary and streaming), OpenAPI, Prometheus, OpenTelemetry, queues, signals |
The default setup uses Tokio and includes HTTP/1.1. Enable additional protocols and integrations through Cargo features. See the runtime compatibility guide for transport support on Tokio and Compio.
Upgrading? The 2.3 migration guide covers the removed HTTP client, WebTransport, and gRPC changes, the 2.2 migration guide the per-thread changes, and the 2.1 migration guide the API changes and opt-in transport features from 2.0.
Benchmarks
| Framework | 100 conns · req/s | p99 | 1,000 conns · req/s | p99 |
|---|---|---|---|---|
| Actix Web | 1,530,425 | 3.48 ms | 1,580,809 | 6.79 ms |
| ntex | 1,562,670 | 3.23 ms | 1,557,559 | 6.25 ms |
| Tako per-thread | 1,436,252 | 6.11 ms | 1,521,982 | 7.89 ms |
Tako + jemalloc |
497,515 | 1.56 ms | 1,286,328 | 3.05 ms |
| Tako | 478,502 | 1.73 ms | 1,112,141 | 3.64 ms |
| Axum | 496,454 | 1.48 ms | 1,048,804 | 3.81 ms |
Tako's default server keeps pace with Axum on the same Tokio runtime and pulls
ahead at 1,000 connections, and the thread-per-core
per-thread server
lands within a few percent of Actix Web and ntex. On the multi-threaded server,
installing jemalloc through the jemalloc feature adds about 16% at 1,000
connections. GET / returns Hello, World!; each
number is the median of three 20-second wrk runs over loopback in a 24 vCPU
Linux container (AMD EPYC 9655P), measured with tako-rs 2.2.0 in September 2026.
Results move with hardware and configuration, so read the
methodology and reproduction steps
before drawing conclusions.
License
MIT — see LICENSE.
Made with ❤️ & 🦀 by the Tako contributors.