diff --git a/lib/toaster/bldcontrol/localhostbecontroller.py b/lib/toaster/bldcontrol/localhostbecontroller.py
index 37b0a7519..dafda7e16 100644
--- a/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -40,7 +40,8 @@ class LocalhostBEController(BuildEnvironmentController):
 
     def __init__(self, be):
         super(LocalhostBEController, self).__init__(be)
-        self.pokydirname = None
+        self.bitbake_dirname = None
+        self.oecore_dirname = None
         self.islayerset = False
 
     def _shellcmd(self, command, cwd=None, nowait=False,env=None):
@@ -100,7 +101,7 @@ class LocalhostBEController(BuildEnvironmentController):
         # 1. get a list of repos with branches, and map dirpaths for each layer
         gitrepos = {}
 
-        # if we're using a remotely fetched version of bitbake add its git
+        # We are using a remotely fetched version of bitbake - add its git
         # details to the list of repos to clone
         if bitbake.giturl and bitbake.commit:
             gitrepos[(bitbake.giturl, bitbake.commit)] = []
@@ -154,12 +155,20 @@ class LocalhostBEController(BuildEnvironmentController):
         clone_total=len(gitrepos.keys())
         self.setCloneStatus(bitbake,'Started',clone_total,clone_count,'')
         for giturl, commit in gitrepos.keys():
-            self.setCloneStatus(bitbake,'progress',clone_total,clone_count,gitrepos[(giturl, commit)][0][0])
+            layer_name = gitrepos[(giturl, commit)][0][0]
+            self.setCloneStatus(bitbake,'progress',clone_total,clone_count,layer_name)
             clone_count += 1
 
             localdirname = os.path.join(self.be.sourcedir, self.getGitCloneDirectory(giturl, commit))
             logger.debug("localhostbecontroller: giturl %s:%s checking out in current directory %s" % (giturl, commit, localdirname))
 
+            # Capture local paths to release's bitbake and openembedded-core layers
+            if 'bitbake' == layer_name:
+                self.bitbake_dirname = localdirname
+            # Capture local path to release's openembedded-core layer (for 'oe-init-build-env')
+            if 'openembedded-core' == layer_name:
+                self.oecore_dirname = localdirname
+
             # see if our directory is a git repository
             if os.path.exists(localdirname):
                 try:
@@ -192,16 +201,6 @@ class LocalhostBEController(BuildEnvironmentController):
                 # prevent inserted debugging commands from being lost
                 self._shellcmd('git fetch && git reset --hard "%s"' % ref, localdirname,env=git_env)
 
-            # take the localdirname as poky dir if we can find the oe-init-build-env
-            if self.pokydirname is None and os.path.exists(os.path.join(localdirname, "oe-init-build-env")):
-                logger.debug("localhostbecontroller: selected poky dir name %s" % localdirname)
-                self.pokydirname = localdirname
-
-                # make sure we have a working bitbake
-                if not os.path.exists(os.path.join(self.pokydirname, 'bitbake')):
-                    logger.debug("localhostbecontroller: checking bitbake into the poky dirname %s " % self.pokydirname)
-                    self._shellcmd("git clone -b \"%s\" \"%s\" \"%s\" " % (bitbake.commit, bitbake.giturl, os.path.join(self.pokydirname, 'bitbake')),env=git_env)
-
             # verify our repositories
             for name, dirpath, index in gitrepos[(giturl, commit)]:
                 localdirpath = os.path.join(localdirname, dirpath)
@@ -215,21 +214,11 @@ class LocalhostBEController(BuildEnvironmentController):
         self.setCloneStatus(bitbake,'complete',clone_total,clone_count,'')
         logger.debug("localhostbecontroller: current layer list %s " % pformat(layerlist))
 
-        # Resolve self.pokydirname if not resolved yet, consider the scenario
-        # where all layers are local, that's the else clause
-        if self.pokydirname is None:
-            if os.path.exists(os.path.join(self.be.sourcedir, "oe-init-build-env")):
-                logger.debug("localhostbecontroller: selected poky dir name %s" % self.be.sourcedir)
-                self.pokydirname = self.be.sourcedir
-            else:
-                # Alternatively, scan local layers for relative "oe-init-build-env" location
-                for layer in layers:
-                    if os.path.exists(os.path.join(layer.layer_version.layer.local_source_dir,"..","oe-init-build-env")):
-                        logger.debug("localhostbecontroller, setting pokydirname to %s" % (layer.layer_version.layer.local_source_dir))
-                        self.pokydirname = os.path.join(layer.layer_version.layer.local_source_dir,"..")
-                        break
-                else:
-                    logger.error("pokydirname is not set, you will run into trouble!")
+        # If self.bitbake_dirname still missing (e.g. 'local' build), use local bitbake
+        if not self.bitbake_dirname:
+            self.bitbake_dirname = os.environ.get('BBBASEDIR','')
+        if not self.bitbake_dirname:
+            logger.error("bitbake_dirname is not set, you will run into trouble!")
 
         # 5. create custom layer and add custom recipes to it
         for target in targets:
@@ -352,8 +341,11 @@ class LocalhostBEController(BuildEnvironmentController):
         try:
             # insure that the project init/build uses the selected bitbake, and not Toaster's
             del git_env['TEMPLATECONF']
-            del git_env['BBBASEDIR']
             del git_env['BUILDDIR']
+            # Insure that oe-init finds the right bitbake (e.g. 'oe-buildenv-internal')
+            git_env['BBBASEDIR'] = self.bitbake_dirname
+            git_env['BITBAKEDIR'] = self.bitbake_dirname
+
         except KeyError:
             pass
 
@@ -362,7 +354,7 @@ class LocalhostBEController(BuildEnvironmentController):
             builddir = bitbake.req.project.builddir
         else:
             builddir = '%s-toaster-%d' % (self.be.builddir, bitbake.req.project.id)
-        oe_init = os.path.join(self.pokydirname, 'oe-init-build-env')
+        oe_init = os.path.join(self.oecore_dirname, 'oe-init-build-env')
         setup_init = os.path.join(builddir, 'init-build-env')
         # init build environment and build directory structure
         try:
@@ -376,7 +368,7 @@ class LocalhostBEController(BuildEnvironmentController):
                 os.makedirs(builddir, exist_ok = True)
                 build_init_script = os.path.join(builddir,'init-build-env')
                 os.system(f"cp {os.path.join(toaster_run_dir,'init-build-env')} {build_init_script}")
-                os.system(f"sed -i -e 's|^cd .*$|cd {self.pokydirname}|g' {build_init_script}")
+                os.system(f"sed -i -e 's|^cd .*$|cd {self.oecore_dirname}|g' {build_init_script}")
                 os.system(f"sed -i -e 's|^set .*$|set {builddir}|g' {build_init_script}")
                 # Execute the init
                 self._shellcmd(f"bash -c 'source {build_init_script}'", env=git_env)
@@ -476,10 +468,10 @@ class LocalhostBEController(BuildEnvironmentController):
 
         # run bitbake server from the clone if available
         # otherwise pick it from the PATH
-        bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
+        bitbake = os.path.join(self.bitbake_dirname, 'bin', 'bitbake')
         if not os.path.exists(bitbake):
             logger.info("Bitbake not available under %s, will try to use it from PATH" %
-                        self.pokydirname)
+                        self.bitbake_dirname)
             for path in os.environ["PATH"].split(os.pathsep):
                 if os.path.exists(os.path.join(path, 'bitbake')):
                     bitbake = os.path.join(path, 'bitbake')
@@ -494,18 +486,18 @@ class LocalhostBEController(BuildEnvironmentController):
             # Use 'init-build-env' model
             if not is_merged_attr:
                 self._shellcmd(f'{env_clean} bash -c \"source {setup_init}; BITBAKE_UI="knotty" {bitbake} --read {confpath} --read {bblayers} --read {toasterlayers} '
-                               '--server-only -B 0.0.0.0:0\"', self.be.sourcedir)
+                               '--server-only -B 0.0.0.0:0\"', self.be.sourcedir,env=git_env)
             else:
                 self._shellcmd(f'{env_clean} bash -c \"source {setup_init}; BITBAKE_UI="knotty" {bitbake} '
-                           '--server-only -B 0.0.0.0:0\"', self.be.sourcedir)
+                           '--server-only -B 0.0.0.0:0\"', self.be.sourcedir,env=git_env)
         else:
             # Use 'oe-init-build-env' model
             if not is_merged_attr:
                 self._shellcmd(f'{env_clean} bash -c \"source {oe_init} {builddir}; BITBAKE_UI="knotty" {bitbake} --read {confpath} --read {bblayers} --read {toasterlayers} '
-                               '--server-only -B 0.0.0.0:0\"', self.be.sourcedir)
+                               '--server-only -B 0.0.0.0:0\"', self.be.sourcedir,env=git_env)
             else:
                 self._shellcmd(f'{env_clean} bash -c \"source {oe_init} {builddir}; BITBAKE_UI="knotty" {bitbake} '
-                           '--server-only -B 0.0.0.0:0\"', self.be.sourcedir)
+                           '--server-only -B 0.0.0.0:0\"', self.be.sourcedir,env=git_env)
 
         # read port number from bitbake.lock
         self.be.bbport = -1
@@ -551,7 +543,6 @@ class LocalhostBEController(BuildEnvironmentController):
         log = os.path.join(builddir, 'toaster_ui.log')
         local_bitbake = os.path.join(os.path.dirname(os.getenv('BBBASEDIR')),
                                      'bitbake')
-
         if not is_merged_attr:
             self._shellcmd([f'{env_clean} bash -c \"(TOASTER_BRBE="{brbe}" BBSERVER="0.0.0.0:{self.be.bbport}" '
                         f'{bitbake} {bbtargets} -u toasterui  --read {confpath} --read {bblayers} --read {toasterlayers} --token="" >>{log} 2>&1;'
diff --git a/lib/toaster/orm/fixtures/gen_fixtures.py b/lib/toaster/orm/fixtures/gen_fixtures.py
index 6201f679b..c5b0ab7a7 100755
--- a/lib/toaster/orm/fixtures/gen_fixtures.py
+++ b/lib/toaster/orm/fixtures/gen_fixtures.py
@@ -32,7 +32,7 @@ verbose = False
 # It is also policy to include all active LTS releases.
 #
 
-# [Codename, Yocto Project Version, Release Date, Current Version, Support Level, Poky Version, BitBake branch]
+# [0=Codename, 1=Yocto Project Version, 2=Release Date, 3=Current Version, 4=Support Level, 5=Poky Version, 6=BitBake branch]
 current_releases = [
     # Release slot #1
     ['Scarthgap','5.0','April 2024','5.0.0 (April 2024)','Long Term Support (until April 2028)','','2.8'],
@@ -43,7 +43,7 @@ current_releases = [
     # Release slot #4
     ['Whinlatter','5.3','October 2025','5.3.0 (October 2024)','Support for 7 months (until May 2026)','','2.14'],
     ['Walnascar','5.2','April 2025','5.2.0 (April 2025)','Support for 7 months (until October 2025)','','2.12'],
-    #['Styhead','5.1','November 2024','5.1.0 (November 2024)','Support for 7 months (until May 2025)','','2.10'],
+    ['Styhead','5.1','November 2024','5.1.0 (November 2024)','Support for 7 months (until May 2025)','','2.10'],
     #['Nanbield','4.3','November 2023','4.3.0 (November 2023)','Support for 7 months (until May 2024)','','2.6'],
     #['Mickledore','4.2','April 2023','4.2.0 (April 2023)','Support for 7 months (until October 2023)','','2.4'],
     #['Langdale','4.1','October 2022','4.1.2 (January 2023)','Support for 7 months (until May 2023)','','2.2'],
@@ -81,9 +81,9 @@ prolog_template = '''\
 bitbakeversion_poky_template = '''\
   <object model="orm.bitbakeversion" pk="{{bitbake_id}}">
     <field type="CharField" name="name">{{name}}</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
     <field type="CharField" name="branch">{{branch}}</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
 '''
 bitbakeversion_oecore_template = '''\
@@ -224,7 +224,7 @@ def generate_poky():
             params['release'] = params['release'][0].lower() + params['release'][1:]
         params['name'] = params['release']
         params['bitbake_id'] = str(i+1)
-        params['branch'] = params['release']
+        params['branch'] = release[6]   # Bitbake branch
         print_template(bitbakeversion_poky_template,params,fd)
     print_str('',fd)
 
diff --git a/lib/toaster/orm/fixtures/poky.xml b/lib/toaster/orm/fixtures/poky.xml
index 6cf4f0687..34b83e971 100644
--- a/lib/toaster/orm/fixtures/poky.xml
+++ b/lib/toaster/orm/fixtures/poky.xml
@@ -9,45 +9,45 @@
   <!-- Bitbake versions which correspond to the metadata release -->
   <object model="orm.bitbakeversion" pk="1">
     <field type="CharField" name="name">scarthgap</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="branch">scarthgap</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">2.8</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="2">
     <field type="CharField" name="name">HEAD</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
     <field type="CharField" name="branch">HEAD</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="3">
     <field type="CharField" name="name">master</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
     <field type="CharField" name="branch">master</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="4">
     <field type="CharField" name="name">whinlatter</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="branch">whinlatter</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">2.14</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="5">
     <field type="CharField" name="name">walnascar</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="branch">walnascar</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">2.12</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="6">
     <field type="CharField" name="name">styhead</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="branch">styhead</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">2.10</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
   <object model="orm.bitbakeversion" pk="7">
     <field type="CharField" name="name">kirkstone</field>
-    <field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="branch">kirkstone</field>
-    <field type="CharField" name="dirpath">bitbake</field>
+    <field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
+    <field type="CharField" name="branch">2.0</field>
+    <field type="CharField" name="dirpath"></field>
   </object>
 
 
diff --git a/lib/toaster/orm/management/commands/lsupdates.py b/lib/toaster/orm/management/commands/lsupdates.py
index 6d64830eb..0ee00aa15 100644
--- a/lib/toaster/orm/management/commands/lsupdates.py
+++ b/lib/toaster/orm/management/commands/lsupdates.py
@@ -138,9 +138,7 @@ class Command(BaseCommand):
                 l.summary = index.layerItems[id].summary
                 l.description = index.layerItems[id].description
 
-                if created:
-                    # predefined layers in the fixtures (for example poky.xml)
-                    # always preempt the Layer Index for these values
+                if True: # (if created:) always override fixture defaults now that poky distro is stripped
                     l.vcs_url = index.layerItems[id].vcs_url
                     l.vcs_web_url = index.layerItems[id].vcs_web_url
                     l.vcs_web_tree_base_url = index.layerItems[id].vcs_web_tree_base_url
@@ -179,7 +177,7 @@ class Command(BaseCommand):
                     index.layerBranches[id].layer_id)
                 continue
 
-            if created:
+            if True: # (if created:) always override fixture defaults now that poky distro is stripped
                 lv.release = li_branch_id_to_toaster_release[index.layerBranches[id].branch_id]
                 lv.up_date = index.layerBranches[id].updated
                 lv.commit = index.layerBranches[id].actual_branch
