diff --git a/config.py b/config.py
index 4cd8cb1a..09736b8f 100644
--- a/config.py
+++ b/config.py
@@ -204,6 +204,7 @@ all_workers = workers + workers_bringup + workers_buildperf + workers_arm
 
 # Worker filtering for older releases
 workers_prev_releases = {
+    "blacksail" : ("alma8", "alma9", "alma10", "debian11", "debian12", "debian13", "fedora43", "fedora44", "opensuse156", "opensuse160", "rocky8", "rocky9", "rocky10", "stream9", "stream10", "ubuntu2204", "ubuntu2404", "ubuntu2504", "ubuntu2510", "ubuntu2604", "perf-"),
     "wrynose" : ("alma8", "alma9", "debian11", "debian12", "debian13", "fedora42", "fedora43", "opensuse156", "opensuse160", "rocky8", "rocky9", "stream9", "stream10", "ubuntu2204", "ubuntu2404", "ubuntu2504", "ubuntu2510", "ubuntu2604", "perf-"),
     "whinlatter" : ("alma8", "alma9", "debian11", "debian12", "debian13", "fedora39", "fedora40", "fedora41", "fedora42", "opensuse155", "opensuse156", "rocky8", "rocky9", "stream9", "ubuntu2204", "ubuntu2404", "ubuntu2504", "ubuntu2510", "perf-"),
     "walnascar" : ("alma8", "alma9", "debian11", "debian12", "fedora39", "fedora40", "fedora41", "opensuse155", "opensuse156", "rocky8", "rocky9", "stream9", "ubuntu2004","ubuntu2204", "ubuntu2304", "ubuntu2404", "ubuntu2410", "perf-"),
diff --git a/schedulers.py b/schedulers.py
index 54136768..5497eb9a 100644
--- a/schedulers.py
+++ b/schedulers.py
@@ -73,6 +73,14 @@ branchdefaults = {
         'branch_meta-openembedded': 'master',
         'branch_oecore': 'master',
     },
+    'blacksail': {
+        'branch': 'blacksail',
+        'branch_bitbake': '2.20',
+        'branch_meta-mingw': 'blacksail',
+        'branch_meta-yocto': 'blacksail',
+        'branch_oecore': 'blacksail',
+        'branch_yocto-docs': 'blacksail',
+    },
     'wrynose': {
         'branch': 'wrynose',
         'branch_bitbake': '2.18',
@@ -581,7 +589,7 @@ def parent_scheduler(target):
             name="branchselector",
             default="master",
             label="Release Shortcut Selector",
-            choices=["master", "master-next", "mathieu-next", "antonin-next", "mut", "wrynose", "wrynose-nut", "whinlatter", "whinlatter-nut", "walnascar", "styhead", "scarthgap", "scarthgap-nut", "nanbield", "mickledore", "langdale", "kirkstone", "kirkstone-nut", "honister", "hardknott", "gatesgarth", "dunfell", "zeus", "warrior", "thud", "sumo", "rocko", "pyro", "morty"],
+            choices=["master", "master-next", "mathieu-next", "antonin-next", "mut", "blacksail", "wrynose", "wrynose-nut", "whinlatter", "whinlatter-nut", "walnascar", "styhead", "scarthgap", "scarthgap-nut", "nanbield", "mickledore", "langdale", "kirkstone", "kirkstone-nut", "honister", "hardknott", "gatesgarth", "dunfell", "zeus", "warrior", "thud", "sumo", "rocko", "pyro", "morty"],
             selectors=branchdefaults),
         util.BooleanParameter(
             name="swat_monitor",
@@ -680,9 +688,17 @@ schedulers.append(sched.Nightly(name='nightly-metrics-kirkstone', branch='kirkst
 schedulers.append(sched.Nightly(name='nightly-metrics-scarthgap', branch='scarthgap', properties=parent_default_props('metrics', 'scarthgap'), builderNames=['metrics'], hour=6, minute=30, codebases = {'' : {'branch' : 'scarthgap'}}))
 schedulers.append(sched.Nightly(name='nightly-metrics-whinlatter', branch='whinlatter', properties=parent_default_props('metrics', 'whinlatter'), builderNames=['metrics'], hour=6, minute=45, codebases = {'' : {'branch' : 'whinlatter'}}))
 schedulers.append(sched.Nightly(name='nightly-metrics-wrynose', branch='wrynose', properties=parent_default_props('metrics', 'wrynose'), builderNames=['metrics'], hour=7, minute=0, codebases = {'' : {'branch' : 'wrynose'}}))
+schedulers.append(sched.Nightly(name='nightly-metrics-blacksail', branch='blacksail', properties=parent_default_props('metrics', 'blacksail'), builderNames=['metrics'], hour=5, minute=15, codebases = {'' : {'branch' : 'blacksail'}}))
 schedulers.append(sched.Nightly(name='nightly-metrics', branch='master', properties=parent_default_props('metrics'), builderNames=['metrics'], hour=7, minute=15))
 schedulers.append(sched.Nightly(name='nightly-metrics-gitstats', branch='master', properties=parent_default_props('metrics-gitstats'), builderNames=['metrics-gitstats'], hour=4, minute=0))
 
+# Run check-layer-nightly twice a week for blacksail
+schedulers.append(sched.Nightly(name='nightly-check-layer-blacksail', properties=parent_default_props('check-layer-nightly', 'blacksail'),
+                  builderNames=['check-layer-nightly'], dayOfWeek=[1, 4], hour=2, minute=0, codebases = {'' : {'branch' : 'blacksail'}}))
+# Run meta-oe-mirror twice a month for blacksail
+schedulers.append(sched.Nightly(name='nightly-meta-oe-mirror-blacksail', properties=parent_default_props('meta-oe-mirror', 'blacksail'),
+                  builderNames=['meta-oe-mirror'], dayOfMonth=[3, 17], hour=2, minute=0, codebases = {'' : {'branch' : 'blacksail'}}))
+
 # Run check-layer-nightly twice a week for wrynose
 schedulers.append(sched.Nightly(name='nightly-check-layer-wrynose', properties=parent_default_props('check-layer-nightly', 'wrynose'),
                   builderNames=['check-layer-nightly'], dayOfWeek=[1, 4], hour=2, minute=0, codebases = {'' : {'branch' : 'wrynose'}}))
@@ -722,7 +738,7 @@ schedulers.append(sched.Nightly(name='sschduler-indexing', branch='master', prop
 
 # If any of our sphinx docs branches change, trigger a build
 schedulers.append(sched.AnyBranchScheduler(name="yocto-docs-changed",
-            change_filter=util.ChangeFilter(project=["yocto-docs"], branch=[None, "master", "master-next", "wrynose", "whinlatter", "walnascar", "styhead", "scarthgap", "mickledore", "langdale", "kirkstone", "honister", "hardknott", "gatesgarth", "dunfell", "transition"]),
+            change_filter=util.ChangeFilter(project=["yocto-docs"], branch=[None, "master", "master-next", "blacksail", "wrynose", "whinlatter", "walnascar", "styhead", "scarthgap", "mickledore", "langdale", "kirkstone", "honister", "hardknott", "gatesgarth", "dunfell", "transition"]),
             codebases = ['yab-helper', 'yocto-docs', 'bitbake'],
             treeStableTimer=60,
             properties=repos_dict_for_scheduler("docs"),
