CRAFTY is an open-source, agent-based modelling framework for simulating land-use change (project site).
This repository follows a multi-module Maven layout, separating the headless simulation engine (crafty-core) from the JavaFX desktop interface (crafty-gui). This supports both large batch/HPC experiments and interactive exploration via the GUI.
- Best if you just want to use the interface without touching Java/Maven.
- Windows-only (for now).
- Download: Crafty-gui.exe.
- Best if you want a portable run (Windows/Linux/macOS) and you have a JDK installed.
- You can run:
- Headless jar (batch / server / HPC)
- Download: https: crafty-core-v2...jar.
- Best for core development, debugging, and unit tests.
- Run the headless entry point from
crafty-corewith a YAML config.
- Best for GUI development and debugging.
- Requires JavaFX libraries/module path (depending on your setup).
If you’re new: start with Option A (Windows
.exe) or Option B (GUI.jar).
- User Guide (task-oriented):
docs/user-guide/ - Reference Manual (inputs, config, components):
docs/reference/ - Examples:
examples/(example configs, minimal scenarios, etc.)
Suggested starting point:
docs/user-guide/01-quickstart.md.
- Project Structure
- Prerequisites
- Build
- Run without an IDE
- Run from an IDE
- Configuration Basics (YAML)
- Data / Scenario Structure
- Outputs
- Contributing
CraftyProject/ (parent Maven project)
├── crafty-core/ (headless simulation engine)
│ └── target/
│ └── crafty-core-*-headless-*.jar (fat JAR, CLI entry-point)
├── crafty-gui/ (JavaFX desktop interface)
│ └── target/
│ └── crafty-gui-*.jar
├── docs/ (User Guide + Reference Manual)
└── pom.xml (parent POM)
| Tool | Version | When you need it |
|---|---|---|
| Windows installer (.exe) | — | No extra tools needed (Option A) |
| JDK | ≥ 17 | Required for running .jar (Option B) and for development (Options C/D) |
| Apache Maven | ≥ 3.9 | Required to build from source (Options C/D, or if you build your own jars) |
| (Optional) Eclipse / IntelliJ | — | For running from an IDE (Options C/D) |
If you are building from source:
git clone <REPO_URL>
cd CraftyProject
mvn clean installArtifacts (typical):
crafty-core/target/…headless….jarcrafty-gui/target/…gui….jar
- Download the installer: https://nextcloud.imk-ifu.kit.edu/s/Exy7Q58gd6g5icZ
- Install and launch CRAFTY from the Start Menu.
- In the GUI, select your data using Open Projects From File Systeme. > see (#data--scenario-structure)
You need JDK 17+ installed.
java -jar crafty-gui-<version>.jarjava -jar "$CRAFTY_JAR.jar" -c "$CONFIG.yaml" -o "$OUT_DIR"- Import the parent Maven project.
- Create a Run Configuration in the
crafty-coremodule:- Main class:
de.cesr.crafty.core.main.MainHeadless - Program args:
--config-file "/path/to/config.yaml"
- Main class:
- Run / debug.
- Import the parent Maven project.
- Create a Run Configuration in the
crafty-guimodule:- Main class: main.FxMain
- If your IDE setup requires it, add JavaFX VM args, e.g.:
--module-path "<path-to-javafx-sdk>/lib" --add-modules javafx.controls,javafx.fxml - Run / debug.
At minimum, a config needs a project directory and a scenario:
project_path: "/path/to/CRAFTY_DATA/CRAFTY-EU-1km_upscaled"
scenario: "ssp126"Most runs then extend this with:
- Mechanisms / switches (regionalization, neighbour effects, mutation, seeding, etc.)
- Competitiveness / abandonment settings
- Output controls (CSV/maps/plots + frequency)
See:
docs/user-guide/02-running-scenarios.mddocs/reference/03-config-reference.md
CRAFTY expects a project data directory containing:
- Metadata tables (services, AFTs, capitals, scenarios)
- World / scenario inputs (baseline map, capitals time series, demands, optional masks, optional shocks, …)
By default, many inputs are discovered from the scenario folder structure.
You can override most of them explicitly in YAML (e.g., baseline path, capitals directory, service demand paths, weight/tax files, mask folders, degradation directory, …).
See:
docs/reference/02-data-model.mddocs/appendices/default-scenario-layout.mddocs/appendices/file-formats.md
When enabled, CRAFTY writes:
- Global (world/total) CSV time series (AFT composition, service demand/supply, equilibrium summaries, …)
- Optional region-level outputs (one subfolder per region)
- Optional cell-level map snapshots (CSV + PNG) controlled by map output settings
- Optional diagnostics (e.g., supply composition tracking)
See:
docs/user-guide/04-outputs.mddocs/reference/04-components/outputs.md
- Contributions are welcome via PRs (tests + docs updates encouraged).
- License: see
LICENSE.