diff --git a/agent/pom.xml b/agent/pom.xml
index 38659169e..20626c712 100644
--- a/agent/pom.xml
+++ b/agent/pom.xml
@@ -28,6 +28,11 @@
arthas-common
${project.version}
+
+ com.taobao.arthas
+ arthas-plugin
+ ${project.version}
+
com.taobao.arthas
arthas-bytekit
diff --git a/agent/src/main/java/com/taobao/arthas/agent/ArthasAgent.java b/agent/src/main/java/com/taobao/arthas/agent/ArthasAgent.java
index cd38720e6..28b4437a2 100644
--- a/agent/src/main/java/com/taobao/arthas/agent/ArthasAgent.java
+++ b/agent/src/main/java/com/taobao/arthas/agent/ArthasAgent.java
@@ -9,9 +9,9 @@ import java.util.Properties;
import com.alibaba.arthas.deps.org.slf4j.Logger;
import com.alibaba.arthas.deps.org.slf4j.LoggerFactory;
+import com.alibaba.arthas.plugin.PluginException;
+import com.alibaba.arthas.plugin.PluginManager;
import com.taobao.arthas.common.FeatureCodec;
-import com.taobao.arthas.plugin.PluginException;
-import com.taobao.arthas.plugin.PluginManager;
/**
*
diff --git a/agent/src/test/java/com/taobao/arthas/agent/PluginConfigTest.java b/agent/src/test/java/com/taobao/arthas/agent/PluginConfigTest.java
index 214c0eb11..4567ab720 100644
--- a/agent/src/test/java/com/taobao/arthas/agent/PluginConfigTest.java
+++ b/agent/src/test/java/com/taobao/arthas/agent/PluginConfigTest.java
@@ -5,8 +5,8 @@ import java.util.Properties;
import org.junit.Assert;
import org.junit.Test;
+import com.alibaba.arthas.plugin.PluginConfig;
import com.taobao.arthas.common.properties.PropertiesInjectUtil;
-import com.taobao.arthas.plugin.PluginConfig;
public class PluginConfigTest {
diff --git a/apm-demo/src/main/java/com/taobao/arthas/demo/plugin/DemoPluginActivator.java b/apm-demo/src/main/java/com/taobao/arthas/demo/plugin/DemoPluginActivator.java
index 4aa87e8ba..8f65a9d23 100644
--- a/apm-demo/src/main/java/com/taobao/arthas/demo/plugin/DemoPluginActivator.java
+++ b/apm-demo/src/main/java/com/taobao/arthas/demo/plugin/DemoPluginActivator.java
@@ -11,14 +11,14 @@ import org.slf4j.LoggerFactory;
import com.alibaba.arthas.deps.org.objectweb.asm.tree.ClassNode;
import com.alibaba.arthas.deps.org.objectweb.asm.tree.MethodNode;
+import com.alibaba.arthas.plugin.Plugin;
+import com.alibaba.arthas.plugin.PluginActivator;
+import com.alibaba.arthas.plugin.PluginContext;
import com.taobao.arthas.bytekit.asm.MethodProcessor;
import com.taobao.arthas.bytekit.asm.interceptor.InterceptorProcessor;
import com.taobao.arthas.bytekit.asm.interceptor.parser.DefaultInterceptorClassParser;
import com.taobao.arthas.bytekit.utils.AsmUtils;
import com.taobao.arthas.bytekit.utils.MatchUtils;
-import com.taobao.arthas.plugin.Plugin;
-import com.taobao.arthas.plugin.PluginActivator;
-import com.taobao.arthas.plugin.PluginContext;
public class DemoPluginActivator implements PluginActivator {
diff --git a/core/src/main/java/com/taobao/arthas/core/CorePluginActivator.java b/core/src/main/java/com/taobao/arthas/core/CorePluginActivator.java
index 4377fcffd..96f75018f 100644
--- a/core/src/main/java/com/taobao/arthas/core/CorePluginActivator.java
+++ b/core/src/main/java/com/taobao/arthas/core/CorePluginActivator.java
@@ -5,12 +5,12 @@ import java.io.File;
import java.lang.reflect.Method;
import java.util.jar.JarFile;
+import com.alibaba.arthas.plugin.PluginActivator;
+import com.alibaba.arthas.plugin.PluginContext;
import com.taobao.arthas.common.PidUtils;
import com.taobao.arthas.core.advisor.AdviceWeaver;
import com.taobao.arthas.core.config.Configure;
import com.taobao.arthas.core.server.ArthasBootstrap;
-import com.taobao.arthas.plugin.PluginActivator;
-import com.taobao.arthas.plugin.PluginContext;
/**
*
diff --git a/core/src/main/java/com/taobao/arthas/core/command/basic1000/PluginsCommand.java b/core/src/main/java/com/taobao/arthas/core/command/basic1000/PluginsCommand.java
index 43d890073..dd7c80b56 100644
--- a/core/src/main/java/com/taobao/arthas/core/command/basic1000/PluginsCommand.java
+++ b/core/src/main/java/com/taobao/arthas/core/command/basic1000/PluginsCommand.java
@@ -2,12 +2,12 @@ package com.taobao.arthas.core.command.basic1000;
import static com.taobao.text.ui.Element.label;
+import com.alibaba.arthas.plugin.Plugin;
+import com.alibaba.arthas.plugin.PluginManager;
import com.taobao.arthas.agent.ArthasAgent;
import com.taobao.arthas.core.shell.command.AnnotatedCommand;
import com.taobao.arthas.core.shell.command.CommandProcess;
import com.taobao.arthas.core.util.LogUtil;
-import com.taobao.arthas.plugin.Plugin;
-import com.taobao.arthas.plugin.PluginManager;
import com.taobao.middleware.cli.annotations.Description;
import com.taobao.middleware.cli.annotations.Name;
import com.taobao.middleware.cli.annotations.Option;
diff --git a/plugin/pom.xml b/plugin/pom.xml
new file mode 100644
index 000000000..7eb7e117c
--- /dev/null
+++ b/plugin/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+ com.taobao.arthas
+ arthas-all
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+ arthas-plugin
+ arthas-plugin
+
+
+
+ com.taobao.arthas
+ arthas-common
+ ${project.version}
+
+
+ com.alibaba.arthas
+ arthas-repackage-logger
+ ${project.version}
+
+
+
+
+ arthas-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.6
+ 1.6
+ UTF-8
+ true
+
+
+
+
+
+
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/ArthasPlugin.java b/plugin/src/main/java/com/alibaba/arthas/plugin/ArthasPlugin.java
similarity index 99%
rename from agent/src/main/java/com/taobao/arthas/plugin/ArthasPlugin.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/ArthasPlugin.java
index 4bbd34f62..959c5693c 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/ArthasPlugin.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/ArthasPlugin.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.io.File;
import java.io.FileInputStream;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PlguinClassLoader.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PlguinClassLoader.java
similarity index 96%
rename from agent/src/main/java/com/taobao/arthas/plugin/PlguinClassLoader.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PlguinClassLoader.java
index c8bedc4d0..f7fa4f89b 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PlguinClassLoader.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PlguinClassLoader.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.net.URL;
import java.net.URLClassLoader;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/Plugin.java b/plugin/src/main/java/com/alibaba/arthas/plugin/Plugin.java
similarity index 89%
rename from agent/src/main/java/com/taobao/arthas/plugin/Plugin.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/Plugin.java
index c25456656..9bdf3ff1e 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/Plugin.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/Plugin.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.net.URL;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginActivator.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginActivator.java
similarity index 95%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginActivator.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginActivator.java
index f221477e3..9c3490380 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginActivator.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginActivator.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
public interface PluginActivator {
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginConfig.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginConfig.java
similarity index 95%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginConfig.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginConfig.java
index 57847241d..c789934f6 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginConfig.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginConfig.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
/**
*
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginContext.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginContext.java
similarity index 87%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginContext.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginContext.java
index 2cfce41b2..a464335d8 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginContext.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginContext.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.lang.instrument.Instrumentation;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginContextImpl.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginContextImpl.java
similarity index 95%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginContextImpl.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginContextImpl.java
index 6b0225790..851147d3a 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginContextImpl.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginContextImpl.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.lang.instrument.Instrumentation;
import java.util.Properties;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginException.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginException.java
similarity index 92%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginException.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginException.java
index 02a390e19..da92aaccb 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginException.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginException.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
/**
*
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginManager.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginManager.java
similarity index 99%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginManager.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginManager.java
index 09bc95b4d..7f9de9a19 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginManager.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginManager.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
import java.io.File;
import java.lang.instrument.Instrumentation;
diff --git a/agent/src/main/java/com/taobao/arthas/plugin/PluginState.java b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginState.java
similarity index 89%
rename from agent/src/main/java/com/taobao/arthas/plugin/PluginState.java
rename to plugin/src/main/java/com/alibaba/arthas/plugin/PluginState.java
index 30cf65d5e..edc99c387 100644
--- a/agent/src/main/java/com/taobao/arthas/plugin/PluginState.java
+++ b/plugin/src/main/java/com/alibaba/arthas/plugin/PluginState.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.plugin;
+package com.alibaba.arthas.plugin;
/**
* TODO 要有一个状态流转图 , 插件有 online /offline 状态??比如拦截流量的,可以打开一段时间,然后再关掉
diff --git a/pom.xml b/pom.xml
index 2f86cdf31..8210230d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,7 @@
spy
common
bytekit
+ plugin
core
agent
client