Arti 1.4.0 is released: onion services, RPC, relay development, and more
Arti is our ongoing project to create a next-generation Tor client in Rust. Now we're announcing the latest release, Arti 1.4.0.
This release offers a new RPC interface, which is Arti's replacement for C Tor's control port with many improvements.
There has also been a lot of preparatory work for relay support, bugfixes, and work towards service-side onion service denial-of-service resistance.
For full details on what we've done, and for information about many smaller and less visible changes as well, please see the CHANGELOG.
For more information on using Arti, see our top-level README, and the
documentation for the arti
binary.
With this release, we are happy to announce that our Arti website has received an extensive overhaul. This website will be used to find general information about the Arti project, such as example code, documentation, and more. A big thanks to our friends from DocumentWrite for helping us with the new website design and implementation!
Dedication
The Arti 1.4.0 release is dedicated to the memory of Jérémy Bobbio (1982-2024), known in our community as Lunar. Lunar was a Tor volunteer, free software hacker, and community organizer.
Inside Tor, Lunar will be remembered for leading the efforts around Tor's old Weekly News newsletter, but also for caring deeply about both the organization the people around the organization.
Outside of Tor, Lunar worked on highly successful free software projects such as the Debian project and helped build the infrastructure and tooling around the Reproducible Builds project, a project that continues to benefit the broader ecosystem.
Lunar will be deeply missed, both in our community and in the many other communities he participated in.
See also what other projects are writing about Lunar:
New RPC Interface
With this release, Arti's RPC interface is now ready for use.
Arti RPC takes the place of the control port in the C Tor implementation, with several improvements:
- The protocol is based on JSON, to reduce the need for custom-built parsers and encoders.
- The protocol uses a capabilities-based design to prevent applications from accidentally interfering with one another's use of Arti.
- The protocol is more explicitly extensible, with clear specifications of how clients and Arti must handle unexpected messages, parameters, and data.
- There is a specified mechanism for discovery to simplify the task of configuring applications to find and use the RPC port.
- The protocol allows multiple simultaneous requests on a single connection.
- We provide a default [client library], with C and Python wrappers, to save application developers from having to implement this logic themselves.
At present the supported functionality is limited: applications can use the RPC API to connect to Arti, check the bootstrap process, and open data streams. Coming releases will add more functionality based on developers' needs. (We already have wish-lists from Tails and Tor Browser.)
We hope that developers will experiment with using the API and client library so that we can use their feedback to guide priorities for the upcoming work.
This is a major milestone in making it easier for developers to integrate Arti in their own applications and services without directly embedding the Arti Rust library itself. We hope this will open up opportunities for external developers and allowing a growing community of privacy conscious users to benefit from the strong online protections Tor offers.
We do not expect to make breaking changes in the RPC API or the client library, though we will wait for a little more developer experience before we declare it officially stable.
Thanks to everybody who's contributed to this release, including Dimitris Apostolou, hhamud, Neel Chauhan and tidely.
And as always, our deep thanks to Zcash Community Grants, the Bureau of Democracy, Human Rights and Labor, and our other sponsors for funding the development of Arti!
Comments
We encourage respectful, on-topic comments. Comments that violate our Code of Conduct will be deleted. Off-topic comments may be deleted at the discretion of the moderators. Please do not comment as a way to receive support or to report bugs on a post unrelated to a release. If you are looking for support, please see our FAQ, user support forum or ways to get in touch with us.