diff --git a/app.js b/app.js
index 466315a..76eeb12 100644
--- a/app.js
+++ b/app.js
@@ -10,6 +10,7 @@
 var logger = require('./Logger');
 
 var ProviderUtils = require('./lib/utils.js');
+var ProviderHealth = require('./lib/health.js');
 var ProviderRAS = require('./lib/ras.js');
 var ProviderUpdate = require('./lib/update.js');
 var ProviderCreate = require('./lib/create.js');
@@ -83,8 +84,8 @@
   // no need for a promise here, but leaving code inplace until we prove out the question of cookie usage
   var promise = new Promise(function(resolve, reject) {
 
-	nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost + ':' + dbPort);
-	logger.info('url is ' +  dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost + ':' + dbPort);
+    nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
+    logger.info('url is ' +  dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
     /*
     nanop.auth(dbUsername, dbPassword, function (err, body, headers) {
       if (err) {
@@ -121,6 +122,7 @@
 
       var providerUtils = new ProviderUtils (tid, logger, app, retriesBeforeDelete, nanoDb, dbProvider, triggerFireLimit, routerHost);
       var providerRAS = new ProviderRAS (tid, logger, providerUtils);
+      var providerHealth = new ProviderHealth (tid, logger, providerUtils);
       var providerUpdate = new ProviderUpdate (tid, logger, providerUtils);
       var providerCreate = new ProviderCreate (tid, logger, providerUtils);
       var providerDelete = new ProviderDelete (tid, logger, providerUtils);
@@ -128,6 +130,9 @@
       // RAS Endpoint
       app.get(providerRAS.endPoint, providerRAS.ras);
 
+      // Health Endpoint
+      app.get(providerHealth.endPoint, providerHealth.health);
+
       // Endpoint for Update OR Create a Trigger
       app.put(providerUpdate.endPoint, providerUtils.authorize, providerUpdate.update);
 
diff --git a/lib/health.js b/lib/health.js
new file mode 100644
index 0000000..bec14ab
--- /dev/null
+++ b/lib/health.js
@@ -0,0 +1,11 @@
+module.exports = function(tid, logger, providerUtils) {
+
+  // Health Endpoint
+  this.endPoint = '/health';
+
+  // Health Logic
+  this.health = function (req, res) {
+      res.send({triggerCount: Object.keys(providerUtils.triggers).length});
+  };
+  
+}
\ No newline at end of file
