Installation¶
TEMPO runs as a desktop application on Windows. The frontend can also be served as a web application in development mode.
Prerequisites¶
Required for the application¶
- Windows 10 or 11 (x64) — the desktop installer targets this platform.
- Python 3.9 or newer — required to run the Calliope optimizer. Anaconda or Miniconda is recommended.
- Calliope — the energy system modelling framework. The application auto-detects your conda environment.
Required for development¶
- Node.js ≥ 16
- Go ≥ 1.22
- Git
Desktop Installation (Windows)¶
1. Install Calliope¶
If you do not already have Calliope installed, create a dedicated conda environment:
Solver
Calliope uses GLPK by default, which is bundled with its Python package. For larger models, consider installing Gurobi or CPLEX and configuring Calliope to use them.
2. Download and run the installer¶
- Go to the Releases page on GitHub.
- Download the latest
Calliope-Visualizator-Setup-x.x.x.exe. - Run the installer. You can choose the installation directory and whether to create desktop and start menu shortcuts.
- Launch TEMPO.
3. First launch — environment setup¶
On first launch the Setup Screen appears. The application searches for a conda executable automatically in common installation paths. If it finds one it lists the available environments.
- Select the environment that has Calliope installed (e.g.
calliope). - Click Confirm. The application stores this choice and will use it for all future solver runs.
If conda is not detected automatically, click Set manually and browse to your conda.exe (typically at %UserProfile%\Anaconda3\Scripts\conda.exe or %UserProfile%\miniconda3\Scripts\conda.exe).
Development Mode¶
Clone and install dependencies¶
Start the Go backend¶
The backend starts on port 8082. Leave this terminal running. If port 8082 is already in use, find and kill the old process:
Start the frontend¶
The application opens at http://localhost:5173.
Run with Electron (dev mode)¶
To run both Vite and Electron together:
OSM Processing environment (.venv-calliope)¶
The Download GIS Data feature and the OSM processing CLI scripts run inside a dedicated Python virtual environment at .venv-calliope/ in the project root. The Go backend always uses this venv automatically.
Set it up once:
# Create the venv
python -m venv .venv-calliope
# Activate it
.\.venv-calliope\Scripts\Activate.ps1
# Install Calliope + OSM processing dependencies
pip install calliope
pip install -r osm_processing/requirements.txt
You can also use the provided setup script:
GeoServer & PostGIS (for map data)¶
The OSM infrastructure map layers are served from a local GeoServer instance backed by PostGIS. Both run in Docker:
# Pull and configure containers (run once)
cd scripts
.\setup_geoserver_docker.ps1
# Start containers for a session
docker start calliope-postgis calliope-geoserver
GeoServer web UI: http://localhost:8080/geoserver (admin / geoserver)
The Go backend connects to GeoServer on port 8081 (configured in backend-go/config.yaml).
Once the stack is running, use the Download GIS Data panel in the Creation view to load any country or region — no terminal required.
Verifying the installation¶
Open the application and check the status indicator in the Settings screen:
- Backend: shows the Go backend connection status (green = connected on port 8082).
- Python: shows the detected conda/Python executable path.
- Calliope: shows whether
import calliopesucceeds in the selected environment.
Uninstalling¶
Use Add or remove programs in Windows settings and search for TEMPO. The uninstaller removes the application files. Your model database (%AppData%\TEMPO\calliope.db) is preserved and must be deleted manually if you want a clean removal.