diff --git a/buildbot/status/web/baseweb.py b/buildbot/status/web/baseweb.py
index aa6630a..ae1006b 100644
--- a/buildbot/status/web/baseweb.py
+++ b/buildbot/status/web/baseweb.py
@@ -20,7 +20,7 @@ from buildbot.status.web.grid import GridStatusResource, TransposedGridStatusRes
 from buildbot.status.web.changes import ChangesResource
 from buildbot.status.web.builder import BuildersResource
 from buildbot.status.web.buildstatus import BuildStatusStatusResource 
-from buildbot.status.web.slaves import BuildSlavesResource
+from buildbot.status.web.slaves import BuildSlavesResource, SlavesResource
 from buildbot.status.web.status_json import JsonStatusResource
 from buildbot.status.web.xmlrpc import XMLRPCServer
 from buildbot.status.web.about import AboutBuildbot
@@ -76,6 +76,7 @@ class WebStatus(service.MultiService):
                                 timer, and controls to accelerate the timer.
      /buildslaves : list all BuildSlaves
      /buildslaves/SLAVENAME : describe a single BuildSlave
+     /slaves : describe which slaves are connected
      /one_line_per_build : summarize the last few builds, one line each
      /one_line_per_build/BUILDERNAME : same, but only for a single builder
      /about : describe this buildmaster (Buildbot and support library versions)
@@ -303,6 +304,7 @@ class WebStatus(service.MultiService):
         self.putChild("one_box_per_builder", Redirect("/builders"))
         self.putChild("changes", ChangesResource())
         self.putChild("buildslaves", BuildSlavesResource())
+        self.putChild("slaves", SlavesResource())
         self.putChild("buildstatus", BuildStatusStatusResource())
         #self.putChild("schedulers", SchedulersResource())
         self.putChild("one_line_per_build",
diff --git a/buildbot/status/web/slaves.py b/buildbot/status/web/slaves.py
index 6d160e1..e588f30 100644
--- a/buildbot/status/web/slaves.py
+++ b/buildbot/status/web/slaves.py
@@ -125,3 +125,40 @@ class BuildSlavesResource(HtmlResource):
             return OneBuildSlaveResource(path)
         except KeyError:
             return NoResource("No such slave '%s'" % html.escape(path))
+
+# /slaves
+class SlavesResource(HtmlResource):
+    title = "Slaves"
+    addSlash = True
+
+    def content(self, request, ctx):
+        s = self.getStatus(request)
+        slaves = ctx['slaves'] = []
+        for name in util.naturalSort(s.getSlaveNames()):
+            info = {}
+            slaves.append(info)
+            slave = s.getSlave(name)
+            slave_status = s.botmaster.slaves[name].slave_status
+            info['link'] = request.childLink(urllib.quote(name,''))
+            info['name'] = name
+            info['version'] = slave.getVersion()
+            info['connected'] = slave.isConnected()
+            
+            if slave.isConnected():
+                info['admin'] = unicode(slave.getAdmin() or '', 'utf-8')
+                last = slave.lastMessageReceived()
+                if last:
+                    info['last_heard_from_age'] = abbreviate_age(time.time() - last)
+                    info['last_heard_from_time'] = time.strftime("%Y-%b-%d %H:%M:%S",
+                                                                time.localtime(last))
+
+        template = request.site.buildbot_service.templates.get_template("slaves.html")
+        data = template.render(**ctx)
+        return data
+
+    def getChild(self, path, req):
+        try:
+            self.getStatus(req).getSlave(path)
+            return OneBuildSlaveResource(path)
+        except KeyError:
+            return NoResource("No such slave '%s'" % html.escape(path))
diff --git a/buildbot/status/web/templates/root.html b/buildbot/status/web/templates/root.html
index 4ef11ae..03a2df0 100644
--- a/buildbot/status/web/templates/root.html
+++ b/buildbot/status/web/templates/root.html
@@ -39,6 +39,7 @@
   per line.</li>
 
   <li class="{{ item_class.next() }}"><a href="buildslaves">Buildslave</a> information</li>
+  <li class="{{ item_class.next() }}"><a href="slaves">Slave</a> information</li>
   <li class="{{ item_class.next() }}"><a href="changes">Changesource</a> information.</li>
 
   <li class="{{ item_class.next() }}"><a href="about">About</a> this Buildbot</li>

