How to Build Zappy

This page explains everything you need to install to build and run the Zappy project. It is structured into sections for:

  • Minimal delivery (AI / Server / GUI)

  • Runner

  • Documentation

  • Development (extra)

Where possible, two approaches are described:

  • Using Nix (recommended for reproducibility)

  • Traditional/manual install (for portability)

Minimal delivery (AI / Server / GUI)

These are the core components needed to run or develop the server, AI, and GUI separately.

Using Nix (recommended)

If you have Nix installed:

nix develop

This will enter a shell with all dependencies available for building the server, AI, and GUI.

Traditional (manual) install

You’ll need to install these system packages yourself:

  • Common build tools: - bash - coreutils - gnugrep - findutils - GNU Make - pkg-config

  • Server: - gcc - glibc (with math libraries)

  • AI: - Python 3.13 (or compatible) with pip - virtualenv or Python’s built-in venv module - pip packages:

    • setuptools

    • hatching

  • GUI: - g++ (with libstdc++) - SDL2 - SDL2_image - glew - GL, GLU - glm - mesa

  • Optional: - ncurses (for pretty Makefile logs)

Runner

The runner tool (to coordinate AI, server, GUI in one command) requires:

Using Nix (recommended)

Nix is the only requirement:

nix run github:Sigmapitech/zappy/zappy-runner

This will handle all other builds and dependencies automatically.

Traditional (manual) install

There is no non-Nix delivery for the runner. If you want to avoid Nix entirely, you’ll have to run the server, AI, and GUI manually in separate terminals, using the minimal delivery setup above.

Documentation

To build the Sphinx documentation:

Using Nix

All packages are included in the dev shell:

nix develop
make -C docs html

Traditional install

You’ll need:

  • System - doxygen - libxml

  • Python packages (install via pip) - sphinx - furo - breathe - exhale - beautifulsoup4 - six - linkify-it-py - myst-parser - sphinx-copybutton - sphinx-design - sphinx-notfound-page - sphinx-sitemap

Example:

pip install sphinx furo breathe exhale beautifulsoup4 six linkify-it-py myst-parser \
    sphinx-copybutton sphinx-design sphinx-notfound-page sphinx-sitemap

Then:

doxygen
make -C docs html

Development (extra)

Additional tools recommended for testing, coverage, linting, and advanced debugging.

Using Nix

These are included in the dev shell:

nix develop

Traditional install

You can install these manually via your system package manager or pip.

  • Testing and coverage - gcovr - libcoverage - pytest

  • Static analysis and formatting - compiledb - clang-tools - black - mypy - isort - vulture

  • Logging & profiling - hl-log-viewer - valgrind - kcachegrind - graphviz