ArX is an easy to use distributed version control system
that combines high performance with remarkable power and flexibility


ArX is a Version Control System (VCS), like CVS, Subversion, or GNU arch. It manages "archives" (collections of files), such as source code files for a software project. It tracks the history of each file, along with change comments, version tags, forks and branches, etc. It can store files and documents of any kind, but the largest benefits are with text files, rather than binary files.


Each VCS project has different goals and objectives. ArX aims to offer:

Like most modern VCS tools, ArX solves the typical CVS problems:

Like CVS (and most modern VCS tools), ArX uses an "optimistic" locking model, which allows multiple developers to modify the same file at the same time, and then resolves any conflicts as each developer checks in his or her work. While this may sound scary if you are used to systems that "lock" files, it actually works very well, as confirmed by the thousands of projects that have used this approach (in CVS) for many years.

Unlike CVS and most traditional VCS tools, ArX is "distributed", which means that ArX does not require a central server. Each developer can maintain their own "archive" of their projects, but can easily share their work with other developers. This modern design works well with teams that are geographically distributed, and especially with teams where some contributors are not part of the core team. ArX includes an optional patch queue manager to enable centralized, CVS-style, development when desired.

ArX differs from many of the newer distributed SCM tools in that it does not require every working tree to contain an entire copy of the archive history. Each archive can store multiple branches, each of which could be checked out in multiple working trees. Other tools may use the terms "patch pooling" or "centralized storage" for this type of feature, and it is important for efficient branching on systems without hardlinks. Also, ArX archives can link to other archives (including remote archives) for older history, allowing branches of remote projects to be very small and fast.

Another important feature of ArX is that an archive can be published on any HTTP web server. It does not require any special code running on the server, which has some significant advantages: First, it allows projects to host their code on almost any inexpensive web site, including the free personal home pages offered by many ISPs. Second, it keeps the server very secure, because the only service required is a standard web server such as Apache or Boa.


ArX is licensed under the GPL.


User Guide

Command Summary


ArX Presentation given at Codecon (compares ArX, GNU Arch, monotone, darcs, svk, and codeville)

Mailing Lists

Bug Tracking



Latest release
NOTE: ArX 2.2.1 was a security update, so everyone using any earlier version is urged to upgrade.
The move to 2.x was a major upgrade, with many new features and improvements. See the Release notes.

A .deb is available:

Contributions of binaries for other systems would be appreciated. The ArX source package includes an rpm spec file in the top directory (arx.spec) along with instructions on how to build an rpm in INSTALL.RPM.

NetBSD Package

README.html for ArX on NetBSD.

Source Code

ArX Source viewable with any web browser

An expanded copy of the latest tarball is available here:

Note: This is a new location (as of 2005-08-31), so please update any bookmarks or external links.

Obtaining ArX source code using ArX

The official source code for ArX is available as public archive in ArX format. This archive uses an enchanced version of "tags", which are an ArX feature that allows a single command to overlay multiple projects into a single workspace. This allows ArX and the libraries it uses (e.g. boost) to be separate projects, but to treat them as if they were one superproject. There are several tags in the official ArX archive, such as:

You can use one of these tags to obtain an exact copy of the official source code. If you want to make changes, you will need to create your own fork. Assuming you already have ArX installed on your system, and you want to start from the latest head (rather than the latest release), use this command:

  arx get -v arx

Whenever you want to update your local system by merging in any new changes from the official ArX tree, use these commands (which will only work within a tree that was created with "arx get"):

  cd arx
  arx merge -v

This will merge into the local tree all the changes in the latest version of ArX, even if the version number has changed (e.g. from 2.2 to 2.3).

Project Info


ArX started as a fork of Tom Lord's original arch project (larch), but has evolved to be a completely independent product. Walter Landry was an active arch developer and was (for a brief time) the lead developer. Due to differences of opinion about where and how arch was headed, he launched the ArX project, rewriting the entire code base in C++. Walter believed that arch was more complex than necessary, so he looked for ways to simplify the interface without sacrificing important features. He also saw other opportunities for improvements.

Here are some of the major changes between the original ArX and the current 2.x version:

Using larch as a starting point allowed ArX to be self-hosting from the beginning. That is, ArX source code is stored in an ArX repository, and has been since 2003.


The X in ArX is stands for the greek letter chi (just like TeX), and so is pronounced by English-speakers either a bit like the 'ch' in the Scots word 'loch' or like 'k'. It definitely is not pronounced 'ks'. This description was lifted mostly intact from the LaTeX FAQ.


ArX project page on Savannah

Other Free Distributed VCS projects

If ArX doesn't meet your needs, try these (alphabetically listed) alternatives...

Lists and Comparisons of VCS projects

Some of these lists include non-free and/or centralized VCS tools...

Informative Articles

If you want to learn more about Distributed VCS...