Systems of differential equations are commonly used to model real-world dynamical systems. In most cases, numerical methods are needed to study these systems. There are many freely available software solutions that implement numerical methods for dynamical systems analysis. However, these different software solutions have different requirements for user-supplied models, which makes it difficult to set up dynamical system analysis workflows using multiple tools and complicates sharing of workflows within the scientific community.PyRates is a software tool for modeling and analyzing dynamical systems using a variety of programming languages. It provides a unified interface for defining complex, hierarchical models, either via simple YAML files or via a Python user interface.PyRates uses code generation to translate user-defined models into "backend" implementations in languages such as Python, Fortran, and Julia, providing access to a wide range of dynamical system analysis methods. We demonstrate the capabilities of PyRates in three use cases, showing how it can generate (i) NumPy code for numerical simulations via SciPy, (ii) Fortran code for bifurcation analysis and parameter continuations via PyCoBi, and (iii) PyTorch code for neural network optimization via RectiPy. Furthermore, we show that PyRates is well suited as a model definition interface for other dynamical systems tools. To this end, we introduce PyCoBi and RectiPy, two software packages that we developed as extensions of PyRates for specific dynamical systems modeling applications.