diff --git a/server/site_tests/cheets_CTS_Instant/control.9.0_dev.arm.waivers b/server/site_tests/cheets_CTS_Instant/control.9.0_dev.arm.waivers
new file mode 100644
index 0000000..7ae50f6
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.9.0_dev.arm.waivers
@@ -0,0 +1,47 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.9.0_dev.arm.waivers'
+ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-qual'
+DEPENDENCIES = 'arc, cts_cpu_arm'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        tag='9.0_dev.arm.waivers',
+        test_name='cheets_CTS_Instant.9.0_dev.arm.waivers',
+        run_template=['run', 'commandAndExit', 'cts-instant',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='arm',
+        uri='gs://chromeos-arc-images/cts/bundle/P/android-cts_instant-6862722-linux_x86-arm.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_CTS_Instant/control.9.0_dev.x86.waivers b/server/site_tests/cheets_CTS_Instant/control.9.0_dev.x86.waivers
new file mode 100644
index 0000000..85f95b0
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.9.0_dev.x86.waivers
@@ -0,0 +1,47 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.9.0_dev.x86.waivers'
+ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-qual'
+DEPENDENCIES = 'arc, cts_cpu_x86'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        tag='9.0_dev.x86.waivers',
+        test_name='cheets_CTS_Instant.9.0_dev.x86.waivers',
+        run_template=['run', 'commandAndExit', 'cts-instant',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='x86',
+        uri='gs://chromeos-arc-images/cts/bundle/P/android-cts_instant-6862722-linux_x86-x86.zip',
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_CTS_Instant/control.arm.waivers b/server/site_tests/cheets_CTS_Instant/control.arm.waivers
new file mode 100644
index 0000000..3dbfa09
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.arm.waivers
@@ -0,0 +1,49 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.arm.waivers'
+ATTRIBUTES = 'suite:cts_P'
+DEPENDENCIES = 'arc, cts_cpu_arm'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        tag='arm.waivers',
+        test_name='cheets_CTS_Instant.arm.waivers',
+        run_template=['run', 'commandAndExit', 'cts-instant',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='arm',
+        uri='gs://chromeos-partner-gts/android-cts_instant-6862722-linux_x86-arm.zip',
+        retry_manual_tests=True,
+        warn_on_test_retry=False,
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_CTS_Instant/control.arm.waivers-collect-tests-only b/server/site_tests/cheets_CTS_Instant/control.arm.waivers-collect-tests-only
new file mode 100644
index 0000000..4262a93
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.arm.waivers-collect-tests-only
@@ -0,0 +1,50 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.arm.waivers-collect-tests-only'
+ATTRIBUTES = 'suite:cts_P'
+DEPENDENCIES = 'arc, cts_cpu_arm'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using arm ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        max_retry=0,
+        tag='arm.waivers-collect-tests-only',
+        test_name='cheets_CTS_Instant.arm.waivers-collect-tests-only',
+        run_template=['run', 'commandAndExit', 'collect-tests-only',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='arm',
+        uri='gs://chromeos-partner-gts/android-cts_instant-6862722-linux_x86-arm.zip',
+        retry_manual_tests=True,
+        warn_on_test_retry=False,
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_CTS_Instant/control.x86.waivers b/server/site_tests/cheets_CTS_Instant/control.x86.waivers
new file mode 100644
index 0000000..08583ed
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.x86.waivers
@@ -0,0 +1,49 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.x86.waivers'
+ATTRIBUTES = 'suite:cts_P'
+DEPENDENCIES = 'arc, cts_cpu_x86'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        tag='x86.waivers',
+        test_name='cheets_CTS_Instant.x86.waivers',
+        run_template=['run', 'commandAndExit', 'cts-instant',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='x86',
+        uri='gs://chromeos-partner-gts/android-cts_instant-6862722-linux_x86-x86.zip',
+        retry_manual_tests=True,
+        warn_on_test_retry=False,
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
diff --git a/server/site_tests/cheets_CTS_Instant/control.x86.waivers-collect-tests-only b/server/site_tests/cheets_CTS_Instant/control.x86.waivers-collect-tests-only
new file mode 100644
index 0000000..9e4695e
--- /dev/null
+++ b/server/site_tests/cheets_CTS_Instant/control.x86.waivers-collect-tests-only
@@ -0,0 +1,50 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file has been automatically generated. Do not edit!
+
+AUTHOR = 'ARC++ Team'
+NAME = 'cheets_CTS_Instant.x86.waivers-collect-tests-only'
+ATTRIBUTES = 'suite:cts_P'
+DEPENDENCIES = 'arc, cts_cpu_x86'
+JOB_RETRIES = 1
+TEST_TYPE = 'server'
+TIME = 'MEDIUM'
+MAX_RESULT_SIZE_KB = 512000
+DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using x86 ABI in the ARC++ container.'
+
+def run_TS(machine):
+    host_list = [hosts.create_host(machine)]
+    job.run_test(
+        'cheets_CTS_Instant',
+        hosts=host_list,
+        iterations=1,
+        max_retry=0,
+        tag='x86.waivers-collect-tests-only',
+        test_name='cheets_CTS_Instant.x86.waivers-collect-tests-only',
+        run_template=['run', 'commandAndExit', 'collect-tests-only',
+            # HACK. What we really want is including the following two cases.
+            #   android.media.cts.AudioTrackTest#testPlayStaticData
+            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
+            # Since cts-instant does not support --include-filter, roughly
+            # approximate by --module and --exclude of a few expensive classes
+            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
+            '--module', 'CtsMediaTestCases',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
+            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
+        ],
+        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
+        target_module='cts-instant-dev',
+        target_plan=None,
+        load_waivers=False,
+        bundle='x86',
+        uri='gs://chromeos-partner-gts/android-cts_instant-6862722-linux_x86-x86.zip',
+        retry_manual_tests=True,
+        warn_on_test_retry=False,
+        timeout=3600)
+
+parallel_simple(run_TS, machines)
