{"id":39337210,"url":"https://github.com/zydou/arti","last_synced_at":"2026-01-18T02:13:32.768Z","repository":{"id":64166510,"uuid":"550618687","full_name":"zydou/arti","owner":"zydou","description":"An implementation of Tor, in Rust. [NOT Official, Mirrors Only, NO PR here] ","archived":false,"fork":false,"pushed_at":"2026-01-14T16:33:55.000Z","size":33715,"stargazers_count":189,"open_issues_count":0,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-14T19:56:59.967Z","etag":null,"topics":["rust","tor"],"latest_commit_sha":null,"homepage":"https://arti.torproject.org","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zydou.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-13T03:52:19.000Z","updated_at":"2026-01-14T16:34:04.000Z","dependencies_parsed_at":"2023-02-17T22:01:04.922Z","dependency_job_id":"9fc812ee-ac37-473c-b987-a23cf1b6b75b","html_url":"https://github.com/zydou/arti","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/zydou/arti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zydou%2Farti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zydou%2Farti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zydou%2Farti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zydou%2Farti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zydou","download_url":"https://codeload.github.com/zydou/arti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zydou%2Farti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28526569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","tor"],"created_at":"2026-01-18T02:13:32.703Z","updated_at":"2026-01-18T02:13:32.759Z","avatar_url":"https://github.com/zydou.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Crates.io](https://img.shields.io/crates/v/arti.svg)](https://crates.io/crates/arti)\n\n# Arti: reimplementing Tor in Rust\n\nArti is a project to produce an embeddable, production-quality implementation\nof the [Tor](https://www.torproject.org/) anonymity protocols in the\n[Rust](https://www.rust-lang.org/) programming language.\n\n## Links:\n\nThis is the README for the Arti project as a whole.\nIf you want to find more practical information\nyou might want to check out these links:\n\n   * [The Arti website](https://arti.torproject.org)\n\n   * [The README for the `arti` binary crate](./crates/arti/README.md),\n     which includes instructions for how to run Arti with Tor Browser.\n\n   * [Official source repository](https://gitlab.torproject.org/tpo/core/arti)\n\n   * [API-level developer documentation](https://tpo.pages.torproject.net/core/doc/rust/arti_client/index.html)\n\n   * [Guidelines for contributors](./CONTRIBUTING.md)\n\n   * [Architectural overview](./doc/dev/Architecture.md)\n\n   * [Compatibility guide](./doc/Compatibility.md)\n\n   * [Frequently Asked Questions](./doc/FAQ.md)\n\n## Why rewrite Tor in Rust?\n\nRust is *more secure than C*.  Despite our efforts, it's all too simple to\nmess up when using a language that does not enforce memory safety.  We\nestimate that at least half of our tracked security vulnerabilities would\nhave been impossible in Rust, and many of the others would have been very\nunlikely.\n\nRust enables *faster development than C*. Because of Rust's expressiveness\nand strong guarantees, we've found that we can be far more efficient and\nconfident writing code in Rust.  We hope that in the long run this will\nimprove the pace of our software development.\n\nArti is *more flexible than our C tor implementation*.  Unlike our C `tor`,\nwhich was designed as SOCKS proxy originally, and whose integration features\nwere later \"bolted on\", Arti is designed from the ground up to work as a\nmodular, embeddable library that other applications can use.\n\nArti is *cleaner than our C tor implementation*.  Although we've tried to\ndevelop C tor well, we've learned a lot since we started it back in 2002.\nThere are lots of places in the current C codebase where complicated\n\"spaghetti\" relationships between different pieces of code make our software\nneedlessly hard to understand and improve.\n\n\n## \u003ca name=\"status\"\u003e\u003c/a\u003eCurrent status\n\nArti can connect to the Tor network, bootstrap a\nview of the Tor directory, and make anonymized connections over the network.\nNow that Arti has reached version 1.0.0, we believe it is suitable for\nactual use to anonymize connections.\n\nThere are a number of areas (especially at the lower layers) where APIs\n(especially internal APIs) are not stable,\nand we are likely to change them.\nRight now that includes the command line interface to the `arti` program.\n\nAnd of course it's still very new so there are likely to be bugs.\n\n## Building and using Arti\n\nArti can act as a SOCKS proxy that uses the Tor network.\n\nWe expect to be providing official binaries soon.\nBut, for now, you need to obtain a\n[Rust](https://www.rust-lang.org/) development environment,\nand build it yourself.\n\nTo try it out, compile and run the `arti` binary using the below. It will open a\nSOCKS proxy on port 9150.\n\n    $ cargo run -p arti --locked --release -- proxy\n\nYou can build a binary (but not run it) with:\n\n    $ cargo build -p arti --locked --release\n\nThe result can be found as `target/release/arti`.\n\n⚠ **Safety Note**: if you are using the default build options,\nthe compiler will include filesystem path information in the\nbinary that it generates.  If your path is sensitive (for example,\nbecause it includes your username), you will want to take steps\nto prevent this.  See [`doc/safer-build.md`](doc/safer-build.md)\nfor more information.\n\n⚠ **Safety Note**: when building `arti` for \"production use\",\nyou should always use the `-p arti` option as documented above.\nWhile a `cargo build` without specifying the `-p arti` will still build `arti`,\nit may also enable unintended features (including experimental features)\ndue to cargo feature unification.\n\nIf you run into any trouble building the program, please have a\nlook at [the troubleshooting guide](doc/TROUBLESHOOTING.md).\n\n### Custom compile-time options\n\nArti has a number of configurable\n[Cargo features](https://doc.rust-lang.org/cargo/reference/features.html)\nthat, among other things, can affect which asynchronous runtime to use.\n\nSee in the\n[Arti crate-level docs](https://tpo.pages.torproject.net/core/doc/rust/arti/index.html#compile-time-features)\nfor details.\n\n## Using Arti as a library\n\nThe `arti` command line utility is built on top of the \n[`arti_client`](https://tpo.pages.torproject.net/core/doc/rust/arti_client/index.html)\nlibrary (and its dependencies).\n\nThat library's API will allow you to\nmake connections over the Tor network,\nand obtain streams/sinks usable from async Rust.\n\nWe make fairly frequent semver bumps to the Arti library API,\nand to our lower-level crates.\nHowever, in practice, we don't often make disruptive changes\nthat aren't easy to sort out in a dependency.\nWhen using Arti as a library, you should be prepared to make regular updates,\nbumping your versions requirement, not just `cargo update`.\n`cargo upgrade` can help with this.\n\nSee [our version update and API compatibility policy](doc/Semver.md)\nfor more details.\n\n## Minimum supported Rust Version\n\nOur current Minimum Supported Rust Version (MSRV) is 1.86.\n\nWhen increasing this MSRV, we won't require any Rust version released in the\nlast six months. (That is, we'll only require Rust versions released at least\nsix months ago.)\n\nWe will not increase MSRV on PATCH releases, though our dependencies might.\n\nWe won't increase MSRV just because we can: we'll only do so when we have a\nreason. (We don't guarantee that you'll agree with our reasoning; only that\nit will exist.)\n\n## Roadmap\n\nThanks to a generous grant from\n[Zcash Open Major Grants (ZOMG)](https://zcashomg.org/), we're able to devote\nsome significant time to Arti in the years 2021-2022.  Here is our _rough_\nset of plans for what we hope to deliver when.\n\nThe goal times below are complete imagination, based on broad assumptions about\ndeveloper availability.  Please don't take them too seriously until we can\nget our project manager to sign off on them.\n\n * Arti 0.0.1: Minimal Secure Client (Goal: end of October 2021??)\n   * Target audience: **developers**\n   * [x] Guard support\n   * [x] Stream Isolation\n   * [x] High test coverage\n   * [x] Draft APIs for basic usage\n   * [x] Code cleanups\n   * [and more...](https://gitlab.torproject.org/tpo/core/arti/-/milestones/6)\n\n * Arti 0.1.0: Okay for experimental embedding (Goal: Mid March, 2022??)\n   * Target audience: **beta testers**\n   * [x] Performance: preemptive circuit construction\n   * [x] Performance: circuit build timeout inference\n   * [x] API support for embedding\n   * [x] API support for status reporting\n   * [x] Correct timeout behavior\n   * [and more...](https://gitlab.torproject.org/tpo/core/arti/-/milestones/7)\n\n * Arti 1.0.0: Initial stable release (Goal: Mid September, 2022??)\n   * Target audience: **initial users**\n   * [x] Stable API (mostly)\n   * [ ] Stable CLI\n   * [x] Stable configuration format\n   * [x] Automatic detection and response of more kinds of network problems\n   * [x] At least as secure as C Tor\n   * [x] Client performance similar to C Tor\n   * [x] More performance work\n   * [and more...](https://gitlab.torproject.org/tpo/core/arti/-/milestones/8)\n\n * Arti 1.1.0: Anti-censorship features (Goal: End of October, 2022?)\n   * Target audience: **censored users**\n   * [x] Bridges\n   * [x] Pluggable transports\n   * [and more...?](https://gitlab.torproject.org/tpo/core/arti/-/milestones/10)\n\n * Arti ~1.2.0: [Onion service]() support (Goal: End of 2023)\n   * [x] [Client support](https://gitlab.torproject.org/tpo/core/arti/-/issues/?label_name%5B%5D=Onion%20Services%3A%20Basic%20Client) (for connecting to onion services)\n   * [x] [Service support](https://gitlab.torproject.org/tpo/core/arti/-/issues/?sort=created_date\u0026state=opened\u0026label_name%5B%5D=Onion%20Services%3A%20Basic%20Service\u0026first_page_size=100) (for running onion services)\n   * [ ] [Full security features](https://gitlab.torproject.org/tpo/core/arti/-/issues/?label_name%5B%5D=Onion%20Services%3A%20Improved%20Security) (for production-ready quality)\n\n * Arti ~2.0.0: Feature parity with C tor as a client (Goal: Mid 2024)\n   * [some possible details...](https://gitlab.torproject.org/tpo/core/arti/-/milestones/9#tab-issues)\n\n * Arti ?.?.?: Relay support\n\n## \u003ca name=\"reporting-bugs\"\u003e\u003c/a\u003e How can I report bugs?\n\nWhen you find bugs, please report them\n[on our bugtracker](https://gitlab.torproject.org/tpo/core/arti/). \n\nIf you don't already have an account there, you can [report a bug anonymously](https://anonticket.torproject.org/) or you can [request an account](https://anonticket.torproject.org/user/gitlab-account/create/).\n\n## How can I help out?\n\nHave a look at our [contributor guidelines](./CONTRIBUTING.md) for a few ideas\non how to get started.\n\n## License\n\nThis code is licensed under either of\n\n * [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)\n * [MIT license](https://opensource.org/licenses/MIT)\n\nat your option.\n\n**However**, some optional parts are licensed under the GNU Lesser General\nPublic License, version 3.0,\nas indicated in the `Cargo.toml`.\nThis applies to `crates/equix` and `crates/hashx`.\nSee [`LGPL-and-rust.md`](./doc/LGPL-and-rust.md)\nfor discussion of issues concerning redistributing binaries\ncontaining these crates.\n\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally\nsubmitted for inclusion in the work by you, as defined in the Apache-2.0\nlicense, shall be dual licensed as above, without any additional terms or\nconditions.\n\n\u003e(The above notice, or something like it, seems to be pretty standard in Rust\n\u003eprojects, so I'm using it here too.  This instance of it is copied from\n\u003ethe RustCrypto project's README.md file.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzydou%2Farti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzydou%2Farti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzydou%2Farti/lists"}