diff --git a/apps/reload/Dockerfile b/apps/reload/Dockerfile
new file mode 100644
index 0000000..1f2e54c
--- /dev/null
+++ b/apps/reload/Dockerfile
@@ -0,0 +1,7 @@
+# FROM gcr.io/distroless/static:nonroot
+# TODO(gio): remove busybox
+FROM busybox:latest
+
+ARG TARGETARCH
+
+COPY reload_${TARGETARCH} /usr/bin/reload
diff --git a/apps/reload/Makefile b/apps/reload/Makefile
new file mode 100644
index 0000000..aeba9ff
--- /dev/null
+++ b/apps/reload/Makefile
@@ -0,0 +1,35 @@
+repo_name ?= giolekva
+podman ?= docker
+docker_flags=--provenance=false --sbom=false
+ifeq ($(podman), podman)
+manifest_dest=docker://docker.io/$(repo_name)/reload:latest
+endif
+
+clean:
+	rm -f reload
+
+build_arm64: export CGO_ENABLED=0
+build_arm64: export GO111MODULE=on
+build_arm64: export GOOS=linux
+build_arm64: export GOARCH=arm64
+build_arm64:
+	go build -o reload_arm64 *.go
+
+build_amd64: export CGO_ENABLED=0
+build_amd64: export GO111MODULE=on
+build_amd64: export GOOS=linux
+build_amd64: export GOARCH=amd64
+build_amd64:
+	go build -o reload_amd64 *.go
+
+push_arm64: clean build_arm64
+	$(podman) build --platform linux/arm64 --tag=$(repo_name)/reload:arm64 $(docker_flags) .
+	$(podman) push $(repo_name)/reload:arm64
+
+push_amd64: clean build_amd64
+	$(podman) build --platform linux/amd64 --tag=$(repo_name)/reload:amd64 $(docker_flags) .
+	$(podman) push $(repo_name)/reload:amd64
+
+push: push_arm64 push_amd64
+	$(podman) manifest create $(repo_name)/reload:latest $(repo_name)/reload:arm64 $(repo_name)/reload:amd64
+	$(podman) manifest push --purge $(repo_name)/reload:latest $(manifest_dest)
diff --git a/apps/reload/go.mod b/apps/reload/go.mod
new file mode 100644
index 0000000..a45c664
--- /dev/null
+++ b/apps/reload/go.mod
@@ -0,0 +1,3 @@
+module github.com/giolekva/pcloud/apps/reload
+
+go 1.23.1
diff --git a/apps/reload/main.go b/apps/reload/main.go
new file mode 100644
index 0000000..a06d16f
--- /dev/null
+++ b/apps/reload/main.go
@@ -0,0 +1,68 @@
+package main
+
+import (
+	"crypto/sha256"
+	"flag"
+	"fmt"
+	"io"
+	"os"
+	"syscall"
+	"time"
+)
+
+var watch = flag.String("watch", "", "Path to watch")
+var reload = flag.String("reload", "", "Path to PID file")
+
+func check(err error) {
+	if err != nil {
+		panic(err)
+	}
+}
+
+func main() {
+	flag.Parse()
+	var prev string
+	for {
+		cur := func() string {
+			inp, err := os.Open(*watch)
+			check(err)
+			defer inp.Close()
+			h := sha256.New()
+			_, err = io.Copy(h, inp)
+			check(err)
+			return string(h.Sum(nil))
+		}()
+		if prev == "" {
+			prev = cur
+			continue
+		}
+		if prev != cur {
+			prev = cur
+			fmt.Println("changed")
+			pid := func() int {
+				inp, err := os.Open(*reload)
+				// TODO(gio): check error type
+				if err != nil {
+					return -1
+				}
+				defer inp.Close()
+				var ret int
+				_, err = fmt.Fscanf(inp, "%d", &ret)
+				check(err)
+				return ret
+			}()
+			if pid != -1 {
+				p, err := os.FindProcess(pid)
+				check(err)
+				fmt.Println("found process")
+				fmt.Println("%+v\n", p)
+				// TODO(gio): take signal value from flags
+				check(p.Signal(syscall.SIGKILL))
+				fmt.Println("sent signall")
+			}
+		} else {
+			fmt.Println("no change")
+		}
+		time.Sleep(5 * time.Second)
+	}
+}
