finds.dev← search

// the find

tokio-rs/console

★ 4,547 · Rust · MIT · updated Apr 2026

a debugger for async rust!

tokio-console is a terminal UI debugger for async Rust programs built on Tokio. It streams live task and resource diagnostics over gRPC, giving you a `top`-like view of every spawned task, its poll counts, wakeup patterns, and resource contention. The target audience is anyone debugging async performance issues or hangs in Tokio applications.

The wire protocol (gRPC + protobuf) is a real design win — it's language-agnostic, so non-Rust tooling can consume the same stream. The built-in lint warnings (self-wakes, lost-waker, never-yielded, auto-boxed-future) are genuinely useful; a task that wakes itself in a hot loop is a common async bug and having it flagged automatically saves hours of digging. The subscriber is a standard `tracing-subscriber` `Layer`, so adding it to an existing app is a one-liner and it composes cleanly with other layers. Resource tracking (mutexes, semaphores, sleep timers) is scoped and visually distinct from task tracking, which matters when debugging contention.

The `tokio_unstable` cfg requirement is a real barrier — it's not enabled in most CI pipelines by default, so you'll forget to set it, see no task data, and spend ten minutes wondering what's wrong. The tool only works with Tokio; if you're on async-std or smol you're out of luck entirely. The retained-state model means completed tasks eventually disappear (default 6s), which makes it awkward to investigate something that failed fast — you either catch it live or you missed it. There's no persistence or replay: you can't record a session and examine it offline, which limits its usefulness for intermittent production issues.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →