diff --git a/apkdmverity/apkverity/.cargo/config.toml b/apkdmverity/.cargo/config.toml
similarity index 100%
rename from apkdmverity/apkverity/.cargo/config.toml
rename to apkdmverity/.cargo/config.toml
diff --git a/apkdmverity/apkverity/Android.bp b/apkdmverity/Android.bp
similarity index 100%
rename from apkdmverity/apkverity/Android.bp
rename to apkdmverity/Android.bp
diff --git a/apkdmverity/apkverity/AndroidTest.xml b/apkdmverity/AndroidTest.xml
similarity index 100%
rename from apkdmverity/apkverity/AndroidTest.xml
rename to apkdmverity/AndroidTest.xml
diff --git a/apkdmverity/apkverity/Cargo.toml b/apkdmverity/Cargo.toml
similarity index 100%
rename from apkdmverity/apkverity/Cargo.toml
rename to apkdmverity/Cargo.toml
diff --git a/apkdmverity/TEST_MAPPING b/apkdmverity/TEST_MAPPING
new file mode 100644
index 0000000..997b3f9
--- /dev/null
+++ b/apkdmverity/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "postsubmit" : [
+    {
+      "name" : "apkdmverity.test"
+    }
+  ]
+}
diff --git a/apkdmverity/apkverity/src/apksigv4.rs b/apkdmverity/src/apksigv4.rs
similarity index 100%
rename from apkdmverity/apkverity/src/apksigv4.rs
rename to apkdmverity/src/apksigv4.rs
diff --git a/apkdmverity/apkverity/src/dm.rs b/apkdmverity/src/dm.rs
similarity index 100%
rename from apkdmverity/apkverity/src/dm.rs
rename to apkdmverity/src/dm.rs
diff --git a/apkdmverity/apkverity/src/dm/sys.rs b/apkdmverity/src/dm/sys.rs
similarity index 100%
rename from apkdmverity/apkverity/src/dm/sys.rs
rename to apkdmverity/src/dm/sys.rs
diff --git a/apkdmverity/apkverity/src/dm/verity.rs b/apkdmverity/src/dm/verity.rs
similarity index 100%
rename from apkdmverity/apkverity/src/dm/verity.rs
rename to apkdmverity/src/dm/verity.rs
diff --git a/apkdmverity/apkverity/src/loopdevice.rs b/apkdmverity/src/loopdevice.rs
similarity index 100%
rename from apkdmverity/apkverity/src/loopdevice.rs
rename to apkdmverity/src/loopdevice.rs
diff --git a/apkdmverity/apkverity/src/loopdevice/sys.rs b/apkdmverity/src/loopdevice/sys.rs
similarity index 100%
rename from apkdmverity/apkverity/src/loopdevice/sys.rs
rename to apkdmverity/src/loopdevice/sys.rs
diff --git a/apkdmverity/apkverity/src/main.rs b/apkdmverity/src/main.rs
similarity index 100%
rename from apkdmverity/apkverity/src/main.rs
rename to apkdmverity/src/main.rs
diff --git a/apkdmverity/apkverity/src/util.rs b/apkdmverity/src/util.rs
similarity index 100%
rename from apkdmverity/apkverity/src/util.rs
rename to apkdmverity/src/util.rs
diff --git a/apkdmverity/apkverity/testdata/README b/apkdmverity/testdata/README
similarity index 100%
rename from apkdmverity/apkverity/testdata/README
rename to apkdmverity/testdata/README
diff --git a/apkdmverity/apkverity/testdata/keystore b/apkdmverity/testdata/keystore
similarity index 100%
rename from apkdmverity/apkverity/testdata/keystore
rename to apkdmverity/testdata/keystore
Binary files differ
diff --git a/apkdmverity/apkverity/testdata/test.apk b/apkdmverity/testdata/test.apk
similarity index 100%
rename from apkdmverity/apkverity/testdata/test.apk
rename to apkdmverity/testdata/test.apk
Binary files differ
diff --git a/apkdmverity/apkverity/testdata/test.apk.idsig b/apkdmverity/testdata/test.apk.idsig
similarity index 100%
rename from apkdmverity/apkverity/testdata/test.apk.idsig
rename to apkdmverity/testdata/test.apk.idsig
Binary files differ
diff --git a/microdroid/payload/config/Android.bp b/microdroid/payload/config/Android.bp
new file mode 100644
index 0000000..da58bdf
--- /dev/null
+++ b/microdroid/payload/config/Android.bp
@@ -0,0 +1,16 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+rust_library {
+    name: "libmicrodroid_payload_config",
+    host_supported: true,
+    crate_name: "microdroid_payload_config",
+    srcs: ["src/lib.rs"],
+    prefer_rlib: true,
+    edition: "2018",
+    rustlibs: [
+        "libserde_json",
+        "libserde",
+    ],
+}
diff --git a/microdroid/payload/config/config.proto b/microdroid/payload/config/config.proto
new file mode 100644
index 0000000..b3d8d3a
--- /dev/null
+++ b/microdroid/payload/config/config.proto
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto3";
+
+package android.microdroid;
+
+// This .proto is for the schema of a VM payload config (JSON)
+
+message PayloadConfig {
+  uint32 version = 1;
+
+  OsConfig os = 2;
+
+  Task task = 3;
+
+  repeated ApexConfig apexes = 4;
+}
+
+message OsConfig {
+  // for now "microdroid" is the only type we support
+  string name = 1;
+}
+
+message Task {
+  enum TaskType {
+    EXECUTABLE = 0,          // "executable" in JSON
+    MICRODROID_LAUNCHER = 1, // "microdroid_launcher" in JSON
+  }
+  // when the type is "microdroid_launcher", command is searched in /mnt/apk/lib/{arch}"
+  TaskType type = 1;
+
+  string command = 2;
+  repeated string args = 3;
+}
+
+message ApexConfig {
+  string name = 1;
+
+  // TODO(b/186396080) An APEX can be identified either by
+  // (1) its name
+  // (2) name and public key (or cert)
+  // or (3) name and exact hash.
+  // Rollback index should be supported for the case (2).
+}
diff --git a/microdroid/payload/config/src/lib.rs b/microdroid/payload/config/src/lib.rs
new file mode 100644
index 0000000..6dc127b
--- /dev/null
+++ b/microdroid/payload/config/src/lib.rs
@@ -0,0 +1,89 @@
+// Copyright 2021, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! VM Payload Config
+
+use serde::{Deserialize, Serialize};
+
+/// VM payload config
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
+pub struct VmPayloadConfig {
+    /// OS config. Default: "microdroid"
+    #[serde(default)]
+    pub os: OsConfig,
+
+    /// Task to run in a VM
+    #[serde(default)]
+    pub task: Option<Task>,
+
+    /// APEXes to activate in a VM
+    #[serde(default)]
+    pub apexes: Vec<ApexConfig>,
+}
+
+/// OS config
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
+pub struct OsConfig {
+    /// The name of OS to use
+    pub name: String,
+}
+
+impl Default for OsConfig {
+    fn default() -> Self {
+        Self { name: "microdroid".to_owned() }
+    }
+}
+
+/// Payload's task can be one of plain executable
+/// or an .so library which can be started via /system/bin/microdroid_launcher
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
+pub enum TaskType {
+    /// Task's command indicates the path to the executable binary.
+    #[serde(rename = "executable")]
+    Executable,
+    /// Task's command indicates the .so library in /mnt/apk/lib/{arch}
+    #[serde(rename = "microdroid_launcher")]
+    MicrodroidLauncher,
+}
+
+/// Task to run in a VM
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
+pub struct Task {
+    /// Decides how to execute the command: executable(default) | microdroid_launcher
+    #[serde(default, rename = "type")]
+    pub type_: TaskType,
+
+    /// Command to run
+    /// - For executable task, this is the path to the executable.
+    /// - For microdroid_launcher task, this is the name of .so
+    pub command: String,
+
+    /// Args to the command
+    #[serde(default)]
+    pub args: Vec<String>,
+}
+
+impl Default for TaskType {
+    fn default() -> TaskType {
+        TaskType::Executable
+    }
+}
+
+/// APEX config
+/// For now, we only pass the name of APEX.
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
+pub struct ApexConfig {
+    /// The name of APEX
+    pub name: String,
+}
diff --git a/microdroid/sepolicy/system/private/microdroid_launcher.te b/microdroid/sepolicy/system/private/microdroid_launcher.te
index 35286a6..e68b687 100644
--- a/microdroid/sepolicy/system/private/microdroid_launcher.te
+++ b/microdroid/sepolicy/system/private/microdroid_launcher.te
@@ -9,6 +9,9 @@
 allow microdroid_launcher adbd:fd use;
 allow microdroid_launcher adbd:unix_stream_socket { read write };
 
+# microdroid_launcher is launched by microdroid_manager with fork/execvp.
+allow microdroid_launcher microdroid_manager:fd use;
+
 # Allow to use FDs inherited from the shell. This includes the FD opened for
 # the microdroid_launcher executable itself and the FD for adb connection.
 # TODO(b/186396070) remove this when this is executed from microdroid_manager
diff --git a/microdroid_manager/Android.bp b/microdroid_manager/Android.bp
index ea811c8..cb628b1 100644
--- a/microdroid_manager/Android.bp
+++ b/microdroid_manager/Android.bp
@@ -11,8 +11,10 @@
     rustlibs: [
         "libandroid_logger",
         "libanyhow",
+        "libkeystore2_system_property-rust",
         "liblog_rust",
         "libmicrodroid_metadata_proto_rust",
+        "libmicrodroid_payload_config",
         "libprotobuf",
         "libserde_json",
         "libserde",
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index 1ab17d5..ae72a59 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -16,39 +16,76 @@
 
 mod ioutil;
 mod metadata;
-mod payload_config;
 
 use android_logger::Config;
+use anyhow::{anyhow, bail, Result};
+use keystore2_system_property::PropertyWatcher;
 use log::{info, Level};
-use payload_config::{Task, VmPayloadConfig};
-use std::io;
+use microdroid_payload_config::{Task, TaskType, VmPayloadConfig};
+use std::fs;
 use std::path::Path;
-use std::process::{Command, Stdio};
+use std::process::Command;
+use std::time::Duration;
+
+const WAIT_TIMEOUT: Duration = Duration::from_secs(10);
 
 const LOG_TAG: &str = "MicrodroidManager";
 
-fn main() -> io::Result<()> {
+fn main() -> Result<()> {
     android_logger::init_once(Config::default().with_tag(LOG_TAG).with_min_level(Level::Debug));
 
     info!("started.");
 
     let metadata = metadata::load()?;
     if !metadata.payload_config_path.is_empty() {
-        let config = VmPayloadConfig::load_from(Path::new(&metadata.payload_config_path))?;
+        let config = load_config(Path::new(&metadata.payload_config_path))?;
+
+        // TODO(jooyung): wait until sys.boot_completed?
         if let Some(main_task) = &config.task {
-            exec(main_task)?;
+            exec_task(main_task)?;
         }
     }
 
     Ok(())
 }
 
-/// executes a task
-/// TODO(jooyung): fork a child process
-fn exec(task: &Task) -> io::Result<()> {
-    info!("executing main task {} {:?}...", task.command, task.args);
-    let exit_status =
-        Command::new(&task.command).args(&task.args).stdout(Stdio::inherit()).status()?;
-    info!("exit with {}", &exit_status);
+fn load_config(path: &Path) -> Result<VmPayloadConfig> {
+    info!("loading config from {:?}...", path);
+    let file = ioutil::wait_for_file(path, WAIT_TIMEOUT)?;
+    Ok(serde_json::from_reader(file)?)
+}
+
+fn exec_task(task: &Task) -> Result<()> {
+    info!("executing main task {:?}...", task);
+    build_command(task)?.spawn()?;
     Ok(())
 }
+
+fn build_command(task: &Task) -> Result<Command> {
+    Ok(match task.type_ {
+        TaskType::Executable => {
+            let mut command = Command::new(&task.command);
+            command.args(&task.args);
+            command
+        }
+        TaskType::MicrodroidLauncher => {
+            let mut command = Command::new("/system/bin/microdroid_launcher");
+            command.arg(find_library_path(&task.command)?).args(&task.args);
+            command
+        }
+    })
+}
+
+fn find_library_path(name: &str) -> Result<String> {
+    let mut watcher = PropertyWatcher::new("ro.product.cpu.abilist")?;
+    let value = watcher.read(|_name, value| Ok(value.trim().to_string()))?;
+    let abi = value.split(',').next().ok_or_else(|| anyhow!("no abilist"))?;
+    let path = format!("/mnt/apk/lib/{}/{}", abi, name);
+
+    let metadata = fs::metadata(&path)?;
+    if !metadata.is_file() {
+        bail!("{} is not a file", &path);
+    }
+
+    Ok(path)
+}
diff --git a/microdroid_manager/src/payload_config.rs b/microdroid_manager/src/payload_config.rs
deleted file mode 100644
index bac841a..0000000
--- a/microdroid_manager/src/payload_config.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2021, The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//! VM Payload Config
-
-use log::info;
-use serde::{Deserialize, Serialize};
-use std::io;
-use std::path::Path;
-use std::time::Duration;
-
-use crate::ioutil;
-
-const WAIT_TIMEOUT: Duration = Duration::from_secs(10);
-
-#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
-pub struct VmPayloadConfig {
-    #[serde(default)]
-    pub task: Option<Task>,
-}
-
-#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
-pub struct Task {
-    pub command: String,
-    #[serde(default)]
-    pub args: Vec<String>,
-}
-
-impl VmPayloadConfig {
-    pub fn load_from(path: &Path) -> io::Result<VmPayloadConfig> {
-        info!("loading config from {:?}...", path);
-        let file = ioutil::wait_for_file(path, WAIT_TIMEOUT)?;
-        Ok(serde_json::from_reader(file)?)
-    }
-}
diff --git a/tests/testapk/assets/vm_config.json b/tests/testapk/assets/vm_config.json
index e619c3b..7a3df7a 100644
--- a/tests/testapk/assets/vm_config.json
+++ b/tests/testapk/assets/vm_config.json
@@ -1,6 +1,13 @@
 {
+  "os": {
+    "name": "microdroid"
+  },
   "task": {
-    "command": "echo",
-    "args": ["hello", "microdroid"]
+    "type": "microdroid_launcher",
+    "command": "MicrodroidTestNativeLib.so",
+    "args": [
+      "hello",
+      "microdroid"
+    ]
   }
 }
\ No newline at end of file
