FEX is an emulator that executes 32-bit and 64-bit x86 binaries on ARM64 hardware. It functions as a binary translation framework that converts guest machine code into host instructions using a JIT compilation engine and a persistent code cache.
The project features a Vulkan graphics wrapper that translates OpenGL and Vulkan API calls to native host drivers, enabling cross-architecture graphics rendering. It includes a dedicated root filesystem manager for downloading, mounting, and switching between compressed filesystem images required for guest application environments.
The system provides comprehensive debugging and observability tools, including a remote GDB server, CPU state inspection, and the ability to capture and replay Vulkan graphics frames. Performance is managed through library call forwarding and a graphical interface for adjusting runtime configuration and memory models.
The emulator integrates with the host kernel binary format registration system, allowing emulated binaries to be launched directly from the host shell.