#tor #arti #async


Manage a set of anonymous circuits over the Tor network

14 releases (7 breaking)

Uses new Rust 2021

0.7.0 Nov 30, 2022
0.5.0 Sep 1, 2022
0.3.2 Jun 24, 2022
0.1.0 Mar 1, 2022
0.0.0 Jun 24, 2021

#253 in Network programming

Download history 454/week @ 2022-08-18 1438/week @ 2022-08-25 1774/week @ 2022-09-01 979/week @ 2022-09-08 987/week @ 2022-09-15 1242/week @ 2022-09-22 1051/week @ 2022-09-29 874/week @ 2022-10-06 633/week @ 2022-10-13 892/week @ 2022-10-20 363/week @ 2022-10-27 386/week @ 2022-11-03 205/week @ 2022-11-10 218/week @ 2022-11-17 213/week @ 2022-11-24 388/week @ 2022-12-01

1,082 downloads per month
Used in 9 crates (4 directly)


47K SLoC


tor-circmgr: circuits through the Tor network on demand.


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

In Tor, a circuit is an encrypted multi-hop tunnel over multiple relays. This crate's purpose, long-term, is to manage a set of circuits for a client. It should construct circuits in response to a client's needs, and preemptively construct circuits so as to anticipate those needs. If a client request can be satisfied with an existing circuit, it should return that circuit instead of constructing a new one.

Compile-time features

  • specific-relay: Support for connecting to a relay via specifically provided connection instructions, rather than using information from a Tor network directory.

  • full: Enable all features above.

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-api: Add additional non-stable APIs to our public interfaces.

  • experimental: Enable all the above experimental features.

[^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


~457K SLoC