Tokio-console is a debugger for asynchronous Rust programs that provides diagnostics and visibility into task execution.
The tool addresses the challenge of understanding and debugging async Rust applications by streaming diagnostic data from instrumented programs to interactive debugging clients. It works through a multi-component architecture: a wire protocol based on gRPC and protocol buffers for efficient data transport, instrumentation that collects diagnostic data as a tracing-subscriber layer for Tokio-based applications, and client tools that display and explore this data. The approach enables interoperability between different implementations since the wire format is language-agnostic, allowing other tools beyond the included command-line client to consume the same diagnostic stream.
Projects using Tokio and the tracing ecosystem are the natural fit for adoption. The tool requires minimal setup—adding the console-subscriber crate and a one-liner to your main function—though it does require enabling the tokio_unstable cfg and setting appropriate tracing targets. The interactive command-line interface presents task information in a top-like view, showing task lists and detailed per-task diagnostics. This is particularly valuable for developers working on complex async systems where traditional debugging approaches fall short, though it is specifically designed for Tokio-based applications rather than being a general async Rust solution.
Development activity shows consistent engagement with the project's core mission. The maintainers have integrated feedback from the broader async Rust community, including input from the Tokio team and async foundations working group. The project maintains active communication channels and comprehensive API documentation. Work continues on expanding the diagnostic toolkit's capabilities while preserving the stability of the wire protocol to support multiple implementations.