diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..0c9a7cd094c07fcad6550c96e17931883bb6254c
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,89 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+
+## [v0.5.0] - unreleased
+
+### Added
+
+- `SimulationModel` struct
+
+- large logo and model structure diagram
+
+- Changelog
+
+### Changed
+
+- `SimulationModel` replaces `AgentBasedModel`
+
+### Deprecated
+
+### Removed
+
+- Agents.jl dependency (including `AgentBasedModel` and functions for adding/moving/removing agents)
+
+### Fixed
+
+
+## [v0.4.1] - 2023-11-14
+
+*Wrote tests for skylark migration -> made graphics output format configurable*
+
+### Added
+
+- initial version of the Skylark species
+
+- small Jena map
+
+- animal individuals keep track of their parents' IDs
+
+- several new functions and macros for animals
+
+- installation instructions for Windows
+
+### Changed
+
+- graphics output is more configurable
+
+
+## [v0.4.0] - 2023-10-28
+
+*Refactored makieplots.jl -> Wrote tests for skylark migration*
+
+
+### Added
+
+- initialisation functions for individuals (not just species)
+
+- migration function / migrant pool for animals that disappear from the landscape during winter
+
+- skylark migration
+
+### Changed
+
+- online documentation was expanded and restructured
+
+- nature macros moved to a separate file
+
+
+*Started changelog at this point, earlier versions are not included.*
+
+<!-- Template
+
+## [Unreleased]
+
+### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+-->