Spox makes it easy to construct ONNX models through clean and idiomatic Python code. A common application of ONNX is converting models from various frameworks. This requires replicating their runtime behaviour with ONNX operators. In the past this has been a major challenge. Based on our experience, we designed Spox from the ground up to make the process of writing converters (and ONNX models in general) as easy as possible. Spox's features include: - Eager operator validation and type inference - Errors with Python tracebacks to offending operators - First-class support for subgraphs (control flow) - A lean and predictable API