diff --git a/pyproject.toml b/pyproject.toml
index 7585594..1d62cdf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "owloop"
-version = "0.4.0"
+version = "0.5.0"
description = "Your code evolves while you sleep. 🦉 Spec-driven autonomous coding loop."
readme = "README.md"
license = "MIT"
diff --git a/site/index.html b/site/index.html
index 7f08aeb..169d3c3 100644
--- a/site/index.html
+++ b/site/index.html
@@ -186,7 +186,7 @@
From goal to commits, unattended.
- owloop v0.4.0
+ owloop v0.5.0
model: claude-sonnet-5
budget: 200k tokens
diff --git a/src/owloop/__init__.py b/src/owloop/__init__.py
index 91e46ea..cb37922 100644
--- a/src/owloop/__init__.py
+++ b/src/owloop/__init__.py
@@ -1,3 +1,9 @@
"""owloop — Your code evolves while you sleep. 🦉"""
-__version__ = "0.2.0"
+from importlib.metadata import PackageNotFoundError
+from importlib.metadata import version as _pkg_version
+
+try:
+ __version__ = _pkg_version("owloop")
+except PackageNotFoundError: # pragma: no cover - editable/source runs without install metadata
+ __version__ = "0.0.0-dev"
diff --git a/uv.lock b/uv.lock
index d27af61..43e8873 100644
--- a/uv.lock
+++ b/uv.lock
@@ -370,7 +370,7 @@ wheels = [
[[package]]
name = "owloop"
-version = "0.4.0"
+version = "0.5.0"
source = { editable = "." }
dependencies = [
{ name = "click" },