diff --git a/makefiles/main/tempdir/debug.mk b/makefiles/main/tempdir/debug.mk
new file mode 100644
index 0000000..2fb9148
--- /dev/null
+++ b/makefiles/main/tempdir/debug.mk
@@ -0,0 +1,38 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+ifdef DEBUG
+
+$(info  )
+$(warning ** IAM)
+$(info -----------------------------------------------------------------------)
+$(info ** lf-mk-tmp         = $(lf-mk-tmp))
+$(info ** lf-mk-tmp-name    = $(lf-mk-tmp-name))
+$(info ** lf-mk-tmp-create  = $(lf-mk-tmp-create))
+$(info  )
+$(info ** lf-mk-user-meta   = $(lf-mk-user-meta))
+$(info ** lf-mk-user-mktemp = $(lf-mk-user-mktemp))
+$(info ** lf-mk-meta-create = $(lf-mk-meta-create))
+$(info -----------------------------------------------------------------------)
+$(info  )
+
+endif # DEBUG
+
+# [EOF]
diff --git a/makefiles/main/tempdir/help.mk b/makefiles/main/tempdir/help.mk
new file mode 100644
index 0000000..f73f2b2
--- /dev/null
+++ b/makefiles/main/tempdir/help.mk
@@ -0,0 +1,65 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Display target help
+## -----------------------------------------------------------------------
+help ::
+	@printf '  %-33.33s %s\n' 'lf-tempdir(-help)' \
+	  'Create a temp directory for internal makefile use'
+
+## -----------------------------------------------------------------------
+## Intent: Display extended target help
+## -----------------------------------------------------------------------
+lf-tempdir-help:
+	@printf 'Usage: make [options] [target] ...\n'
+	@printf '  %-33.33s %s\n' 'lf-mk-tmp-create' \
+	  'Create a temporary directory (dependency driven)'
+	@printf '  %-33.33s %s\n' 'lf-mk-meta-create' \
+	  'Create a directory for tempdir timestamp tracking'
+	@printf '  %-33.33s %s\n' 'lf-mk-todo' \
+	  'Display a list of enhancements for the target'
+
+	@printf '\n[VARS]\n'
+	@printf '  %-33.33s %s\n' '  lf-mk-tmp=' \
+	  'Temp directory path'
+	@printf '  %-33.33s %s\n' '  lf-mk-tmp-name=' \
+	  'Temp directory basename'
+	@printf '  %-33.33s %s\n' '  lf-mk-user-meta=' \
+	  'Per-user timestamp and resource directory (internal)'
+	@printf '  %-33.33s %s\n' '  lf-mk-user-mktemp=' \
+	  'Per-user temp directory paths (one per invocation)'
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+# todo-all += lf-mk-todo
+lf-mk-todo ::
+
+	$(call banner-enter,$@)
+
+	@printf '\n[TODO]\n'
+	@printf '  * Replace lf/include.mk macro onf-mk-tmp= with lf-mk-tmp=\n'
+	@printf '  * Create a BATS unit test for tempdir creation\n'
+	@printf '  * Document makefile targets and behavior on docs.voltha.org\n'
+	@printf '\n'
+
+	$(call banner-leave,$@)
+
+# [EOF]
diff --git a/makefiles/main/tempdir/include.mk b/makefiles/main/tempdir/include.mk
new file mode 100644
index 0000000..5de3cde
--- /dev/null
+++ b/makefiles/main/tempdir/include.mk
@@ -0,0 +1,30 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-FileCopyrightText: 2022-2024 Open Networking Foundation (ONF) Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+include $(onf-mk-dir)/main/tempdir/debug.mk
+include $(onf-mk-dir)/main/tempdir/help.mk
+include $(onf-mk-dir)/main/tempdir/tempdir.mk
+include $(onf-mk-dir)/main/tempdir/todo.mk
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/main/tempdir/tempdir.mk b/makefiles/main/tempdir/tempdir.mk
new file mode 100644
index 0000000..f854139
--- /dev/null
+++ b/makefiles/main/tempdir/tempdir.mk
@@ -0,0 +1,99 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 Open Networking Foundation (ONF) Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent: This makefile is intended for extremely limited use:
+#   o A temp directory is created for internal makefile use.
+#   o Installers, downloads, etc.
+#   o Allowing garbage to persist in /tmp is not desirable behavior.
+#   o Create breadcrumbs for the sterile target to find and remove later.
+# -----------------------------------------------------------------------
+
+##-------------------##
+##---]  GLOBALS  [---##
+##-------------------##
+lf-mk-tmp      := $(shell mktemp --directory -t 'repo-LF-make.XXXXXXXXXX')
+lf-mk-tmp-name := $(notdir $(lf-mk-tmp))
+
+lf-mk-user-meta   ?= $(dir $(lf-mk-tmp)/)$(USER).mk.meta
+lf-mk-user-mktemp ?= $(lf-mk-user-meta)/mktemp
+
+lf-mk-tmp-create  := $(lf-mk-tmp)/.exists
+lf-mk-meta-create := $(lf-mk-user-mktemp)/$(lf-mk-tmp-name)
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+.PHONY: lf-tempdir
+lf-tempdir : lf-mk-meta-create
+
+## -----------------------------------------------------------------------
+## Intent: Create tempdir
+##   o Create a temp directory
+##   o Create a timestamp file to record time of creation
+## -----------------------------------------------------------------------
+.PHONY: lf-mk-tmp-create
+lf-mk-tmp-create : $(lf-mk-tmp-create)
+$(lf-mk-tmp-create) :
+
+	$(if $(DEBUG),$(call banner-enter,$@))
+	@mkdir -p $(dir $@)
+	@touch $@
+	$(if $(DEBUG),$(call banner-leave,$@))
+
+## -----------------------------------------------------------------------
+## Intent: Create a timestamp file for temp directory cleanup:
+##   o Create a storage directory
+##   o Record timestamp file used by temp directory creation
+## -----------------------------------------------------------------------
+.PHONY: lf-mk-meta-create
+lf-mk-meta-create : lf-mk-tmp-create $(lf-mk-meta-create)
+$(lf-mk-meta-create) :
+
+	$(if $(DEBUG),$(call banner-enter,$@))
+	@mkdir -p $(dir $@)
+	@printf "$(lf-mk-tmp-create)" >> "$(lf-mk-user-mktemp)/$(lf-mk-tmp-name)"
+	$(if $(DEBUG),$(call banner-leave,$@))
+
+## -----------------------------------------------------------------------
+## Intent: Remove temp directories created by a makefile run.
+##   o Automated directory cleanup is not easily supported by make.
+##   o Use breadcrumbs dropped during tempdir creation for removal.
+##   o Only consider subdirs older than the current makefile run.
+##   o Only consider subdirs older than +n days (persistent cron jobs).
+## -----------------------------------------------------------------------
+sterile-timestamp = $(shell date '+%Y-%m-%d' -d '3 days ago')
+sterile ::
+
+    # Create a reference file to remove lingering stale directories
+	$(HELP)touch --date "$(sterile-timestamp)" "$(lf-mk-tmp-create)-stale"
+
+	$(HIDE)find '$(dir $(lf-mk-tmp))' -maxdepth 1 -name 'repo-LF-make*' -type d -print0 \
+	   | $(xargs-cmd0) -I'{}' find {} -name '.exists' -not -newer "$(lf-mk-tmp-create)-stale" -print0 \
+	   | $(xargs-n1-clean) dirname --zero \
+	   | $(xargs-n1-clean) $(RM) -vr
+
+    # Remove late: target dep (sterile : clean) would remove breadcrumbs
+	@$(MAKE) --no-print-directory clean
+
+## -----------------------------------------------------------------------
+## Intent : Remove mktemp for the current invocation
+## -----------------------------------------------------------------------
+clean ::
+	$(RM) -r "$(lf-mk-tmp)"
+
+# [EOF]
diff --git a/makefiles/main/tempdir/todo.mk b/makefiles/main/tempdir/todo.mk
new file mode 100644
index 0000000..3880c7a
--- /dev/null
+++ b/makefiles/main/tempdir/todo.mk
@@ -0,0 +1,40 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Display a list of future enhancements
+## -----------------------------------------------------------------------
+lf-mk-todo ::
+
+	$(call banner-enter,$@)
+
+	@printf '\n[TODO]\n'
+	@printf '  * Replace lf/include.mk macro onf-mk-tmp= with lf-mk-tmp=\n'
+	@printf '  * Create a BATS unit test for tempdir creation\n'
+	@printf '    + make lf-tempdir; ls /tmp/repo-LF*\n'
+	@printf '    + make lf-tempdir clean; ls /tmp/repo-LF*\n'
+	@printf '  * Document makefile targets and behavior on docs.voltha.org\n'
+	@printf '\n'
+
+	$(call banner-leave,$@)
+
+todo :: lf-mk-todo
+
+# [EOF]
