diff --git a/makefiles/main/include.mk b/makefiles/main/include.mk
new file mode 100644
index 0000000..5030758
--- /dev/null
+++ b/makefiles/main/include.mk
@@ -0,0 +1,33 @@
+# -*- 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
+# -----------------------------------------------------------------------
+
+ifndef lf-mk-seen--main # guard macro, include once
+
+  $(if $(DEBUG),$(warning ENTER))
+
+#   include $(onf-mk-dir)/main/tempdir.mk
+  include $(onf-mk-dir)/main/tempdir/include.mk
+  lf-mk-seen--main := true
+
+  $(if $(DEBUG),$(warning LEAVE))
+
+endif # lf-mk-seen--main
+
+# [EOF]
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]
