{"id":29027561,"url":"https://github.com/rust-dd/tako","last_synced_at":"2026-01-26T19:07:32.750Z","repository":{"id":299910095,"uuid":"1002625153","full_name":"rust-dd/tako","owner":"rust-dd","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-18T22:54:43.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-18T23:30:13.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rust-dd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-15T21:27:54.000Z","updated_at":"2025-06-18T22:54:46.000Z","dependencies_parsed_at":"2025-06-18T23:30:15.301Z","dependency_job_id":"73a90f79-2b96-4420-9a2c-5080898c58e4","html_url":"https://github.com/rust-dd/tako","commit_stats":null,"previous_names":["rust-dd/tako"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rust-dd/tako","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-dd%2Ftako","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-dd%2Ftako/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-dd%2Ftako/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-dd%2Ftako/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rust-dd","download_url":"https://codeload.github.com/rust-dd/tako/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-dd%2Ftako/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262017152,"owners_count":23245579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-26T06:36:56.044Z","updated_at":"2026-01-26T19:07:32.739Z","avatar_url":"https://github.com/rust-dd.png","language":"Rust","readme":"![Build Workflow](https://github.com/rust-dd/tako/actions/workflows/ci.yml/badge.svg)\n[![Crates.io](https://img.shields.io/crates/v/tako-rs?style=flat-square)](https://crates.io/crates/tako-rs)\n![License](https://img.shields.io/crates/l/tako-rs?style=flat-square)\n\n# 🐙 Tako — Lightweight Async Web Framework in Rust\n\n\u003e **Tako** (*\"octopus\"* in Japanese) is a pragmatic, ergonomic and extensible async web framework for Rust.\n\u003e It aims to keep the mental model small while giving you first‑class performance and modern conveniences out‑of‑the‑box.\n\n\u003e **⚠️ ~~Early-stage software~~**\n\u003e **⚠️ Beta software:** Tako is still under active development; use with caution and expect breaking changes.\n\n\u003e **Blog posts:**\n\u003e - [Tako: A Lightweight Async Web Framework on Tokio and Hyper](https://rust-dd.com/post/tako-a-lightweight-async-web-framework-on-tokio-and-hyper)\n\u003e - [Tako v.0.5.0 road to v.1.0.0](https://rust-dd.com/post/tako-v-0-5-0-road-to-v-1-0-0)\n\u003e - [Tako v0.5.0 → v0.7.1-2: from \"nice router\" to \"mini platform\"](https://rust-dd.com/post/tako-v0-5-0-to-v0-7-1-2-from-nice-router-to-mini-platform)\n\n\n## ✨ Highlights\n\n* **Batteries‑included Router** — Intuitive path‑based routing with path parameters and trailing‑slash redirection (TSR).\n* **Extractor system** — Strongly‑typed request extractors for headers, query/body params, JSON, form data, etc.\n* **Streaming \u0026 SSE** — Built‑in helpers for Server‑Sent Events *and* arbitrary `Stream` responses.\n* **Middleware** — Compose synchronous or async middleware functions with minimal boilerplate.\n* **Shared State** — Application‑wide state injection without `unsafe` globals.\n* **Plugin system** — Opt‑in extensions let you add functionality without cluttering the core API.\n* **Hyper‑powered** — Built on `hyper` \u0026 `tokio` for minimal overhead and async performance with **native HTTP/2, HTTP/3 \u0026 TLS** support.\n* **Compio runtime** — Optional support for compio async runtime as an alternative to tokio.\n* **GraphQL integration** — Async-GraphQL integration for Tako: extractors, responses, and subscriptions.\n* **OpenAPI support** — Integration with utoipa and vespera for automatic API documentation generation.\n* **Compression** — Built-in support for brotli, gzip (flate2), and zstd compression.\n\n## Documentation\n\n[API Documentation](https://docs.rs/tako-rs/latest/tako/)\n\nMSRV 1.87.0 | Edition 2024\n\n## Tako in Production\n\nTako already powers real-world services in production:\n\n- `stochastic-api`: https://stochasticlab.cloud/\n- `shrtn.ink`: https://app.shrtn.ink/\n\n## 🔥 Benchmarking the Hello World\n\n```\n+---------------------------+------------------+------------------+---------------+\n| Framework 🦀              |   Requests/sec   |   Avg Latency    | Transfer/sec  |\n+---------------------------+------------------+------------------+---------------+\n| Tako (not taco! 🌮)       |    ~148,800      |    ~649 µs       |   ~12.6 MB/s  |\n| Tako Jemalloc             |    ~158,059      |    ~592 µs       |   ~13.3 MB/s  |\n| Axum                      |    ~153,500      |    ~607 µs       |   ~19 MB/s    |\n| Actix                     |    ~126,300      |    ~860 µs       |   ~15.7 MB/s  |\n+---------------------------+------------------+------------------+---------------+\n\n👉 Command used: `wrk -t4 -c100 -d30s http://127.0.0.1:8080/`\n```\n\n\n## 📦 Installation\n\nAdd **Tako** to your `Cargo.toml`:\n\n```toml\n[dependencies]\ntako-rs = \"*\"\n```\n\n\n## 🚀 Quick Start\n\nSpin up a \"Hello, World!\" server in a handful of lines:\n\n```rust\nuse anyhow::Result;\nuse tako::{\n    responder::Responder,\n    router::Router,\n    types::Request,\n    Method,\n};\nuse tokio::net::TcpListener;\n\nasync fn hello_world(_: Request) -\u003e impl Responder {\n    \"Hello, World!\".into_response()\n}\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    // Bind a local TCP listener\n    let listener = TcpListener::bind(\"127.0.0.1:8080\").await?;\n\n    // Declare routes\n    let mut router = Router::new();\n    router.route(Method::GET, \"/\", hello_world);\n\n    // Launch the server\n    tako::serve(listener, router).await;\n\n    Ok(())\n}\n```\n\n## 📜 License\n\n`MIT` — see [LICENSE](./LICENSE) for details.\n\n\nMade with ❤️ \u0026 🦀 by the Tako contributors.\n","funding_links":[],"categories":["Libraries"],"sub_categories":["Web programming"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-dd%2Ftako","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frust-dd%2Ftako","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-dd%2Ftako/lists"}