Docker
A ready-to-use SimStadt CLI image is published at simstadt/simstadt:cli. It bundles Java, INSEL, simstadtpy (installed from PyPI) with a complete SimStadt install.
It should allow to run any workflow, automatically and without GUI.
Usage
Health check: shows the bundled SimStadt version
docker run --rm simstadt/simstadt
# simstadt - Python library for SimStadt workflows.
# See https://simstadt.hft-stuttgart.de/ for SimStadt documentation.
# simstadt --help for usage information.
# SimStadt folder : /home/simstadt/Desktop/SimStadt2_0.14.0-SNAPSHOT_master_20260914_fe4fa3c
# SimStadt version: 0.14.0-SNAPSHOT (branch: master, rev: fe4fa3c, date: 2026-09-14)
Display Help
docker run --rm simstadt/simstadt simstadt --help
# usage: simstadt [-h] [--gui] [--csv-export] [--install] [-d DESCRIPTION]
# [--destination DESTINATION] [-p PROJECT_PATH] [-f] [-s PATH]
# [-v] [-V]
# [template] [citygml]
# simstadt - Python library for SimStadt workflows.
# positional arguments:
# template Template name (from SIMSTADT_TEMPLATE_PATH), path to a
# .flow directory, or a bundled template name.
# citygml Path to the CityGML input file.
# options:
# -h, --help show this help message and exit
# --gui Launch the SimStadt GUI.
# --csv-export Export CSV from workflowsteps, when available.
# --install Download and install the latest SimStadt release to
# ~/Desktop.
# -d DESCRIPTION, --description DESCRIPTION
# Human-readable label for the result.
# --destination DESTINATION
# Workflow folder name (default: timestamped random id).
# -p PROJECT_PATH, --project-path PROJECT_PATH
# Directory where the workflow folder is created.
# -f, --files Show output files after the run.
# -s PATH, --save PATH Save result DataFrame to a file (.csv or .json).
# -v, --verbose Enable debug logging.
# -V, --version Print the simstadtpy and SimStadt versions, then exit.
Run a workflow against a mounted CityGML file
mkdir -p data
cp path/to/city.gml data/city.gml
docker run --rm -v "$(pwd)/data:/data" simstadt/simstadt \
simstadt HeatDemand /data/city.gml \
--project-path /data/output \
--files
# HeatDemand for city.gml
# Number of buildings : 6
# Number of heated buildings : 3
# Specific Heating demand : 128 kWh / (m² · a)
# Heated area : 1265 m²
# Footprint area : 473 m²
# Yearly Heating demand : 143229 kWh / a
# Total Yearly Heating + DHW demand : 162206 kWh / a
# Mean Uvalue : 1.3 W / (m² · K)
# Year of construction : 1959
# Storey number : 3
# Output files:
# /data/output.proj/20260921_1501_16pq_HeatDemand.flow/02_WeatherProcessor.step/hourly_GHI_DHI_Ta_pvgis_SARAH3_2005_2023_N48_8__E9_2.prn
# /data/output.proj/20260921_1501_16pq_HeatDemand.flow/05_MonthlyEnergyBalance.step/city_DIN18599_HEATING.csv
# /data/output.proj/20260921_1501_16pq_HeatDemand.flow/05_MonthlyEnergyBalance.step/city_DIN18599_HEATING.log
The Dockerfile is hosted along simstadtpy.
Compose
Bring your own templates by keeping them alongside your data and pointing SIMSTADT_TEMPLATE_PATH
at them — a single mount. A complete, runnable example (with sample CityGML data and a template)
is in examples/.
services:
simstadt:
image: simstadt/simstadt:cli
volumes:
- ./data:/data
environment:
SIMSTADT_TEMPLATE_PATH: /data/templates
LOCALE: en_GB # optional, will set decimal separator to "."
MAX_RAM: 2g # optional. Default is 4GB, increase if needed
cd examples
docker compose run --rm simstadt simstadt \
MyTemplate /data/city.gml \
--project-path /data/output \
--save /data/my_simulation.csv \
--verbose