Skip to main content

Prerequisites

angr Management requires:
  • Python: 3.10 or higher
  • Platform: Windows, macOS, or Linux
  • Qt: PySide6 (installed automatically)

Installation Methods

Dependency Groups

angr Management defines several dependency groups in pyproject.toml:

Core Dependencies

Automatically installed with the base package:
  • PySide6-Essentials (>=6.4.2, !=6.7.0) - Qt bindings
  • PySide6-QtAds (>=4.2.1) - Advanced docking system
  • QtAwesome (1.4.0) - Icon fonts
  • angr (with angrDB) - Binary analysis framework
  • cle - Binary loader
  • pyqodeng (>=0.0.10) - Code editor
  • binsync (5.7.11) - Collaboration framework
  • ipython - Interactive console

Development Group

uv sync --group dev
Includes:
  • docs - Documentation tools (Sphinx, furo, myst-parser)
  • pyinstaller - Bundling tools
  • testing - Test framework and coverage tools

Testing Group

uv sync --group testing
Includes:
  • pytest - Testing framework
  • pytest-cov - Coverage plugin
  • pytest-xdist - Parallel testing
  • pytest-timeout - Test timeouts
  • coverage - Code coverage
See pyproject.toml:63-72 for the complete list.

Documentation Group

uv sync --group docs
Includes:
  • sphinx - Documentation generator
  • furo - Sphinx theme
  • myst-parser - Markdown support
  • sphinx-autodoc-typehints - Type hint documentation

PyInstaller Group

uv sync --group pyinstaller
For creating standalone executables:
  • pyinstaller (6.16.0)
  • pillow (macOS only)
  • keystone-engine (non-Linux ARM)
  • angr[unicorn]

Platform-Specific Setup

Required System Packages

sudo apt-get update
sudo apt-get install -y \
  libfuse2 \
  libegl1 \
  libxkbcommon-x11-0 \
  libxcb-cursor0 \
  libxcb-icccm4 \
  libxcb-image0 \
  libxcb-keysyms1 \
  libxcb-randr0 \
  libxcb-render-util0 \
  libxcb-shape0
These packages are required for Qt/PySide6 to function properly. See .github/workflows/ci.yml:36-48.

Running angr Management

After installation, you can run angr Management in several ways:
# Using the installed script
angr-management

# Or the alias
am

# Using Python module
python -m angrmanagement

Development Tools

Code Quality

angr Management uses Ruff for linting and formatting:
# Run linter
ruff check .

# Auto-fix issues
ruff check --fix .

# Format code
ruff format .
Configuration in pyproject.toml:106-138:
  • Line length: 120
  • Target version: Python 3.10
  • Required imports: from __future__ import annotations

Type Checking

Type checking with mypy:
mypy angrmanagement tests
Configuration in pyproject.toml:140-147.

Testing

See the Contributing Guide for testing instructions.

Environment Variables

# Force Qt API (set automatically by angr Management)
export QT_API=pyside6

# Set Qt platform for headless testing
export QT_QPA_PLATFORM=minimal:enable_fonts

# Enable debug logging
export ANGRMANAGEMENT_LOG_LEVEL=DEBUG

Project Structure

angr-management/
├── angrmanagement/          # Main package
│   ├── __init__.py         # Boot function
│   ├── __main__.py         # Entry point
│   ├── config/             # Configuration management
│   ├── data/               # Data models (Instance, ObjectContainer)
│   ├── logic/              # Business logic (GlobalInfo, managers)
│   ├── plugins/            # Plugin system
│   ├── ui/                 # UI components
│   │   ├── main_window.py  # MainWindow
│   │   ├── workspace.py    # Workspace
│   │   ├── views/          # All views
│   │   ├── dialogs/        # Dialog windows
│   │   └── widgets/        # Custom widgets
│   └── resources/          # Fonts, images, themes
├── tests/                  # Test suite
├── docs/                   # Documentation
├── pyproject.toml          # Project configuration
└── README.md

Optional Features

Bintrace Support

For trace analysis capabilities:
pip install angr-management[bintrace]

Troubleshooting

This usually means Qt dependencies are missing.Ubuntu/Linux:
sudo apt-get install libegl1 libxkbcommon-x11-0 libxcb-cursor0
For headless environments:
export QT_QPA_PLATFORM=offscreen
PySide6 6.7.0 is explicitly excluded due to incompatibilities. The constraint is defined in pyproject.toml:14:
PySide6-Essentials>=6.4.2,!=6.7.0
If you encounter this version, downgrade or upgrade:
pip install "PySide6-Essentials>=6.4.2,!=6.7.0"
Make sure angr and angr-management versions match:
# Check versions
python -c "import angrmanagement; print(angrmanagement.__version__)"
python -c "import angr; print(angr.__version__)"
Both should be 9.2.205.dev0 for the development version.

Next Steps

Architecture Overview

Understand the core components

Contributing

Start contributing to the project

Build docs developers (and LLMs) love