#tor #arti #async


Manage a set of connections to the Tor network

24 releases (12 breaking)

new 0.12.0 Dec 4, 2023
0.11.0 Oct 31, 2023
0.10.1 Sep 5, 2023
0.9.2 Jun 30, 2023
0.0.0 Jun 24, 2021

#1261 in Network programming

Download history 244/week @ 2023-08-15 244/week @ 2023-08-22 191/week @ 2023-08-29 372/week @ 2023-09-05 182/week @ 2023-09-12 214/week @ 2023-09-19 211/week @ 2023-09-26 195/week @ 2023-10-03 183/week @ 2023-10-10 314/week @ 2023-10-17 293/week @ 2023-10-24 409/week @ 2023-10-31 418/week @ 2023-11-07 387/week @ 2023-11-14 456/week @ 2023-11-21 347/week @ 2023-11-28

1,656 downloads per month
Used in 19 crates (5 directly)


38K SLoC


Manage a set of channels on the Tor network.


This crate is part of Arti, a project to implement Tor in Rust.

In Tor, a channel is a connection to a Tor relay. It can be direct via TLS, or indirect via TLS over a pluggable transport.

Since a channel can be used for more than one circuit, it's important to reuse channels when possible. This crate implements a ChanMgr type that can be used to create channels on demand, and return existing channels when they already exist.

Compile-time features

  • pt-client -- Build with APIs to support pluggable transports.

Experimental and unstable features

Note that the APIs enabled by these features are NOT covered by semantic versioning[^1] guarantees: we might break them or remove them between patch versions.

  • experimental -- Build with all experimental features above. (Currently, there are no experimental features in this crate, but there may be some in the future.)

[^1]: Remember, semantic versioning is what makes various cargo features work reliably. To be explicit: if you want cargo update to only make safe changes, then you cannot enable these features.

License: MIT OR Apache-2.0


~478K SLoC