diff --git a/karaf/assembly/src/main/filtered-resources/features.xml b/karaf/assembly/src/main/filtered-resources/features.xml
index b833e96..26af833 100644
--- a/karaf/assembly/src/main/filtered-resources/features.xml
+++ b/karaf/assembly/src/main/filtered-resources/features.xml
@@ -40,5 +40,6 @@
           username=karaf
           password=karaf
         </config>
+        <bundle>mvn:org.apache.felix.karaf/org.apache.felix.karaf.webconsole/${version}/jar</bundle>
     </feature>
 </features>
diff --git a/karaf/pom.xml b/karaf/pom.xml
index 8f0b5be..fe886f7 100644
--- a/karaf/pom.xml
+++ b/karaf/pom.xml
@@ -41,6 +41,7 @@
         <module>jaas</module>
         <module>client</module>
         <module>management</module>
+        <module>webconsole</module>
         <module>assembly</module>
         <module>demos</module>
         <module>itests</module>
@@ -100,6 +101,7 @@
         <pax.url.version>0.3.3</pax.url.version>
         <servicemix.legal.version>1.0</servicemix.legal.version>
         <servicemix.specs.version>1.4-SNAPSHOT</servicemix.specs.version>
+        <servlet.api.version>2.5</servlet.api.version>
         <spring.osgi.version>1.2.0-rc1</spring.osgi.version>
         <spring.version>2.5.6</spring.version>
         <sshd.version>1.0-SNAPSHOT</sshd.version>
@@ -359,6 +361,11 @@
                 </exclusions>
             </dependency>
             <dependency>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>org.apache.felix.webconsole</artifactId>
+                <version>${felix.webconsole.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-aop</artifactId>
                 <version>${spring.version}</version>
@@ -818,6 +825,11 @@
                 <groupId>org.eclipse</groupId>
                 <artifactId>osgi</artifactId>
                 <version>${equinox.version}</version>
+            </dependency>            
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>servlet-api</artifactId>
+                <version>${servlet.api.version}</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
diff --git a/karaf/webconsole/pom.xml b/karaf/webconsole/pom.xml
new file mode 100644
index 0000000..432c9ef
--- /dev/null
+++ b/karaf/webconsole/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!--
+
+        Licensed to the Apache Software Foundation (ASF) under one or more
+        contributor license agreements.  See the NOTICE file distributed with
+        this work for additional information regarding copyright ownership.
+        The ASF licenses this file to You 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.
+    -->
+
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.apache.felix.karaf</groupId>
+    <artifactId>karaf</artifactId>
+    <version>1.2.0-SNAPSHOT</version>
+  </parent>
+
+  <groupId>org.apache.felix.karaf</groupId>
+  <artifactId>org.apache.felix.karaf.webconsole</artifactId>
+  <packaging>bundle</packaging>
+  <version>1.2.0-SNAPSHOT</version>
+  <name>Apache Felix Karaf :: Web Console</name>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.webconsole</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix.karaf.gshell</groupId>
+      <artifactId>org.apache.felix.karaf.gshell.features</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicemix.bundles</groupId>
+      <artifactId>org.apache.servicemix.bundles.junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <Private-Package>org.apache.felix.karaf.webconsole*</Private-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  
+</project>
diff --git a/karaf/webconsole/src/main/java/org/apache/felix/karaf/webconsole/FeaturesPlugin.java b/karaf/webconsole/src/main/java/org/apache/felix/karaf/webconsole/FeaturesPlugin.java
new file mode 100644
index 0000000..3351220
--- /dev/null
+++ b/karaf/webconsole/src/main/java/org/apache/felix/karaf/webconsole/FeaturesPlugin.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.felix.karaf.webconsole;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.felix.karaf.gshell.features.FeaturesService;
+import org.apache.felix.webconsole.AbstractWebConsolePlugin;
+
+/**
+ * Felix Web Console plugin to interact with Karaf features
+ *
+ * @author Marcin Wilkos
+ */
+public class FeaturesPlugin extends AbstractWebConsolePlugin implements Servlet {
+
+    private static final String LABEL = "features";
+    private static final String TITLE = "Features";
+    
+    private FeaturesService featuresService;
+    
+    public FeaturesPlugin() {
+        super();
+    }
+
+    public String getTitle() {
+        return TITLE;
+    }
+
+    public String getLabel() {
+        return LABEL;
+    }
+
+    protected void renderContent(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        PrintWriter pw = response.getWriter();
+        pw.println("<pre>");
+        pw.println("</pre>");
+
+        pw.println( "<table class='content' cellpadding='0' cellspacing='0' width='100%'>" );
+
+        pw.println( "<tr class='content'>" );
+        pw.println( "<th class='content container'>" + getTitle() + "</th>" );
+        pw.println( "</tr>" );
+
+        pw.println( "<tr class='content'>" );
+        pw.println( "<td class='content'>" );
+        pw.println( "<pre>" );
+
+        pw.println("*** Features:");
+        String[] features;
+        try {
+            features = getFeatures();
+        } catch (Exception e) {
+            throw new ServletException("Unable to fetch features", e);
+        }
+        for(int i=0; i<features.length;i++){
+            pw.println(features[i]);
+        }
+
+        pw.println( "</pre>" );
+        pw.println( "</td>" );
+        pw.println( "</tr>" );
+        pw.println( "</table>" );
+    }
+
+    /*
+     * Get the list of installed/uninstalled features
+     */
+    private String[] getFeatures() throws Exception {        
+        return getFeaturesService().listFeatures();
+    }
+    
+    public FeaturesService getFeaturesService() {
+        return featuresService;
+    }
+    
+    public void setFeaturesService(FeaturesService featuresService) {
+        this.featuresService = featuresService;
+    }
+}
diff --git a/karaf/webconsole/src/main/resources/META-INF/spring/webconsole.xml b/karaf/webconsole/src/main/resources/META-INF/spring/webconsole.xml
new file mode 100644
index 0000000..3d24aad
--- /dev/null
+++ b/karaf/webconsole/src/main/resources/META-INF/spring/webconsole.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:ctx="http://www.springframework.org/schema/context"
+       xmlns:osgi="http://www.springframework.org/schema/osgi"
+       xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:gshell="http://servicemix.apache.org/schema/servicemix-gshell"
+       xsi:schemaLocation="
+  http://www.springframework.org/schema/beans
+  http://www.springframework.org/schema/beans/spring-beans.xsd
+  http://www.springframework.org/schema/context
+  http://www.springframework.org/schema/context/spring-context.xsd
+  http://www.springframework.org/schema/osgi
+  http://www.springframework.org/schema/osgi/spring-osgi.xsd
+  http://www.springframework.org/schema/osgi-compendium
+  http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd
+  http://www.springframework.org/schema/util
+  http://www.springframework.org/schema/util/spring-util.xsd
+  http://servicemix.apache.org/schema/servicemix-gshell
+  http://servicemix.apache.org/schema/servicemix-gshell/servicemix-gshell.xsd">
+
+    <osgi:reference id="featuresService" interface="org.apache.felix.karaf.gshell.features.FeaturesService" cardinality="1..1"/>
+
+    <bean id="featuresPlugin" class="org.apache.felix.karaf.webconsole.FeaturesPlugin">
+        <property name="featuresService" ref="featuresService" />
+    </bean>
+
+    <osgi:service ref="featuresPlugin" interface="javax.servlet.Servlet" >
+        <osgi:service-properties>
+            <entry key="felix.webconsole.label" value="features"/>
+        </osgi:service-properties>
+    </osgi:service>
+
+</beans>
