Utopia is a modeling framework that supports the entire workflow of computational scientists in the field of complex and evolving systems. It is designed to facilitate collaborative research and flexible model development while maintaining high individual freedom in implementation and analysis. Utopia includes a C++ library for model implementations and data writing and a Python frontend for simulation control, data analysis, and plotting. A basic set of models is distributed alongside the framework. Applications of Utopia span a wide range both in terms of the target audience and features relevant in each domain: For researchers, Utopia offers a rich toolkit for model implementation, data analysis, and generation of simulation data-up to and including large-scale simulations on distributed, high-performance computing hardware. In a teaching context, students can focus on the investigation of readily provided models using their own machines, e.g. by performing easily available sensitivity analysis. Furthermore, by developing new library functionality, collaborators can easily share new features and thus enhance Utopia's applicability for all users of the framework. This makes Utopia a valuable tool for both research in and teaching of complex and evolving systems. Utopia is available as Docker image from DockerHub 1 or can be compiled from source. Research of Complex Systems Many physical, environmental, and socio-cultural questions are studied in the field of complex and evolving systems (Holland, 2006; Levin, 2003). These systems feature a hierarchic, selforganized structure with non-linear interactions between their compartments and often exhibit emergent macroscopic properties. We call such systems "evolving" when the dimension and structure of their state space or the nature of their internal interactions can change under varying external forcings, in contrast to systems that merely traverse a static state space volume.