diff --git a/apps/routerconsole/jsp/debug.jsp b/apps/routerconsole/jsp/debug.jsp
index 9f39b840e4720a7b57f1da11df23f728d0675f61..90bd964eb9d3fe3626206bd3ef02f34f744c7bb4 100644
--- a/apps/routerconsole/jsp/debug.jsp
+++ b/apps/routerconsole/jsp/debug.jsp
@@ -26,6 +26,11 @@
      */
     ctx.updateManager().renderStatusHTML(out);
 
+    /*
+     *  Print out the status for the AppManager
+     */
+    ctx.clientAppManager().renderStatusHTML(out);
+
     /*
      *  Print out the status for all the SessionKeyManagers
      */
diff --git a/router/java/src/net/i2p/router/startup/RouterAppManager.java b/router/java/src/net/i2p/router/startup/RouterAppManager.java
index 8b4c841f22b2f540ae5eb9e30730dc8e08f008f7..a311fe65d0693a1c9eec067eddce1e08b2d04701 100644
--- a/router/java/src/net/i2p/router/startup/RouterAppManager.java
+++ b/router/java/src/net/i2p/router/startup/RouterAppManager.java
@@ -1,6 +1,11 @@
 package net.i2p.router.startup;
 
+import java.io.IOException;
+import java.io.Writer;
 import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -160,4 +165,52 @@ public class RouterAppManager implements ClientAppManager {
     public ClientApp getRegisteredApp(String name) {
         return _registered.get(name);
     }
+
+    /**
+     *  debug
+     *  @since 0.9.6
+     */
+    public void renderStatusHTML(Writer out) throws IOException {
+        StringBuilder buf = new StringBuilder(1024);
+        buf.append("<h2>App Manager</h2>");
+        buf.append("<h3>Tracked</h3>");
+        toString1(buf);
+        buf.append("<h3>Registered</h3>");
+        toString2(buf);
+        out.write(buf.toString());
+    }
+
+    /**
+     *  debug
+     *  @since 0.9.6
+     */
+    private void toString1(StringBuilder buf) {
+        List<String> list = new ArrayList(_clients.size());
+        for (Map.Entry<ClientApp, String[]> entry : _clients.entrySet()) {
+            ClientApp key = entry.getKey();
+            String[] val = entry.getValue();
+            list.add("[" + key.getName() + "] = [" + key.getClass().getName() + ' ' + Arrays.toString(val) + "] " + key.getState() + "<br>");
+        }
+        Collections.sort(list);
+        for (String e : list) {
+            buf.append(e);
+        }
+    }
+
+    /**
+     *  debug
+     *  @since 0.9.6
+     */
+    private void toString2(StringBuilder buf) {
+        List<String> list = new ArrayList(_registered.size());
+        for (Map.Entry<String, ClientApp> entry : _registered.entrySet()) {
+            String key = entry.getKey();
+            ClientApp val = entry.getValue();
+            list.add("[" + key + "] = [" + val.getClass().getName() + "]<br>");
+        }
+        Collections.sort(list);
+        for (String e : list) {
+            buf.append(e);
+        }
+    }
 }