diff --git a/compos/aidl/com/android/compos/ICompOsService.aidl b/compos/aidl/com/android/compos/ICompOsService.aidl
index 29c453b..34dee54 100644
--- a/compos/aidl/com/android/compos/ICompOsService.aidl
+++ b/compos/aidl/com/android/compos/ICompOsService.aidl
@@ -33,6 +33,14 @@
     void initializeSigningKey(in byte[] keyBlob);
 
     /**
+     * Initializes the classpaths necessary for preparing and running compilation.
+     *
+     * TODO(198211396): Implement properly. We can't simply accepting the classpaths from Android
+     * since they are not derived from staged APEX (besides security reasons).
+     */
+    void initializeClasspaths(String bootClasspath, String dex2oatBootClasspath);
+
+    /**
      * Run dex2oat command with provided args, in a context that may be specified in FdAnnotation,
      * e.g. with file descriptors pre-opened. The service is responsible to decide what executables
      * it may run.
diff --git a/compos/composd/src/instance_starter.rs b/compos/composd/src/instance_starter.rs
index 1751d35..63aefb8 100644
--- a/compos/composd/src/instance_starter.rs
+++ b/compos/composd/src/instance_starter.rs
@@ -28,6 +28,7 @@
     COMPOS_DATA_ROOT, INSTANCE_IMAGE_FILE, PRIVATE_KEY_BLOB_FILE, PUBLIC_KEY_FILE,
 };
 use log::{info, warn};
+use std::env;
 use std::fs;
 use std::path::{Path, PathBuf};
 
@@ -100,7 +101,7 @@
         // current set of APEXes) and the key blob can be successfully decrypted by the VM. So the
         // files have not been tampered with and we're good to go.
 
-        service.initializeSigningKey(&key_blob).context("Loading signing key")?;
+        Self::initialize_service(service, &key_blob)?;
 
         Ok(compos_instance)
     }
@@ -129,13 +130,25 @@
         }
         fs::write(&self.public_key, &rsa_public_key).context("Writing public key")?;
 
-        // We don't need to verify the key, since we just generated it and have it in memory.
+        // Unlike when starting an existing instance, we don't need to verify the key, since we
+        // just generated it and have it in memory.
 
-        service.initializeSigningKey(&key_data.keyBlob).context("Loading signing key")?;
+        Self::initialize_service(service, &key_data.keyBlob)?;
 
         Ok(compos_instance)
     }
 
+    fn initialize_service(service: &Strong<dyn ICompOsService>, key_blob: &[u8]) -> Result<()> {
+        // Key blob is assumed to be verified/trusted.
+        service.initializeSigningKey(key_blob).context("Loading signing key")?;
+
+        // TODO(198211396): Implement correctly.
+        service
+            .initializeClasspaths(&env::var("BOOTCLASSPATH")?, &env::var("DEX2OATBOOTCLASSPATH")?)
+            .context("Initializing *CLASSPATH")?;
+        Ok(())
+    }
+
     fn start_vm(&self) -> Result<CompOsInstance> {
         let instance_image = fs::OpenOptions::new()
             .read(true)
diff --git a/compos/src/compsvc.rs b/compos/src/compsvc.rs
index 08f3521..2a5534c 100644
--- a/compos/src/compsvc.rs
+++ b/compos/src/compsvc.rs
@@ -22,6 +22,7 @@
 use binder_common::new_binder_exception;
 use log::warn;
 use std::default::Default;
+use std::env;
 use std::path::PathBuf;
 use std::sync::{Arc, RwLock};
 
@@ -85,6 +86,17 @@
         }
     }
 
+    fn initializeClasspaths(
+        &self,
+        boot_classpath: &str,
+        dex2oat_boot_classpath: &str,
+    ) -> BinderResult<()> {
+        // TODO(198211396): Implement correctly.
+        env::set_var("BOOTCLASSPATH", boot_classpath);
+        env::set_var("DEX2OATBOOTCLASSPATH", dex2oat_boot_classpath);
+        Ok(())
+    }
+
     fn compile_cmd(
         &self,
         args: &[String],
