We describe a software package called VPLanet that simulates fundamental aspects of planetary system evolution over Gyr timescales, with a focus on investigating habitable worlds. In this first version, eleven physics modules are included that model internal, atmospheric, rotational, orbital, stellar, and galactic processes. Many of these modules can be coupled to simultaneously simulate the evolution of terrestrial planets, gaseous planets, and stars. The code is validated by reproducing a selection of observations and past results. VPLanet is written in C and designed so that the user can choose the physics modules to apply to an individual object at runtime without recompiling, i.e., a single executable can simulate the diverse phenomena that are relevant to a wide range of planetary and stellar systems. This feature is enabled by matrices and vectors of function pointers that are dynamically allocated and populated based on user input. The speed and modularity of VPLanet enables large parameter sweeps and the versatility to add/remove physical phenomena to asses their importance.