add version command
diff --git a/bin/nmo-cli.js b/bin/nmo-cli.js
index 7ef2880..c1638be 100755
--- a/bin/nmo-cli.js
+++ b/bin/nmo-cli.js
@@ -9,7 +9,7 @@
 var parsed = nopt({
   'json': [Boolean],
   'force': [Boolean]
-}, {}, process.argv, 2);
+}, {'v': 'v'}, process.argv, 2);
 
 var cmd = parsed.argv.remain.shift();
 
diff --git a/doc/api/nmo-v.md b/doc/api/nmo-v.md
new file mode 100644
index 0000000..83a75b0
--- /dev/null
+++ b/doc/api/nmo-v.md
@@ -0,0 +1,11 @@
+nmo-v(3) -- get the current nmo version
+=======================================
+
+## SYNOPSIS
+
+    nmo.commands.v()
+
+
+## DESCRIPTION
+
+Returns the current version of nmo.
diff --git a/doc/cli/nmo-v.md b/doc/cli/nmo-v.md
new file mode 100644
index 0000000..afd5605
--- /dev/null
+++ b/doc/cli/nmo-v.md
@@ -0,0 +1,12 @@
+nmo-v(1) -- get the current nmo version
+=======================================
+
+## SYNOPSIS
+
+    nmo v
+    nmo -v
+
+
+## DESCRIPTION
+
+Prints the current node and nmo version.
diff --git a/src/help.js b/src/help.js
index 9af9101..c135190 100644
--- a/src/help.js
+++ b/src/help.js
@@ -16,7 +16,8 @@
 Get help for a command:
 
 nmo help <command>
-`;
+
+nmo@${nmo.version}`;
 }
 
 export default help;
diff --git a/src/nmo.js b/src/nmo.js
index 8fcc130..874cec9 100644
--- a/src/nmo.js
+++ b/src/nmo.js
@@ -1,11 +1,13 @@
 import * as config from './config.js';
 import Promise from 'bluebird';
+import pkg from '../package.json'
 
 const commands = [
   'isonline',
   'help',
   'config',
-  'cluster'
+  'cluster',
+  'v'
 ];
 
 const nmo = {
@@ -30,6 +32,8 @@
   }
 });
 
+nmo.version = pkg.version;
+
 const commandFuncs = {}, cliFuncs = {};
 nmo.load = function load (opts) {
   return new Promise((resolve, reject) => {
diff --git a/src/v.js b/src/v.js
new file mode 100644
index 0000000..a0ca7be
--- /dev/null
+++ b/src/v.js
@@ -0,0 +1,22 @@
+import nmo from './nmo.js';
+
+
+export default version;
+function version () {
+  return new Promise((resolve, reject) => {
+    resolve({
+      nmo: nmo.version,
+      node: process.version
+    });
+  });
+}
+
+export const cli = versionCli;
+function versionCli () {
+  return new Promise((resolve, reject) => {
+    console.log(`nmo version: ${nmo.version}`);
+    console.log(`node version: ${process.version}`);
+    resolve();
+  });
+};
+
diff --git a/test/nemo.js b/test/nemo.js
index f8f25ff..fe22b17 100644
--- a/test/nemo.js
+++ b/test/nemo.js
@@ -43,4 +43,12 @@
       done();
     });
   });
+
+  lab.test('has a version property', (done) => {
+    nmo.config = null;
+    nmo.load({nmoconf: __dirname + '/fixtures/randomini'}).then(() => {
+      assert.ok(nmo.version);
+      done();
+    });
+  });
 });
diff --git a/test/v.js b/test/v.js
new file mode 100644
index 0000000..9f7b70a
--- /dev/null
+++ b/test/v.js
@@ -0,0 +1,42 @@
+import assert from 'assert';
+
+import Lab from 'lab';
+export const lab = Lab.script();
+
+import * as version from '../src/v.js';
+import versionApi from '../src/v.js';
+
+import pkg from '../package.json'
+
+const oldConsole = console.log;
+
+lab.experiment('api: version', () => {
+
+  lab.test('gets the current nmo version', (done) => {
+    versionApi().then((res) => {
+      assert.equal(pkg.version, res.nmo);
+      done();
+    });
+  });
+});
+
+lab.experiment('cli: version', () => {
+  lab.afterEach((done) => {
+    console.log = oldConsole;
+    done();
+  });
+
+  lab.test('logs the current version', (done) => {
+    console.log = (...args) => {
+      if (/nmo/.test(args[0])) {
+        assert.ok(new RegExp(pkg.version, 'ig').test(args[0]));
+      }
+    };
+
+    version
+      .cli()
+      .then(() => {
+        done();
+      });
+  });
+});