Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Join us on Gitter! Appveyor build status Travis build Status Github build status

Welcome to Atlas-C++, the C++ reference implementation of the Atlas protocol. The Atlas protocol is the primary protocol by which servers and clients in the WorldForge system communicate.


If you intend to build this as a prerequisite for the Ember client or the Cyphesis server we strongly suggest that you use the Hammer tool to compile it. This is script provided by the Worldforge project which will download and install all of the required libraries and components used by Worldforge.

Alternatively you can use Conan to install all dependencies.

conan remote add worldforge
conan install tools/conan --build missing
cmake --preset conan-release
cmake --build --preset conan-release

Otherwise the library can most easily be built through the following commands.

mkdir build && cd build
cmake ..
make -j all install


The test suite can be built and run using the check target. For example:

make check


cmake --build --preset conan-release --target check

API documentation

If Doxygen is available API documentation can be generated using the dox target. For example:

make dox


cmake --build --preset conan-release --target dox


This is Atlas-C++ 0.7.x, the latest development version of Atlas-C++. The 0.6.x branch will contain NO API CHANGES. The 0.7.x branch is completely experimental and may not be easy to track. Any changes affecting the API should go into 0.7.x, as should any features which are not completely stable.


To generate the documentation, simply configure the tree then execute the "docs" target (for example make docs). This will use doxygen to generate the documentation, which will then reside in doc/.

Please read the file carefully before working on Atlas-C++.

The specification

The actual Atlas specification can be found under protocol/spec as a series of filed ending in the ".def" suffix. These files represent the canonical Atlas definition.

In order to generate the C++ code these files are translated into a protocol/spec/xml/atlas.xml file through the use of the protocol/spec/tools/ file, which requires Python. Normally this would be performed by the CMake build script.

This file (protocol/spec/xml/atlas.xml) in turn gets translated into C++ files through the use of the Atlas/Objects/ Python script (which requires Python).This would also normally be performed by the CMake build script.

Thus, in order to change the protocol one would perform these steps:

  • Update any of the files in protocol/spec
  • Rebuild the project (through the builder used with CMake)

You shouldn't touch the protocol/spec/xml/atlas.xml file, nor any of the C++ files generated (these are identified by having "Automatically generated using" added to the top of them).

There are some areas of improvements here. Chief amongst them would be

  • Don't use two different formats: either standardize on only using "atlas.xml", or standardize on only using the .def files


Atlas-C++ is licensed under the GNU Lesser General Public License. Please see the file COPYING for details as to its distribution.

Atlas-C++ is provided AS IS with ABSOLUTELY NO WARRANTY. Please see the file COPYING for details.


Please see the AUTHORS file for contact information.

How to help

If you're interested in helping out with development you should check out these resources: