diff --git a/meta/classes-recipe/vendor_go.bbclass b/meta/classes-recipe/vendor_go.bbclass
new file mode 100644
index 0000000000..dc5f8d1d8d
--- /dev/null
+++ b/meta/classes-recipe/vendor_go.bbclass
@@ -0,0 +1,59 @@
+# Copyright (C) 2025 Weidmueller Interface GmbH & Co. KG
+# Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+#
+# SPDX-License-Identifier: MIT
+#
+
+# The directory of the go.mod file relative to the root directory, per default
+# assume there's a file directly in the root directory
+GO_SRC_DIR ?= ""
+
+# The path to the go.mod file
+GO_MANIFEST_DIR ?= "${GO_SRC_PATH}/go.mod"
+
+# The path to go.sum file
+GO_LOCK_DIR ?= "${@os.path.join(os.path.dirname(d.getVar('GO_MANIFEST_DIR')), 'go.sum')}"
+
+# The URL of the go proxy
+GO_PROXY ?= "https://proxy.golang.org"
+
+GO_SRC_PATH = "${S}/${GO_SRC_DIR}"
+GO_SRC_SUBDIR = "${@os.path.relpath(d.getVar('CARGO_SRC_PATH'), d.getVar('WORKDIR'))}"
+GO_SRC_URI_FILE = "${VENDOR_DIR}/go-source-uris.txt"
+SRC_URI_FILES:append = " ${GO_SRC_URI_FILE}"
+
+inherit go-mod vendor
+
+GO_INSTALL_PREFIX = "."
+GO_SRC_PATH = "${S}"
+GO_SRCURI_DESTSUFFIX = ""
+
+GOMODCACHE = "invalid"
+GO_MOD_CACHE_DIR = "go/pkg/mod"
+GO_WORKPATH = "${GO_SRC_PATH}"
+GO_MOD_RECRDEPTASK = ""
+
+GOBUILDFLAGS:append = " -mod=vendor"
+
+python vendor_go_do_vendor_resolve() {
+    import oe.vendor
+    import oe.vendor.go
+
+    lock_file_dir = d.getVar("GO_LOCK_DIR")
+    lock_file_subdir = get_early_source_dir(d, lock_file_dir)
+    proxy = d.getVar("GO_PROXY")
+    cache_subdir = d.getVar("GO_MOD_CACHE_DIR")
+    src_uris = oe.vendor.go.resolve_src_uris(lock_file_subdir, proxy, cache_subdir)
+    with open(d.getVar("GO_SRC_URI_FILE"), "w") as f:
+        oe.vendor.dump(f, src_uris)
+}
+
+run_go_mod_vendor() {
+    cd ${GO_SRC_PATH}
+    export GOMODCACHE="${UNPACKDIR}/${GO_MOD_CACHE_DIR}"
+    ${GO} mod vendor
+}
+do_unpack[postfuncs] += "run_go_mod_vendor"
+do_unpack[depends] += "${@oe.utils.build_depends_string(d.getVar('DEPENDS_GOLANG'), 'do_populate_sysroot')}"
+
+EXPORT_FUNCTIONS do_vendor_resolve
