#tor #arti #async


Manage a set of anonymous circuits over the Tor network

25 releases (13 breaking)

new 0.13.0 Dec 4, 2023
0.12.0 Oct 31, 2023
0.11.0 Oct 2, 2023
0.9.1 Jun 30, 2023
0.0.0 Jun 24, 2021

#440 in Network programming

Download history 252/week @ 2023-08-14 200/week @ 2023-08-21 207/week @ 2023-08-28 383/week @ 2023-09-04 155/week @ 2023-09-11 228/week @ 2023-09-18 157/week @ 2023-09-25 275/week @ 2023-10-02 199/week @ 2023-10-09 282/week @ 2023-10-16 284/week @ 2023-10-23 396/week @ 2023-10-30 319/week @ 2023-11-06 455/week @ 2023-11-13 460/week @ 2023-11-20 367/week @ 2023-11-27

1,641 downloads per month
Used in 17 crates (6 directly)


59K SLoC


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


~485K SLoC