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!