diff --git a/llm/llama_darwin.go b/llm/llama_darwin.go
index 19e7b9e1..f934edd2 100644
--- a/llm/llama_darwin.go
+++ b/llm/llama_darwin.go
@@ -39,6 +39,7 @@ func initBackend() error {
 		if err != nil {
 			return err
 		}
+		defer actual.Close()
 
 		actualSum := sha256.New()
 		if _, err := io.Copy(actualSum, actual); err != nil {
diff --git a/llm/llm.go b/llm/llm.go
index 3621c8b2..edc1107d 100644
--- a/llm/llm.go
+++ b/llm/llm.go
@@ -28,6 +28,7 @@ func New(model string, adapters []string, opts api.Options) (LLM, error) {
 	if err != nil {
 		return nil, err
 	}
+	defer f.Close()
 
 	ggml, err := DecodeGGML(f, ModelFamilyLlama)
 	if err != nil {
diff --git a/server/images.go b/server/images.go
index 2177fe6d..e7ef50da 100644
--- a/server/images.go
+++ b/server/images.go
@@ -1117,6 +1117,7 @@ func uploadBlobChunked(ctx context.Context, mp ModelPath, url string, layer *Lay
 	if err != nil {
 		return err
 	}
+	defer f.Close()
 
 	totalUploaded := 0