A lightweight Streamlit-based interface for running and exploring GenX.jl capacity expansion models.
https://github.com/apanchula/GENXUI
Overview
GENXUI is designed to make GenX.jl easier to use by removing the need to manually edit or inspect CSV files. It provides a simple browser interface to launch Julia runs, manage case inputs, and view results in a simple workflow.
Runner page for selecting a GenX case, launching Julia, and streaming terminal output live.
Input browser for resources, system, policies, and settings files with inline editing and save support.
Interactive results dashboard with LCOE tables, capacity charts, supply-to-load mix, cost breakdowns, and storage metrics.
Reads GenX output CSVs directly so results can be inspected without rerunning Julia.
Julia ≥ 1.9 installed and available on your system PATH.
GenX.jl repository placed alongside the GENXUI folder, not inside it.
Python ≥ 3.10 installed.
Python dependencies installed from requirements.txt.
From the GENXUI directory, start the interface with Streamlit:
python -m streamlit run app.py
Then open http://localhost:8501 in your browser.
Each GenX case should follow the standard GenX input structure and include:
Run.jl
resources/ files such as Thermal.csv, Vre.csv, Storage.csv, and Vre_stor.csv
system/ files such as Demand_data.csv, Generators_variability.csv, and Fuels_data.csv
policies/
settings/genx_settings.yml
After a successful run, GENXUI reads output from the GenX case results directory and displays:
LCOE per resource, including annual cost, generation, supply-to-load mix, and curtailment.
Capacity built in MW and MWh by resource.
Supply-to-load mix visualization.
Cost breakdown by investment, fixed O&M, variable O&M, fuel, and startup costs.
Storage metrics including power, energy, and duration.
GENXUI mostly solved my problem, but maybe not yours.
One case at a time — no side-by-side case comparison.
Multi-zone / transmission runs are supported for viewing and analysis; the network-flow attribution in Supply to Load Mix is a documented approximation (local generation assumed to serve local load first).
No multi-stage (MultiStage) investment support.
Julia startup latency (~30–90 s) before the first solver output appears.