Skip to content

Building From Source

user edited this page Sep 21, 2026 · 3 revisions

Building From Source

Havoc has two components: the teamserver (Go) and the client (C++/Qt5). Both are built from the repository root with make.

1. Clone the repository

git clone https://github.com/CyberAZE-community/Havoc.git
cd Havoc

2. Install the dependencies

Kali / Debian / Ubuntu

sudo apt install -y git build-essential cmake golang-go nasm mingw-w64 \
  qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmake libqt5websockets5 libqt5websockets5-dev \
  qtdeclarative5-dev python3-dev libboost-all-dev libspdlog-dev libfontconfig1 \
  libglu1-mesa-dev mesa-common-dev

Arch-based distros

sudo pacman -S git gcc base-devel cmake make go nasm mingw-w64-gcc \
  qt5-base qt5-websockets python3 boost spdlog fontconfig glu mesa

macOS

You must have homebrew installed.

brew install --cask cmake
brew install python qt@5 spdlog golang
brew link --overwrite qt@5

3. Build the teamserver

make ts-build

This builds the teamserver binary as ./havoc in the repository root.

4. Build the client

make client-build

This initializes the git submodules, builds the client with CMake, and clones the CyberAZE-community/Modules repo (branch dev) into client/Modules/. The client binary is written to client/Havoc.

On macOS use make client-build-mac instead.

5. Run

# Start the teamserver
./havoc server --profile ./profiles/havoc.yaotl -v

# Start the client (in another terminal)
./havoc client

All files created during interaction with the teamserver are stored in the data/ folder.

Known build issues

  • fatal error: Python.h: No such file or directory when building the client → install the Python development headers (python3-dev on Debian/Ubuntu). Any recent Python 3 works.
  • Implant/payload compilation fails at runtime → usually a missing or broken MinGW toolchain. Verify mingw-w64 and nasm are installed and that the compiler paths in the Teamserver.Build section of your profile are correct.
  • CMake fails to find nlohmann/json.hpp → the git submodules aren't checked out; run git submodule update --init --recursive (done automatically by make client-build).

A Docker build for the teamserver is also available:

docker build -f teamserver/Teamserver-Dockerfile .

Clone this wiki locally